แก้ปัญหา ubuntu server 14.04 เปลี่ยน eth0 เป็น em1

เรื่องมีอยู่ว่า ผมและวิศิษฐ ช่วยกันทำต้นฉบับ 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