Wie bekomme ich WLAN, um beim Booten eine Verbindung herzustellen?

30

Raspberry Pi Model B
Betriebssystem: Raspbian

Ich verwende meinen Pi ohne Kopf (derzeit über eine direkte Ethernet-Verbindung). Ich habe einen USB-WLAN-Dongle. Ich möchte das WiFi beim Booten starten und über DHCP verbinden.

http://rpi.tnet.com/project/faqs/headlessportablewifi schlägt vor, dass ich / etc / network / interfaces nicht vom Standard ändern muss :

auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

Ich habe /etc/wpa_supplicant/wpa_supplicant.conf für mein Netzwerk konfiguriert .

Wenn ich den Pi starte, verbindet sich WiFi nicht sofort. Aber wenn ich SSH rein und renne sudo ifup wlan0, verbindet sich der Pi prima.

Ist das nicht etwas, was der Pi in seinem eigenen Bootprozess tun sollte? Vermutlich könnte ich tell ein paar Punkte schreiben, um diesen Befehl auszuführen, aber ich möchte es auf die richtige Weise tun (und lernen, wie mein System funktioniert).

Ich weiß, dass ich für jedes WLAN, das ich verwenden möchte, auch eine statische IP-Adresse festlegen kann: Wie richte ich mehrere WLAN-Netzwerke ein? . Aber ich hätte lieber eine einfache Lösung, bei der ich nur ein paar Zeilen in /etc/wpa_supplicant/wpa_supplicant.conf eingeben muss , um ein neues WiFi-Netzwerk hinzuzufügen.

Was ist das Stück, das ich hier vermisse?

katriel
quelle

Antworten:

24

Die Standardkonfiguration für Raspbian / etc / network / interfaces stellt beim Booten keine Verbindung zu WiFi her. Die wichtigsten Zeilen der Interface-Manpage sind:

Zeilen, die mit dem Wort "auto" beginnen, werden verwendet, um die physischen Schnittstellen zu identifizieren, die aufgerufen werden sollen, wenn ifup mit der Option -a ausgeführt wird. (Diese Option wird von den Systemstart-Skripten verwendet.)

...

Zeilen, die mit dem Wort "auto" beginnen, werden verwendet, um die physischen Schnittstellen zu identifizieren, die aufgerufen werden sollen, wenn ifup mit der Option -a ausgeführt wird. (Diese Option wird von den Systemstart-Skripten verwendet.)

Das erste fehlende Stück war die Linie auto wlan0. Soweit ich weiß, kann es überall in der Datei gehen.

Dies funktioniert so lange, bis Sie versuchen, das System ohne angeschlossenes Ethernet-Kabel zu booten. Dann wird die WLAN-Verbindung beim Booten nicht hergestellt und muss manuell ausgelöst werden, sudo ifup wlan0indem der WLAN-Dongle ausgeführt oder abgezogen und erneut eingesetzt wird.

Das Problem wird durch den ifplugd- Daemon verursacht, der Netzwerkgeräte ein- und ausschaltet, wenn Sie sie anschließen oder entfernen. Sie können es neu konfigurieren oder einfach mit entfernen sudo apt-get purge ifplugd.

Wenn Sie ifplugd entfernt haben , sollten Sie die folgenden Zeilen zu / etc / network / interfaces hinzufügen , damit die Ethernet-Verbindung auch beim Einstecken hergestellt wird:

auto eth0
allow-hotplug eth0

Ich bin mir nicht sicher, ob die autoLeitungen unbedingt erforderlich sind oder ob Hotplug-Handles ohne ifplugd korrekt booten , aber das hat bei mir funktioniert.

Meine Arbeitsdatei lautet:

auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0
iface eth0 inet dhcp

auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
katriel
quelle
2
Hast du einen Tippfehler bei "auth eth0"? sollte es "auto eth0" sein?
Jordan Sitkin
2
eine kleine Korrektur von @katriels Beitrag: Der Dienst, der entfernt werden muss, heißt ifplugd und nicht ifupd
dh1tw
@ DH1TW und ein halbes Jahr später ... Ich werde nie wieder eines dieser Dinge aus dem Gedächtnis schreiben
katriel
Für die Aufzeichnung verwende ich wpa_supplicant, also habe ich gerade den Dienst aktiviertsudo systemctl enable wpa_supplicant.service
Daniel Argüelles
0

Ich hatte das gleiche problem Überprüfen Sie die R / W-Einstellungen Ihres /etc/network/interfaces.

Ich habe chmod 600 /etc/network/interfacesund mein Problem war weg.

Gero
quelle