Zdaję sobie sprawę, że to pytanie jest stare, ale trafiłem w ten problem i żadne z proponowanych do tej pory rozwiązań na tej stronie nie rozwiązało mojego problemu. Wydaje mi się, że sztuczka z folderem rules.d nic nie robi.
Moim rozwiązaniem było po prostu napisanie skryptu, który znajduje się w folderze init.d, aby przypisać DHCP do przewodowego portu Ethernet bez względu na nazwę. Jest to ważne, ponieważ mam kilka jednostek Raspberry Pi i wszystkie mają ten sam problem. (bardzo frustrujące)
Mój problem jest złożony, ponieważ mam folder pamięci sieciowej, który musi zostać podłączony podczas procesu rozruchu. Ponieważ interfejs się nie pojawił, to montowanie nie powiodło się, a dla mnie wszystko poszło źle.
Oto moje rozwiązanie. Mam nadzieję, że pomoże to każdemu, kto nie może dołączyć, korzystając z powyższych odpowiedzi.
Utwórz plik /etc/init.d/raspi-init-network za pomocą swojego ulubionego edytora tekstu. Lubię używać vi.
cd /etc/init.d
sudo vi raspi-init-network
To jest kod, który należy do pliku
#!/bin/sh
### BEGIN INIT INFO
# Provides: boot-identify-myself
# Required-Start: $local_fs $network
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: identify-myself
# Description: identify this computer to the main server upon
### END INIT INFO
#
# when using predictible network names for the interfaces,
# the pi doesn't seem to activate the interface correctly so
# this script will force the issue.
#
# it works by getting the interface name of the wired network
# device and using that to initialize dhcp
start()
{
interface=`ifconfig -a | grep "encap:Ethernet" | grep -oh -E "^[^ ]+"`
dhclient $interface
mount -a
}
stop()
{
: # do nothing
}
uninstall()
{
: # do nothing
}
case "$1" in
start)
start
;;
stop)
stop
;;
uninstall)
uninstall
;;
retart)
stop
start
;;
*)
echo "Usage: $0 {start|stop|restart|uninstall}"
esac
Upewnij się, że skrypt jest wykonywalny
sudo chmod 755 raspi-init-network
Aktywuj kod, aby był wykonywany podczas procesu uruchamiania, wykonując komendę update-rc.d.
sudo update-rc.d raspi-init-network defaults 90
Po tym nie miałem żadnego problemu i mogłem skopiować kod do wszystkich moich jednostek Pi z tymi samymi stałymi wynikami.
UWAGA: Jeśli nie montujesz dysków, możesz pominąć linię „mount -a”.
TWEAKS: Jeśli korzystasz z Wi-Fi, możesz zmienić linię rozpoczynającą się od „interface =” i edytować pierwszy segment „grep”. Ten pierwszy grep chwyta całą linię interfejsu, którego chcesz użyć. Drugi grep zajmuje tę linię i zwraca tylko nazwę interfejsu.