เรื่องมีอยู่ว่า ผมและวิศิษฐ ช่วยกันทำต้นฉบับ PSU12-Sritrang ใหม่เมื่อมี ubuntu 14.04 ออกมาแล้ว เดิมใช้ ubuntu 12.04 มาโดยตลอด ปัญหานี้เกิดขึ้นตั้งแต่ ubuntu เปลี่ยนเวอร์ชั่นเป็น 13.04 แล้ว คือ เมื่อ clone ไปแล้ว บูต server แล้วจะไม่เห็น eth0
เมื่อตรวจสอบด้วยคำสั่ง dmesg | grep eth0 ก็พบว่าบรรทัดที่มีข้อความว่า renamed eth0 to em1
วิศิษฐ ค้นเจอว่า หากต้องการบังคับให้ใช้แบบเก่า คือ ใช้ eth0 จะต้องแก้ไขไฟล์
/etc/default/grub ทำดังนี้
หากใช้ editor vi คล่อง ก็ใช้คำสั่งนี้
sudo vi /etc/default/grub
หากไม่คล่อง ก็ใช้ดังนี้
sudo nano /etc/default/grub
ในไฟล์ /etc/default/grub ให้หาบรรทัด
GRUB_CMDLINE_LINUX_DEFAULT=””
แก้ไขเป็น
GRUB_CMDLINE_LINUX_DEFAULT=”net.ifnames=1 biosdevname=0″
จากนั้นให้สั่งคำสั่งนี้ด้วย
sudo update-grub
เท่าที่ทดสอบผลกับเครื่องที่มีปัญหา สามารถบังคับให้ใช้ eth0 ได้ครับ ยังไม่พบว่าวิธีการนี้จะใช้ไม่ได้เมื่อมีการ update versions ของ ubuntu ยังคงต้องตรวจสอบในเวอร์ชั่นต่อไป
อัปเดตข้อมูล (17 มี.ค. 2559)
ใน ubuntu 16.04 server ผมกลับพบว่า คำสั่งนี้ใช้ไม่ได้
GRUB_CMDLINE_LINUX_DEFAULT=”net.ifnames=1 biosdevname=0″
แต่คำสั่งข้างล่างนี้ใช้ได้
GRUB_CMDLINE_LINUX_DEFAULT=”net.ifnames=0″
ทำให้ใช้ eth0 ได้
ซึ่งการกำหนดค่า net.ifnames=0 นี้นำมาจากเอกสารที่อ้างอิง [1] ข้างล่างนี้ ผมเลือกใช้ option ที่ 3
และมีคำอธิบายในเรื่องความเปลี่ยนแปลงในการใช้ชื่อ network interface name ใน [2]
Reference:
[1] http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/
[2] https://lists.ubuntu.com/archives/ubuntu-devel/2015-May/038761.html