PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : آشنایی با Udev



p2m
January 19th, 2012, 02:16
در فـایـل سیـستم لـیـنوکس، شـاخـه ای بـه نام dev/ وجود دارد که در آن تمامی ابزارهای سخت افزاری سیستم لیست شده اند.


●آشنایی با udev

شاخه dev/ در فایل سیستم لینوکس

در فـایـل سیـستم لـیـنوکس، شـاخـه ای بـه نام dev/ وجود دارد که در آن تمامی ابزارهای سخت افزاری سیستم لیست شده اند. برای مثال پارتیشن های دیسک سـخـت یــا درایـوهای CD-ROM با نشانی dev/hdX/ در این شاخه وجود دارند. حتما هنگام استفاده از دستوری مانند mount از گــره های مـوجـود در ایـن شـاخـه بــرای اتـصال ابزارها به فایل سیستم اسـتفاده کرده اید. به طور سنتی، سیستمی به نام devfs عهده دار ایجاد این شاخه بر روی فـایـل سیـسـتم می بـاشـد. devfs تـمـامی گره های ممکن ابزار را بر روی شاخه dev/ ایجاد می کند که نتیجه آن ساختاری است حجیم و سنگین که چندان هم منطقی به نظر نمی رسد.

●udev جایگزینی برای devfs

بـه طــور خـلاصه، udev سیستمی جایگزین برای سیستم قدیمی devfs با استفاده از sysfs و hotplug می باشد. sysfs یک فایل سیستم جـدید برای هسته های سری ۲.۶ می باشد که توسط هسته کنترل شده و شامل ابزارهایی است که اکنون به سیستم شـمـا مـتـصل می بـاشـند. udev می تواند از این اطلاعات استفاده کرده و برعکس devfs که دارای یک ساختار ابزار ثابت در دایرکتوری dev/ بود، ورودی های ایــن دایرکتوری را بصورت پویا و با توجه به این اطلاعات ایجاد نماید. sysfs در شاخه sys/ متصل شده و قابل مرور می باشد:

mount#


