This is G o o g l e's cache of http://www.debianclub.com/node/77 as retrieved on 16 Feb 2007 13:14:36 GMT.
G o o g l e's cache is the snapshot that we took of the page as we crawled the web.
The page may have changed since that time. Click here for the current page without highlighting.
This cached page may reference images which are no longer available. Click here for the cached text only.
To link to or bookmark this page, use the following url: http://www.google.com/search?hl=en&q=cache%3Ahttp%3A%2F%2Fwww.debianclub.com%2Fnode%2F77&btnG=Search


Google is neither affiliated with the authors of this page nor responsible for its content.

User login

Links

debianclub.com
debian.org
ubuntuclub.com
blognone.com

Syndicate

Syndicate content

การตั้งชื่อ 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

อ้างอิง

ปล.ฝากเวบมาสเตอร์ช่วยจัดฟอร์แมตให้น่าอ่านด้วยครับ ถ้าเป็นไปได้ผมอยากได้ 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: udev - cdrom

ขอบคุณครับ :)

Re: การตั้งชื่อ dev ของ network card ด้วย udev

ใน ubuntu มี /etc/iftab ครับ ซึ่งใน udev/rules.d ไปเรียกใช้อีกที