آشنایی با udev(623 مجموع کلمات موجود در متن) (6795 بار مطالعه شده است) آشنایی
با udev
شاخه
dev/ در
فایل سیستم لینوکس در
فـایـل سیـستم لـیـنوکس، شـاخـهای
بـه نام dev/
وجود
دارد که در آن تمامی ابزارهای سخت افزاری
سیستم لیست شدهاند.
برای
مثال پارتیشنهای دیسک
سـخـت یــا درایـوهای CD-ROM
با
نشانی dev/hdX/
در این
شاخه وجود دارند.
حتما
هنگام استفاده از دستوری مانند mount
از
گــرههای مـوجـود در
ایـن شـاخـه بــرای اتـصال ابزارها به
فایل سیستم اسـتفاده کردهاید.
به طور
سنتی، سیستمی به نام devfs
عهده
دار ایجاد این شاخه بر روی فـایـل سیـسـتم
میبـاشـد.
devfs تـمـامی
گرههای ممکن ابزار را
بر روی شاخه dev/
ایجاد
میکند که نتیجه آن
ساختاری است حجیم و سنگین که چندان هم
منطقی به نظر نمیرسد.
udev جایگزینی
برای devfs بـه
طــور خـلاصه، udev
سیستمی
جایگزین برای سیستم قدیمی devfs
با
استفاده از sysfs
و
hotplug
میباشد.
sysfs یک
فایل سیستم جـدید برای هستههای
سری 2.6
میباشد
که توسط هسته کنترل شده و شامل ابزارهایی
است که اکنون به سیستم شـمـا مـتـصل
میبـاشـند.
udev میتواند
از این اطلاعات استفاده کرده و برعکس
devfs که
دارای یک ساختار ابزار ثابت در دایرکتوری
dev/ بود،
ورودیهای ایــن دایرکتوری
را بصورت پویا و با توجه به این اطلاعات
ایجاد نماید.
sysfs در
شاخه sys/
متصل
شده و قابل مرور میباشد:
#
mount /dev/hda5 on / type ext3 (rw,errors=remount-ro) proc
on /proc type proc (rw) sysfs on
/sys type sysfs (rw) devpts on /dev/pts type devpts
(rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) /dev/hda1
on /boot type ext3 (rw) /dev/hda6 on /home type reiserfs
(rw,usrquota,grpquota) /dev/hda8 on /data type ext3
(rw,noexec,nosuid,nodev) /dev/hdb1 on /data2 type ext3
(rw,noexec,nosuid,nodev) usbfs on /proc/bus/usb type usbfs
(rw) tmpfs on /dev type tmpfs (rw,size=10M,mode=0755)
برای مـثـال
هـنـگامی کــه کـاربـر دیـسـک usb
یا
دوربین دبجیتال usb
خود
را به سیستم متصل میکند،
گرههای sda
در
شاخه dev/
ایجاد
شده و با برداشتن آن حــذف میشــوند.
چـنـین
اتـفـاقـی در زمـان بـارگذاری ماژولی
مانند loop
نیز
در حافظه رخ میدهد و
گرههای dev/loop/
ایجاد
میشوند.
بـرعـکس سـیـستم
devfs کــه
سـاختاری حجیم و سنگین داراست، ساختار
udev بسیار
جمع و جور و کوچک میباشد.
udev تنها
گرههای ابزارهایی را
که بـر روی سیستم حاضر هستند و ماژول آنها
در حافظه بارگذاری شده است را نمایش
میدهد.
این
ویژگی باعث میشود تــا
یــک سـاخـتـار تـمیز و مرتب در dev/
داشته
باشیم.
توسعه
devfs متوقف
شده و udev
در
آینده نزدیک بطور کامل جایگزین آن خواهد
شد.
یـکـی دیـگر
از قـابـلیتهای جالب
سیستم udev
امکان
بکارگیری نامهای سفارشی
برای ابزارهای خاص در شاخه dev/
میباشد.
برای
مـثـال مـمـکن اسـت شـمـا یـک درایـو usb
و یک
دوربین دیجیتال داشته باشید که از dev/sda1/
استفاده
میکنند، میتوانید
کاری کنید که هرگاه دوربین به سیستم متصل
میشود با نام Camera
و وقتی
درایو usb
به
سیستم متصل میشود به
نام usbdrive
شناخته
شود. بـرای
ایـن کـار لازم است تــا تـعدادی قانون
(rule) به
سیستم udev
خود
اضافه کنید.
محل
تعریف این قوانین در مسیر etc/udev/udev.rules/
میباشد.
میتوانید
نام ابزاری را که به درگاه usb
متصل
کردهاید با استفاده از
دستور زیر بدست آورده:
#
udevinfo -a -p $(udevinfo -q path -n /dev/sda1) ...
looking at the device chain at
'/sys/devices/pci0000:00/0000:00:07.2/usb1/1-2': BUS="usb"
ID="1-2" DRIVER="usb"
SYSFS{bConfigurationValue}="1"
SYSFS{bDeviceClass}="00"
SYSFS{bDeviceProtocol}="00"
SYSFS{bDeviceSubClass}="00"
SYSFS{bMaxPower}="100mA"
SYSFS{bNumConfigurations}="1"
SYSFS{bNumInterfaces}=" 1" SYSFS{bcdDevice}="0100"
SYSFS{bmAttributes}="c0" SYSFS{detach_state}="0"
SYSFS{devnum}="2" SYSFS{idProduct}="0102"
SYSFS{idVendor}="07b4"
SYSFS{manufacturer}="OLYMPUS" SYSFS{maxchild}="0"
SYSFS{product}="C160,D395"
SYSFS{serial}="SW01103804 " SYSFS{speed}="12"
SYSFS{version}=" 1.10" ...
و سپس با ویرایش
فایل etc/udev/udev.rules/
خطی
مانند زیر را به آن اضافه کنید:
BUS="usb",
SYSFS{product}="C160,D395", KERNEL="sd?1",
NAME="%k", SYMLINK="camera"
از ایــن پس
دوربین شما پس از اتصال بــه سـیستم در
dev/camera/
قابل
دسترسی خواهد بود.
برای
ابـزارهای ذخـیـره ســازی داده usb
کـه
به درایوهای usb
یا usb
mass storage نیز
موسوم هستند، خط فایل etc/udev/udev.rules/
مانند
زیر خواهد بود:
BUS="usb", KERNEL="sd*", SYSFS{product}="USB 2.0 Storage Device", NAME="%k", SYMLINK="usbhd%n"
ایـن
خـط ابـزارهایی مانند dev/usbhd/،
/dev/usbhd1 و
dev/usbhd2/ را
ایجاد خواهد کــرد کــه usbhd1
و
usbhd2 قابل
اتصال (mount)
بوده
و usbhd را
نیز میتوان در ابزارهای
پارتیشنبندی مـانـنـد
cfdisk بـکـار
گـرفـت.
برای
اطلاعات کاملتر درباره نوشتن قوانین برای
سیستم udev
میتوانید
به [1]
مراجعه
کنید.
اقلام مورد
نیاز برای استفاده از udev بـرای
استفاده از udev
باید
سیستم شما مجهز به هستههای
سری 2.6
لینوکس
بوده و بستههای udev
و
hotplug نیز
بر روی سـیـستم نـصب باشند.
استفاده
از بسته hal
نیز
به عنوان یک مجموعه تکمیلی که کمک کننده
به عملکرد udev
میباشد،
توصیه میشود.
در
دبیان گنو/لینوکس
میتوانید به سادگی این
ابزارها را با استفاده از دستور زیر نصب
کنید:
#
apt-get install udev hal hotplug
آلن
باغومیان alan@technotux.com
PDF Version
[۱]
http://www.reactivated.net/writing_udev_rules.html
|