Die wirkliche (!) Lösung für dieses Problem ist folgender Befehl:
sudo sed -i.old-`date +%Y%m%d-%H%M%S` '/^auto lo$/!s/^auto /allow-hotplug /' /etc/network/interfaces
In /etc/network/interfaces
dieser ändert sich alle Schnittstellen (außer lo
) von auto
zu allow-hotplug
. Auf diese Weise wartet der Bootvorgang nicht mehr darauf, dass die Schnittstellen zuerst aufgerufen werden.
Warnung: Nach dieser Änderung bleibt eine permanent verbundene Schnittstelle nach dem Start möglicherweise so lange inaktiv, bis systemd
ein echtes Plug-Ereignis empfangen wird. Siehe Anmerkungen unten.
Beispiel vorher (siehe auto eth0
):
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
Beispiel nach (siehe allow-hotplug eth0
):
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
Anmerkungen:
Wenn Sie Netzwerkfreigaben einhängen /etc/fstab
, verwenden Sie auto
und nicht allow-hotplug
für die Schnittstelle zu den Netzwerkfreigaben. Andernfalls kann es vorkommen, dass beim Booten seltsame Dinge passieren, da das Netzwerk verfügbar sein muss, bevor die Netzwerkfreigabe aktiviert wird. allow-hotplug
gewährleistet dies nicht.
Wenn sich die Schnittstellen im auto
Modus befinden, drücken Sie Folgendes aus: "Diese Schnittstellen sind für den Start von entscheidender Bedeutung, daher müssen Sie warten , bis sie angezeigt werden, bevor Sie den Startvorgang starten ." Wenn sie nicht gestartet werden, verzögert Ubuntu den Start mit Failsafe und wartet bis zu 120 Sekunden, bis sie angezeigt werden. Und das ist das Richtige.
Im Gegensatz dazu sind Interfaces, die allow-hotplug
Ubuntu mitteilen sollen, dass sie optional sind. Daher sind sie nicht unbedingt erforderlich.
Ubuntu zeichnet auf, welche Schnittstellen zum Zeitpunkt der Installation verfügbar sind, und geht davon aus, dass sie für den späteren Betrieb wichtig sind. Dies ist eine konservative Wahl, falls die Schnittstelle später benötigt wird, da einige Dienste an sie gebunden sind, da solche Dienste nicht gestartet werden können, wenn die Schnittstelle nicht aktiv ist.
Es gibt auch eine Kernel-Einstellung, mit der Prozesse an nicht vorhandene IP-Adressen gebunden werden können. Sie können diese also jederzeit verwenden allow-hotplug
, ohne die Stabilität des Startvorgangs zu beeinträchtigen. Dies ist jedoch eine ganz andere Geschichte.
Anmerkungen (Update 2018-01-04):
An meiner Seite allow-auto
tut das gleiche wie auto
, also hilft es nicht (ausprobiert br0
).
Nachdem ich eines meiner Systeme auf Debian Stretch aktualisiert und auf SystemD gewechselt hatte, verzögerte sich der Start unerträglich, während ich darauf wartete, dass die (permanent angeschlossene) Schnittstelle angezeigt wurde br0
. Allerdings blieb mit allow-hotplug
der Schnittstelle br0
nach dem Booten . Möglicherweise liegt dies daran, dass SystemD auf einer solchen Schnittstelle kein reales oder synthetisches Plug-Ereignis empfängt. Ich habe graben nicht tiefer in diese, wie unerfindlichen crontab
Eintrag @reboot /sbin/ifup br0
für root
es für mich festgelegt. (Das funktioniert, ist aber wahrscheinlich etwas, das anderen besser nicht empfohlen werden sollte. Ich würde gerne hören, ob jemand eine bessere Idee hat.)
((Der Text endet hier, der Rest dient Ihrer Unterhaltung))
Und hier ist eine Gutenachtgeschichte, inspiriert von:
Einige Ackerbauern tobten. Ihre Ernte ist ausgetrocknet! Deshalb untersuchten sie, warum im Bewässerungsgraben nicht genug Wasser war. In der näheren Entfernung entdeckten sie sofort ihren Täter. Der Damm! Der verdammte Damm hielt das ganze Wasser hoch!
Von diesem Moment an war klar, was zu tun war. "Sprengen Sie den Damm!" schrien sie und fingen an, ihr Dynamit zu sammeln. Dann gingen sie alle direkt zum Damm.
Der kleine Sohn eines Bauern fragte seinen Vater, was los sei. Er sagte zu seinem Sohn: "Es ist nicht genug Wasser im Graben, also sprengen wir den Damm!" Dann ging er sofort, um dem Rudel zu folgen.
"Aber", versuchte der Kleine seinem Vater nachzuschreien, "aber es gibt ein Ventil! Öffne einfach das Ventil!" Leider war seine Stimme zu sanft und seine Beine zu kurz, sodass diese Nachricht niemanden erreichte.
Der Junge setzte sich und weinte. Eine halbe Stunde später hörte er den fernen "Boom", der seine Lieblingsplage am Damm zerstörte, wo sich auch das Ventil befand.
Was danach geschah?
Die Sintflut hat alle kostbaren Ernten hinweggefegt. Die Bank hat die Farm des Vaters des Jungen weggenommen. Sein Vater konnte für eine gute Schule nicht bezahlen. Also trat der Junge der Armee bei, um eine höhere Ausbildung zu erhalten. Dort lernte er alles über die Phyik von Sprengstoffen und versucht nun, einen explosionsgeschützten Damm zu erfinden.
Was hat diese Geschichte hier damit zu tun?
- Die Ackerbauern sind die anderen Antworten.
- Der kleine Junge ist diese Antwort hier.
- Die Mutter ist die Ubuntu ausfallsicher schlafen.
- Das Ventil ist die richtige Schnittstelleneinstellung.
- Das Wasser ist der Bootprozess.
- Die Ernte ist Ihr Ubuntu-Betriebssystem.
- Und der gefüllte Graben ist, wie der Bootvorgang aussehen soll.
Die Einstellung der Schnittstelle, in der gewohnt wird /etc/network/interfaces
, wird mit entferntem Sleep-in-Fail-Safe in die Luft gesprengt, und selbst wenn jemand das geschlossene Ventil ( auto
) sieht , merkt niemand, dass es auch geöffnet werden könnte!
auto lo iface lo inet loopback
funktioniert nicht