แก้ปัญหา 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