|
●آشنایی با 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/sda ... :'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# نشریه لینوکس ایران
|