(/dev/hda۵ on / type ext۳ (rw,errors=remount-ro)

(proc on /proc type proc (rw

(sysfs on /sys type sysfs (rw

(devpts on /dev/pts type devpts (rw,gid=۵,mode=۶۲۰

(tmpfs on /dev/shm type tmpfs (rw

/dev/hda۱ on /boot type ext۳ (rw)

(/dev/hda۶ on /home type reiserfs (rw,usrquota,grpquota

(/dev/hda۸ on /data type ext۳ (rw,noexec,nosuid,nodev

(/dev/hdb۱ on /data۲ type ext۳ (rw,noexec,nosuid,nodev

(usbfs on /proc/bus/usb type usbfs (rw

(tmpfs on /dev type tmpfs (rw,size=۱۰M,mode=۰۷۵۵


برای مـثـال هـنـگامی کــه کـاربـر دیـسـک usb یا دوربین دبجیتال usb خود را به سیستم متصل می کند، گره های sda در شاخه dev/ ایجاد شده و با برداشتن آن حــذف می شــوند. چـنـین اتـفـاقـی در زمـان بـارگذاری ماژولی مانند loop نیز در حافظه رخ می دهد و گره های dev/loop/ ایجاد می شوند.

بـرعـکس سـیـستم devfs کــه سـاختاری حجیم و سنگین داراست، ساختار udev بسیار جمع و جور و کوچک می باشد. udev تنها گره های ابزارهایی را که بـر روی سیستم حاضر هستند و ماژول آنها در حافظه بارگذاری شده است را نمایش می دهد. این ویژگی باعث می شود تــا یــک سـاخـتـار تـمیز و مرتب در dev/ داشته باشیم. توسعه devfs متوقف شده و udev در آینده نزدیک بطور کامل جایگزین آن خواهد شد.

یـکـی دیـگر از قـابـلیت های جالب سیستم udev امکان بکارگیری نام های سفارشی برای ابزارهای خاص در شاخه dev/ می باشد. برای مـثـال مـمـکن اسـت شـمـا یـک درایـو usb و یک دوربین دیجیتال داشته باشید که از dev/sda۱/ استفاده می کنند، می توانید کاری کنید که هرگاه دوربین به سیستم متصل می شود با نام Camera و وقتی درایو usb به سیستم متصل می شود به نام usbdrive شناخته شود. بـرای ایـن کـار لازم است تــا تـعدادی قانون (rule) به سیستم udev خود اضافه کنید. محل تعریف این قوانین در مسیر etc/udev/udev.rules/ می باشد.

می توانید نام ابزاری را که به درگاه usb متصل کرده اید با استفاده از دستور زیر بدست آورده:


#(udevinfo -a -p $(udevinfo -q path -n /dev/sda


...

:&#۰۳۹;looking at the device chain at &#۰۳۹;/sys/devices/pci۰۰۰۰:۰۰/۰۰۰۰:۰۰:۰۷.۲/usb۱/۱-۲

"BUS="usb

"ID="۱-۲

"DRIVER="usb

"SYSFS{bConfigurationValue}="۱

"SYSFS{bDeviceClass}="۰۰

"SYSFS{bDeviceProtocol}="۰۰

"SYSFS{bDeviceSubClass}="۰۰

"SYSFS{bMaxPower}="۱۰۰mA

"SYSFS{bNumConfigurations}="۱

"SYSFS{bNumInterfaces}=" ۱

"SYSFS{bcdDevice}="۰۱۰۰

"SYSFS{bmAttributes}="c۰

"SYSFS{detach_state}="۰

"SYSFS{devnum}="۲

"SYSFS{idProduct}="۰۱۰۲

"SYSFS{idVendor}="۰۷b۴

"SYSFS{manufacturer}="OLYMPUS

"SYSFS{maxchild}="۰

"SYSFS{product}="C۱۶۰,D۳۹۵

"SYSFS{serial}="SW۰۱۱۰۳۸۰۴

"SYSFS{speed}="۱۲

"SYSFS{version}=" ۱.۱۰

...


و سپس با ویرایش فایل etc/udev/udev.rules/ خطی مانند زیر را به آن اضافه کنید:

"BUS="usb", SYSFS{product}="C۱۶۰,D۳۹۵", KERNEL="sd?۱", NAME="%k", SYMLINK="camera


از ایــن پس دوربین شما پس از اتصال بــه سـیستم در dev/camera/ قابل دسترسی خواهد بود. برای ابـزارهای ذخـیـره ســازی داده usb کـه به درایوهای usb یا usb mass storage نیز موسوم هستند، خط فایل etc/udev/udev.rules/ مانند زیر خواهد بود:

"BUS="usb", KERNEL="sd*", SYSFS{product}="USB ۲.۰ Storage Device", NAME="%k", SYMLINK="usbhd%n


ایـن خـط ابـزارهایی مانند dev/usbhd/، /dev/usbhd۱ و dev/usbhd۲/ را ایجاد خواهد کــرد کــه usbhd۱ و usbhd۲ قابل اتصال (mount) بوده و usbhd را نیز می توان در ابزارهای پارتیشن بندی مـانـنـد cfdisk بـکـار گـرفـت. برای اطلاعات کاملتر درباره نوشتن قوانین برای سیستم udev می توانید به [۱] مراجعه کنید.

●اقلام مورد نیاز برای استفاده از udev

بـرای استفاده از udev باید سیستم شما مجهز به هسته های سری ۲.۶ لینوکس بوده و بسته های udev و hotplug نیز بر روی سـیـستم نـصب باشند. استفاده از بسته hal نیز به عنوان یک مجموعه تکمیلی که کمک کننده به عملکرد udev می باشد، توصیه می شود. در دبیان گنو/لینوکس می توانید به سادگی این ابزارها را با استفاده از دستور زیر نصب کنید:

apt-get install udev hal hotplug#