A solução real (!) Para esse problema é o seguinte comando:
sudo sed -i.old-`date +%Y%m%d-%H%M%S` '/^auto lo$/!s/^auto /allow-hotplug /' /etc/network/interfaces
Nisso /etc/network/interfaces
muda todas as interfaces (exceto lo
) de auto
para allow-hotplug
. Dessa forma, a inicialização não está mais aguardando as interfaces aparecerem primeiro.
Aviso: Após essa alteração, uma interface permanentemente conectada pode permanecer inativa após a inicialização até systemd
receber um evento de plug real. Veja as notas abaixo.
Exemplo antes (veja auto eth0
):
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
Exemplo após (veja allow-hotplug eth0
):
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
Notas:
Se você montar compartilhamentos de rede /etc/fstab
, use auto
e não allow-hotplug
a interface para os compartilhamentos de rede. Caso contrário, você poderá ver coisas estranhas acontecerem no processo de inicialização, porque a rede deve estar disponível antes das montagens de compartilhamento de rede. allow-hotplug
não garante isso.
Se as interfaces estiverem no auto
modo, você expressa: "Essas interfaces são cruciais para a inicialização, portanto, devemos esperar que elas apareçam antes de inicializarmos". Portanto, se eles não aparecerem, o Ubuntu atrasará a inicialização com segurança, esperando que eles apareçam por até 120 segundos. E esta é a coisa certa a fazer.
Por outro lado, as interfaces definidas para allow-hotplug
informar ao Ubuntu que são opcionais. Portanto, eles não são essenciais para inicializar.
O Ubuntu registra quais interfaces estão disponíveis no momento da instalação e assume que elas são importantes para operações posteriores. Essa é uma opção conservadora, caso a interface seja necessária posteriormente porque algum Serviço se liga a ela, pois esses serviços falham ao iniciar se perderem a interface.
Há também uma configuração de kernel que permite que os processos se vinculem a IPs inexistentes, para que você sempre possa usar allow-hotplug
se quiser, sem prejudicar a estabilidade do processo de inicialização. No entanto, esta é uma história completamente diferente.
Notas (atualização 2018-01-04):
Ao meu lado, allow-auto
faz o mesmo que auto
, por isso não ajuda (tentei br0
).
Depois de atualizar um dos meus sistemas para o Debian Stretch e mudar para o SystemD, a inicialização ficou insuportavelmente atrasada enquanto esperava a interface (permanentemente conectada ao exterior) br0
aparecer. No entanto, com allow-hotplug
a interface br0
ficou inativa após a inicialização . Talvez isso seja causado pelo SystemD não receber nenhum evento de plug real ou sintético em tal interface. Eu não me aprofundava mais nisso, pois alguma crontab
entrada obscura @reboot /sbin/ifup br0
a root
corrigiu para mim. (Isso funciona, mas provavelmente é algo que melhor não deve ser recomendado para outras pessoas. Gostaria de saber se alguém tem alguma idéia melhor.)
((O texto termina aqui, o resto é para seu entretenimento))
E aqui está uma história de hora de dormir, inspirada por isso:
Alguns agricultores foram violentos. Suas colheitas secaram! Então eles investigaram por que não havia água suficiente na vala de irrigação. Na distância mais próxima, eles imediatamente avistaram o culpado. A barragem! A maldita represa levantou toda a água!
A partir desse momento ficou claro o que fazer. "Exploda a barragem!" eles gritaram e começaram a coletar sua dinamite. Então todos foram direto para a represa.
O filho pequeno de um dos agricultores perguntou ao pai o que estava acontecendo. Ele disse ao filho: "Não há água suficiente na vala, então explodimos a represa!" Então ele saiu imediatamente para seguir o bando.
"Mas", o pequeno tentou gritar atrás do pai: "Mas tem uma válvula! Apenas abra a válvula!" Infelizmente, sua voz era muito gentil e suas pernas eram muito curtas, então essa mensagem não chegou a ninguém.
O garoto sentou-se e chorou. Meia hora depois, ele ouviu o distante "Boom", que destruiu seu praga favorito na represa, onde também estava a válvula.
O que aconteceu depois?
O dilúvio varreu todas as colheitas preciosas. O banco levou a fazenda do pai do garoto. Seu pai não conseguiu pagar por uma boa escola. Então o garoto se juntou ao exército para obter um ensino superior. Lá, ele aprendeu tudo sobre a física dos explosivos e agora tenta inventar uma represa explosiva.
O que essa história tem a ver com isso aqui?
- Os agricultores são as outras respostas.
- O garotinho é esta resposta aqui.
- A barragem é o Ubuntu à prova de falhas para dormir.
- A válvula é a configuração de interface adequada.
- A água é o processo de inicialização.
- A colheita é o seu sistema operacional Ubuntu.
- E a vala cheia é como deve ser o processo de inicialização.
A configuração da interface, que vive /etc/network/interfaces
, é ampliada com o sono à prova de falhas removido e, mesmo que alguém veja a válvula fechada ( auto
), ninguém sabe que ela também pode ser aberta!
auto lo iface lo inet loopback
não funciona