پیداکردن سخت افزارها در linux


خب بالاخره قراره به صورت واقعی و برنامه ریزی شده آزمون 101 رو باهم شروع کنیم و خط به خط پیش بریم ... من علی حاتمی هستم و این مقالات به صورت کاملا روان ٬ به زبان شیرین فارسی و البته رایگان خدمت شما عزیزان ارائه خواهد شد . خواهشمندیم همراه ما باشید و نکته به نکته مطالب رو هم با دقت یاد بگیرید .

البته یادتون نره که یادگیری linux مثل زبان انگلیسی هستش ٬‌یعنی فراره ! زود به زود شاید یادتون بره برای همین هرچند وقت یه بار یه تمرین داشته باشید تا ملکه ی ذهنتون باشه ...


در بخش اول از امتحان 101 لینوکس LPIC تقریب ۲ سوال گنجونده شده که خیلی ساده است ! البته ازون جهت ساده است که معما برای من حل شده است و معما چو حل گردد آسان شود !

ازین بخش شما راحت میتونید ۲ نمره اش رو کسب کنید و البته مقدمه ای باشه برای بخش های بعدی شما . 


مباحث و متدهای بخش اول LPIC 101

  1. HAL
  2. dbus
  3. udev
  4. sys/
  5. proc/
  6. lsmod
  7. lsusb
دایرکتوری های Udev DBUS Kernel

HAL چیست ؟!

Hardware Abstraction Layer همان HAL است که نامی یکسان برای تمامی سخت افزارها از یک نوع روی تمامی توزیع های لینوکس در نظر میگیرد. به طور مثال در اکثر توزیع های لینوکس ماژول اول شبکه شما eth0 نام دارد و این نام گذاری توسط hal انجام میگردد.

هدف اصلی HAL این است که سخت افزارهای مختلف با کارایی های مختلف و معماری های مختلف به صورت یک سیستم یکپارچه برای سیستم عامل به نمایش گذاشته شوند. HAL به این دلیل در سیستم عامل ها قرار گرفته است برای اینکه دیگر نیازی نباشد برای اینکه یک نرم افزار بتواند از یک سخت افزار استفاده کند لازم باشد در Kernel سیستم عامل دستکاری شود ، شما با HAL دیگر درگیری های سخت افزاری و معماری های مختلف سخت افزاری و هماهنگ کردن آنها با سیستم عامل و نرم افزارهایتان را نخواهید داشت. HAL قابلیت های زیر را به شما می تواند ارائه بدهد : 

  1. امکان استفاده حداکثری از کارایی منابع سخت افزاری
  2. امکان کار کردن نرم افزارها فارق از معماری موجود در سخت افزارهای مختلف
  3. امکان مستقل کردن نرم افزارها از سخت افزارها و از بردن وابستگی های آنها
  4. امکان دسترسی مستقیم درایورها به سخت افزارها
  5. ایجاد کردن امکانات توسعه نرم افزارهای قابل حمل یا portable

دیگه واقعا از این ساده تر نمیشد توضیح داد


dbus چیست ؟!

همینطور که از اسمش مشخصه dBUS مثل یک اتوبوسه ! که وظیفه ی اطلاع رسانی رو داره ٬‌یعنی چی ؟! یعنی وقتی فلان دیوایس رو متصل کردید به نرم افزار میگه که فلان مثلا کیبورد به دستگاه متصل شد میتونی ازش استفاده کنی ...
کاربرد dbus چی هست ؟ برای اینکه پاسخ این سئوال رو پیدا کنید از خودتون یک سئوال بپرسید ، آیا همه نرم افزارها از جمله سیستم عامل و application های کاربردی سیستم باید مستقیما با دایرکتوری های dev یا proc یا sys کار کنن ؟ طبیعتا خیر نیازی نیست ، این بین ما میایم یک واسط قرار میدیم که نقش دلال رو داره و واسطه بین همه این مجموعه ها و نرم افزارها هست ، الان فرض کنید که یک سخت افزار به سیستم شما اضافه میشه و شما از یک دسکتاپ به نام KDE استفاده می کنید ، این dbuss هست که میره اطلاعات مربوط به سخت افزار رو از لایه های پایین دریافت می کنه و سیگنال اینکار رو به سمت Desktop Managerr میفرسته و شما از محیط گرافیکی متوجه میشید که خوب یک سخت افزار جدید به سیستم اضافه شده یا حذف شده ، هر موقع اسم dbus رو شنیدید دقیقا یاد یک اتوبوس بیوفتید که قرار هست مسافرانش رو به مقصد برسونه و به محل کار مسافراش هم میگه کاری نداشته باشید مسافراتون از کجا میان شما باهاشون کار داشتید من آوردمشون ، کاری نداشته باشید هم می برمشون .

