ฉันรู้ว่าคำถามนี้เก่า แต่ฉันประสบปัญหานี้แล้วและยังไม่มีวิธีแก้ปัญหาที่เสนอในหน้านี้ที่แก้ไขปัญหาของฉันได้ สำหรับฉันเคล็ดลับโฟลเดอร์ rules.d ดูเหมือนจะไม่ทำอะไรเลย
โซลูชันของฉันคือเพียงเขียนสคริปต์ที่ไปในโฟลเดอร์ init.d เพื่อกำหนด DHCP ไปยังพอร์ตอีเธอร์เน็ตแบบผ่านสายโดยไม่คำนึงถึงชื่อ นี่เป็นสิ่งสำคัญเพราะฉันมีหน่วย Raspberry Pi หลายหน่วยและพวกเขาทั้งหมดลงมาด้วยปัญหาเดียวกันนี้ (น่าผิดหวังมาก)
ปัญหาของฉันถูกประสมเนื่องจากฉันมีโฟลเดอร์ที่เก็บข้อมูลเครือข่ายที่ต้องต่อเชื่อมระหว่างกระบวนการบู๊ต เนื่องจากอินเทอร์เฟซไม่มาอัพเมาต์นี้จึงล้มเหลวและสิ่งต่าง ๆ ก็แย่ลงเรื่อย ๆ สำหรับฉัน
นี่คือทางออกของฉัน ฉันหวังว่านี่จะช่วยให้คนอื่นที่ไม่สามารถเข้าร่วมได้โดยใช้คำตอบข้างต้น
สร้างไฟล์ /etc/init.d/raspi-init-network โดยใช้โปรแกรมแก้ไขข้อความที่คุณชื่นชอบ ฉันชอบที่จะใช้ vi
cd /etc/init.d
sudo vi raspi-init-network
นี่คือรหัสที่อยู่ในไฟล์
#!/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
ตรวจสอบให้แน่ใจว่าสคริปต์นั้นทำงานได้
sudo chmod 755 raspi-init-network
เปิดใช้งานรหัสเพื่อที่จะดำเนินการในระหว่างกระบวนการบูตโดยดำเนินการคำสั่ง update-rc.d
sudo update-rc.d raspi-init-network defaults 90
หลังจากนี้ฉันไม่ได้มีปัญหาเดียวและฉันสามารถคัดลอกรหัสไปยังหน่วย Pi ของฉันทั้งหมดด้วยผลลัพธ์ที่คงที่เหมือนกัน
หมายเหตุ: หากคุณไม่ได้ติดตั้งไดรฟ์คุณสามารถออกจากบรรทัด "mount -a"
TWEAKS: หากคุณใช้ wifi คุณสามารถเปลี่ยนบรรทัดที่เริ่มต้น "interface =" และแก้ไขเซ็กเมนต์ "grep" แรก grep แรกนี้คว้าทั้งบรรทัดของอินเตอร์เฟสที่คุณต้องการใช้ grep ตัวที่สองรับบรรทัดนั้นและส่งคืนชื่ออินเตอร์เฟสเท่านั้น