ورود/ایجاد حساب کاربری
   منوی اصلی
· خانه
· لیست کاربران
· جستجو
· آمار مشاهدات
· آرشیو مقالات


- شرح
· راهنمای نویسندگان
· درباره ما

   همکاری با نشریه
در صورتی که مایل به همکاری با نشریه هستید، می‌توانید در لیست پستی نشریه عضو شده و در جریان امور قرار گیرید. برای اطلاعات بیشتر، اینجا کلیک کنید.

   کاربران
سردبیر
هیچ مدیر کمکی حاضر
همکاران
هیچ مدیر کمکی حاضر
اعضا:
جدیدترین:جدید امروز:0
جدیدترین:جدید دیروز:0
جدیدترین:مجموع:2471
جدیدترین:جدیدترین:
ufumenarayu
اعضا:حاضر
اعضا:اعضا:0
مهمان‌ها:مهمان‌ها:17
مجموع:مجموع:17
کاربران حاضر
هیچ کاربر حاضری وجود ندارد

   ورود کاربران




 


 برای ورود مشکل دارید؟
 ثبت نام کاربران جدید

آشنایی با 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

تمامی مطالب و مقالات این سایت تحت مجوز GNU FDL قرار دارند. بنابراین کپی و ایجاد تغییر در آنها مطابق شرایط این مجوز آزاد می‌باشد.