dev یا udev چیست ؟!

یودو یه قانون گذار به تمام معناست ٬ چیزی که وظیفه ی قانون گذاری روی دستگاه های سخت افزاری رو داره . مثلا شما یک فلش به دستگاه وصل کردی با udev میتونی بهش دستور بدی که هر وقت مثلا این فلش وصل شد فایل های درایو D رو فقط عکس هاش رو کپی کن داخل همین فلش مخصوص ! خیلی هم باحاله !

دایرکتوری sys یا sysfs چی هست ؟!

یک دایرکتوری که اطلاعات HAL رو ذخیره میکنه و HAL وظیفه کنترل کردن sys رو داره . مثلا شما میخوایید یک آمار از سیستمتون بگیرید ببینید چه سخت افزارهایی متصل هستش میتونید با دستور sys کل سخت افزارهای بخش های مختلفی که متصل هستند رو دربیارید . sysfs هم در حقیقت مخفف sys file system هستش که کاربرد نداره و همون از sys باید استفاده بشه .


دایرکتوری Proc یا procfs در لینوکس چیست ؟!

مکانی برای ذخیره اطلاعات پردازنده ها هست و شما با استفاده از دایرکتوری proc میتونید اطلاعات پردازنده هاتون رو داشته باشید .
البته این مفهوم خیلی خیلی قدیمی هست و برمیگرده به سالهای 1990 و همون حدودها بنابراین یه مقدار دیدتون رو قدیمیتر کنید ، خوب در اون وهله زمانی ما مجبور بودیم دونه دونه پردازش ها یا Process های سیستم رو مدیریت کنیم ، خوب قبل از اینکه ادامه بدیم یک یادآوری هم بکنیم ، همه چیز در سیستم عامل لینوکس و خانواده یونیکس در قالب فایل هست و procfs هم همین هست یعنی یک فایل هست که داخلش مدیریت پردازش های CPU ما انجام میشه ، وقتی یک دستگاه یه سیستم ما متصل میشه داخل این فایل محتوایی قرار می گیره که باعث میشه ما بتونیم پردازش های مربوط به اون سخت افزار رو انجام بدیم ، خوب با توجه به حرف خودمون که همه چیز در قالب فایل ذخیره میشه بنابراین محتویات sysfs هم باید داخل یک فایل و یک فولدر قرار بگیرند که این محتویات در دایرکتوری به نام proc/ در سیستم عامل لینوکس وجود داره ، توجه کنید که proc/ یک فایل سیستم هست . 

lsmod (ال اس مود )‌ چیست ؟!

ls مخفف list size و بخش بعدی mod مخفف ماژول module هستش . یعنی لیست ماژول های که کرنل (هسته لینوکس) لود کرده است .
برای حذف کردن Drive Kernel Modulee ها ما می توانیم به راحتی با لیست کردن ماژول های کرنل با دستور lsmod و مشاهده نام آن ماژول و در نهایت وارد کردن دستور rmmod آن ماژول را حذف کنیم ، اما چگونه می توانیم آن را نصب کنیم ؟ برای نصب کردن Drive Kernel Module ما از دو دستور insmod و modprobe استفاده می کنیم ، اما مهمترین نکته تفاوت بین این دو دستور است ، زمانیکه صحبت از insmod می شود فقط و فقط درایورهایی نصب می شوند که چند فایل وابسته ندارند ، یعنی در اصطلاح فایل شما دارای Dependency نیست ، در چنین حالتی دستور insmod کار می کند ، اما در بسیاری از موارد ما هیچوقت از چنین دستوری استفاده نمی کنیم زیرا فاقد کارایی می باشد و اکثر درایورهای ما امروزه دارای وابستگی یا Dependency هستند ، برای اینکه در سیستم بصورت خودکار این وابستگی ها یا Dependency ها نصب شوند ما از دستور modprobe استفاده می کنیم .

lsusb در لینوکس

مخفف ال اس را که میدانیم usb هم که همه با آن آشنا هستیم ! خب حله الان ؟! LSUSB راهیست برای لیست کردن usb های متصل به سیستم در لینوکس ...



امیدوارم این توضیحات مثمرثمر باشه براتون و بتونید استفاده مفیدی ازش ببرید . اگر علاقه به زیرصفر داشتید میتونید با اشتراک گذاشتن و درج نظراتتون به ما انرژی مثبت بدید تا بلکه ماهم از زیرصفر فشار فکری راحت بشیم و با دیدن پشتیبانی های شما شارژ شیم . 
باشد که رستگار شوید :)
ارادتمند علی حاتمی