การตั้งชื่อ dev ของ network card ด้วย udev
พอ ดีผมไปเจอปัญหาอย่างหนึ่งเกี่ยวกับการ์ดแลนที่ติดตั้งเพิ่มลงไปแล้วมันทำให้ ลำดับของการ์ดแลนในเครื่องมีการสลับตำแหน่งไปหมดเลย การ์ดแลน on-board เดิมที่เคยเป็น eth0 พอเพิ่มการ์ดใหม่เข้าไป การ์ดอันใหม่กลับกลายเป็น eth0 แล้วการ์ดแลน on-board กลับกลายเป็น eth1 ทำให้มีผลต่อคอนฟิกเดิมที่ติดตั้งอยู่แล้ว
การแก้ปัญหาแบบซื่อๆ ง่ายๆ ก็คือ หาว่า eth0 eth1 มันกลายเป็นการ์ดแลนตัวไหนแล้วก็โยกสายแลนให้มันตรง แต่กลับกลายว่ามันมีปัญหาก็ยังคงมีอยู่ก็คือว่า ถ้าเพิ่มการ์ดใหม่เข้าไปหรือถอดออกก็ทำให้ลำดับมีการเปลี่ยนไปอีกอยู่ดี ก็เลยลองหาว่ามีวิธีไหนที่จะ fix การ์ดเหล่านี้ไม่ให้มีการเปลี่ยนไปเปลี่ยนมา ซึ่งมันก็มีหลายวิธีด้วยกันแต่เท่าที่ลองการใช้ udev นี่น่าจะดีที่สุด
udev คืออะไร?
udev เป็น daemon ที่ใช้สำหรับจัดการเกี่ยวกับอุปกรณ์ฮาร์ดแวร์แบบ dynamic โดยเฉพาะอุปกรณ์จำพวก hotplug ซึ่ง udev ก็จะใช้ได้กับ kernel version 2.6.12 เป็นต้นไป ผมได้ทดลองทำใน etch แล้วก็ใช้งานได้ดี ส่วนใน sarge ยังไม่เคยลอง
ติดตั้ง
ขั้นแรกต้องแน่ใจก่อนว่าเราได้ติดตั้งและใช้ linux 2.6 อยู่แล้ว ต่อไปก็ทำการติดตั้ง udev ก่อนแต่ถ้าลงไว้แล้วก็ไปหัวข้อถัดไปเลย
# aptitude update # aptitude install udev
การคอนฟิก
ก่อนอื่นก็สร้างไฟล์ /etc/udev/rules.d/010_netinterfaces.rules โดยรูปแบบในไฟล์นี้เป็นดังนี้
KERNEL="eth*", SYSFS{address}=="MAC_Address", NAME="ชื่อของinterface"
โดย MAC Address ต้องเป็นตัวอักษรพิมพ์เล็ก และชื่อ interface ต้องไม่มีเว้นวรรค ตัวอย่างเช่น
KERNEL=="eth*",SYSFS{address}=="00:16:35:5c:49:e0", NAME="eth0"
KERNEL=="eth*",SYSFS{address}=="00:00:20:c0:61:b8", NAME="eth1"
หรือ
KERNEL=="eth*",SYSFS{address}=="00:16:35:5c:49:e0", NAME="eth0-ext"
KERNEL=="eth*",SYSFS{address}=="00:00:20:c0:61:b8", NAME="eth1-int"
หลังจากนั้นก็บูตเครื่องใหม่เราก็จะได้ตามที่เรา fix เอาไว้แล้วก็ทดลอง
# ifconfig eth0
หรือ
# ifconfig eth0-ext
ทีนี้เราก็จะได้ชื่อ interface ตามที่เราต้องการ ต่อไปก็คอนฟิกค่า network ที่ /etc/network/interfaces ได้เลย
สรุป
วิธีการนี้ค่อนข้างยืดหยุ่นและมีความแน่นอนที่สุดเท่าที่เคยทดลองมา ซึ่งนอกจากเราจะใช้กับการ์ดแลนแล้วก็สามารถใช้ได้กับฮาร์ดแวร์อื่นๆ ได้เช่น ต้องการให้ flash drive มีเป็น /dev/mydisk แทนที่จะเป็น /dev/sda
อ้างอิง
- udev Configuration in debian
- Rename Network Interface using udev in Debian
- Card Readers and USB keys using udev
ปล.ฝากเวบมาสเตอร์ช่วยจัดฟอร์แมตให้น่าอ่านด้วยครับ ถ้าเป็นไปได้ผมอยากได้ tinymce นะ
Re: การตั้งชื่อ dev ของ network card ด้วย udev
udev
>= 0.090-2 มี persistent net rules มาให้อยู่แล้วนะครับ อยู่ที่
/etc/udev/rules.d/z45_persistent-net-generator.rules ซึ่งจะสร้าง
/etc/udev/rules.d/z25_persistent-net.rules
จากการตรวจสอบฮาร์ดแวร์ครั้งแรกโดยอัตโนมัติ ทำให้ตัดปัญหาชื่อ interface
เปลี่ยนไปมาเนื่องจากลำดับการ detect hardware
ที่เปลี่ยนไปในการบูตแต่ละครั้งได้ ส่วนถ้ามีการเพิ่มการ์ด LAN
ก็อาจจะไปแก้ที่ persistent-net.rules ที่ว่านี่เอาก็ได้
Re: การตั้งชื่อ dev ของ network card ด้วย udev
ใช่
จริงๆด้วย แก้ที่ /etc/udev/rules.d/z25_persistent-net.rules
ดีกว่า...พอดีเครื่องที่ทำยัง udev 0.089-1 เลยมีปัญหาเรื่องลำดับของ LAN
อย่างงี้ใครใช้ udev ล่าสุดก็ไม่มีปัญหาเรื่องลำดับแล้วละ...แต่จะมีประโยชน์เผื่อใครจะเปลี่ยนลำดับหรือชื่อของ LAN ineterface
udev - cdrom
รบกวนถามเพิ่มว่า ถ้าต้องการตั้งให้ cdrom เมานต์แบบ utf8
ควรไปตั้งที่ /etc/fstab หรือ udev ครับ
ถ้าตั้งที่ udev จะต้องปรับตั้งที่ไฟล์ไหนครับ
Re: udev - cdrom
การ mount ระบบไฟล์ต้องไปแก้ที่ /etc/fstab ครับ...ส่วน udev ใช้คอนฟิกตัว device
Re: การตั้งชื่อ dev ของ network card ด้วย udev
ใน ubuntu มี /etc/iftab ครับ ซึ่งใน udev/rules.d ไปเรียกใช้อีกที









Recent comments
2 days 10 hours ago
3 days 2 hours ago
1 week 5 days ago
2 weeks 6 days ago
3 weeks 6 days ago
4 weeks 10 hours ago
4 weeks 1 day ago
4 weeks 1 day ago
4 weeks 1 day ago
4 weeks 4 days ago