آموزش تشخیص و پیکربندی سخت افزار در لینوکس
آموزش لینوکس LPIC1-101 – تشخیص و پیکربندی سخت افزار در لینوکس
تشخیص نوع هارد دیسک و دستگاه های کامپیوتر از روی نام فایل در زیر /dev
در زیر دایرکتوری dev/ فایل هایی وجود دارند که نماینده دستگاه های سخت افزاری هستند.
فایل های مربوط به هارد دیسک های IDE معمولاً به صورت dev/hdX/ است که در آن X یک حرف است ،
مثلاً hda و در صورتی که این دیسک پارتیشن بندی شده باشد،
مواردی همچون dev/hda1/ و dev/hda2/نیز خواهیم داشت (که مثلاً دو عدد پارتیشن بر روی این هارد دیسک پیکربندی شده است ).
در صورتی که هارد دیسک از نوع SATA باشد به صورت نشان داده می شود.
درایوهای فلش نیز به صورت dev/sdX/ نمایش داده می شوند.
CDROM و DVDROM نیز به صورت dev/scdX/ و dev/srX/ نمود پیدا می کنند.
دسته بندی دستگاه ها (Devices) از یک دیدگاه می توان دستگاه های کامپیوتری را به دو دسته تقسیم کرد :
- دستگاه های بلوکی (Block Devices) : تبادل اطلاعات میان چنین دستگاهی و سایر بخشهای کامپیوتر به صورت بلوک به بلوک است
هارد دیسک یک نمونه از این نوع دستگاه ها است.
یا مثلاً اگر بخواهید از CD ROM یک بایت بخوانید مجبور هستید که یک Block بخوانید
و سپس از آن Block خوانده شده، بایت مورد نظر شما برای شما برگردانده می شود؛
دلیل این است که اطلاعات به صورت بلوک در CDROM ذخیره شده است.
خواندن به صورت بلوکی از این دستگاه ها به دلیل نیاز به کارآیی بالاست ،
زیرا که خواندن به صورت بیت به بیت سرعت انتقال داده ها را پایین می آورد.
- دستگاه های کاراکتری (Character Devices ) : این نوع از دستگاه ها اطلاعات را به صورت حرف به حرف بر می گردانند.
به عنوان مثال کیبورد، مودم و پرینتر در این دسته قرار می گیرند.
در سمت چپ خروجی دستور (ls –l | less) در زیر دایرکتوری dev/ مجوزهای دسترسی نوشته شده است.
اولین حرف این مجوزها، معنای خاصی دارد.
پس b برای دستگاه های بلوکی و c برای دستگاه های کاراکتری است.
نمایش محتوای فایل
با فرمان cat می توان محتوای فایل را نشان داد.
به عنوان مثال برای اینکه محتویات هارد دیسک را نشان دهیم، فرمان زیر را اجرا می کنیم :
cat /dev/sda
از آنجا که خروجی ممکن است طولانی باشد و نمایش آن زمان بر شود،
بعد از اجرای دستور جهت خاتمه کار می توانید از ترکیب کلیدهای Control+C استفاده کنید.
روش دادن اسم دوّم به یک Device
یکی از روشهای انجام این کار استفاده از فرمان ln است :
:ln /dev/fd0 a
ls a: fd0
a: 4349
4349 fd
نکته کاربردی : یکی از ویژگی های خوب دایرکتوری dev این است که می توانید بفهمید آخرین باری که یک Device کار کرده چه زمانی بوده است.
به این منظور کافی است به تاریخ ایجاد فایل ها در خروجی دستور ls -alh نگاه کنید.
حالا می خواهیم ببینیم چند تا Printer داریم و پورت های آنها را ببینیم :
ls -l /dev/lp $
crw-rw—-1 root lp 6,0 aug 18 2006 jan fd0
در اینجا ما یک پرینتر داریم. ممکن است در سیستم شما پرینتر وصل باشد یا نباشد.
تعریف یک دستگاه جدید با دستور mknod
cd /dev
mknodlp1 c 6 1
name: lp1ß
type: c
major: 6
minor: 1
با دستور بالا یک پرینتر دیگر هم تعریف کردیم. البته توجه کنید که متناظر با پرینتر با نام lp1 دستگاه پرینتر وجود ندارد،
بنابراین با ارسال فایل به این Device چیزی چاپ نخواهد شد.
عدد 6 عدد major به معنی اصلی است که هسته لینوکس (Kernel) با استفاده از آن تعیین می کند که چه Device Driver را انتخاب کند و با آن کار کند.
عدد دوّم را minor می گوییم و با استفاده از آن معلوم می شود که یک Device چه مدلی دارد و همچنین کدام یک از پرینترهای متصل به کامپیوتر است.
type: c نشان دهنده نوع Device است که در اینجا با نوع دستگاه کاراکتری سر و کار داریم
پس برخی فایل ها در زیر دایرکتوری dev/ نشان دهنده دستگاه های Character یا Block هستند و بر خلاف فایل های معمولی قد و حجم ندارند،
بلکه major و minor دارند که major شماره Device است و minor تعداد دستگاه با آن نوع را مشخص می کند.
مثلاً وقتی چند تا هارد دیسک به یک کامپیوتر متصل هستند که از یک نوع Driver استفاده می کنند
برای تشخیص آنها از یکدیگر کافی است که به عدد minor مراجعه شود.
به این ترتیب با این دو عدد Device ها از هم تفکیک و شناخته می شوند.
یادتان باشد که فقط Root اجازه ساخت فایل های Device را دارد،
و در واقع به طور معمول این فایل ها را ما نمی سازیم و معمولاً این خود سیستم عامل است که بعد از متصل شدن دستگاه به کامپیوتر آن را تشخیص می دهد
و نمود فایلی آن را در زیر دایرکتوری dev/ می آورد.
بنابراین فایل های زیر دایرکتوری dev پویا هستند و خود سیستم Device هایش را شناسایی می کند.
پس در این قسمت یاد گرفتیم که فرمانی که امکان ساخت File Device را می دهد mknod است
و البته فقط کاربر Root امکان استفاده از آن را دارد. برای مشاهده صفحه راهنمای دستور mknod، دستور زیر را اجرا کنید :
man mknod
حال به عنوان Root دستور زیر را اجرا کنید :
cd /dev
su
mknod faraz b 250 44
bیعنی Block Device و شماره اول majorو شماره بعدی minor است .
البته ما اجازه ساخت نداریم چون در کامپیوتر ما برای هسته لینوکس دستگاهی با شماره major ۲۵۰ وجود ندارد، پس پیغام No Such Device را مشاهده می کنیم.
پس به جای اینکه به طورتصادفی یک عدد major بنویسیم به خروجی دستور زیر مراجعه می کنیم
و متناسب با دستگاه مورد نظرمان شماره major را انتخاب می کنیم :
cat/proc/devices
به جز c ،d ،b و – ما در سمت چپ دایرکتوری dev حرف های دیگری هم داریم مثل p به فرمان های زیر توجه کنید:
mknod faraz p
ls -l
total 8
faraz تاریخ prw-r–r–1 n. faraz lpi1 0
یک Pipe File ساختیم. Pipe File ها که معمولاً ابتدا و انتها ندارند و اطلاعات پشت سر هم نمی آید.
به طور معمول Pipe File ها خیلی کاربرد دارند و البته اطلاعات شان هم تمامی ندارد.
از جمله دستگاه هایی که به صورت Pipe File نمایش داده می شوند رطوبت سنج و رادار هستند.
علاوه بر فرمان mknod در لینوکس یک فرمان دیگر به نام MAKEDEV (با حروف بزرگ) وجود دارد
و به منظور ایجاد فایل دستگاه ها در زیر دایرکتوری dev به کار می رود
(جهت مشخص شدن آخرین وضعیت دستگاه ها و لیست کردن مجدد آنها در زیر dev/) با این فرمان، دیگر نیازی نداریم mknod را به کار ببریم.
تشخیص و پیکربندی سخت افزار در لینوکس – بررسی دایرکتوری proc/
این دایرکتوری، یک دایرکتوری خاص ساکن در حافظه و حاوی اطلاعات مختلف درباره کارهای درحال اجرا در سیستم لینوکس است.
در زیر دایرکتوری proc مجموعه ای از دایرکتوری های عددی و تعدادی فایل مرتبط با تجهیزات وجود دارد.
cd /proc
ls -l | less
دایرکتوری proc فقط به صورت Logical است و موجودیت مستقلی نیست و آیینه تمام نما از اطلاعات Kernel است.
با استفاده از داده های زیردایرکتوری proc/ می توانید ببینید که کرنل چه فایل هایی را Open کرده و چند نفر login هستند.
به محض اینکه سیستم را Down کنید دایرکتوری proc گم می شود و به محض اینکه Up کنید ساخته می شود.
در زیر این دایرکتوری به ازای هر Process یک دایرکتوری داریم. وقتی فرمان زیر را در زیر دایرکتوری proc می زنیم به ما یک عدد می دهد،
که شماره پروسس (شل) مرتبط به شما می باشد.
cd /proc
$$ echo
3864
هر کاری که انجام دهید و هر فرمانی که بزنید Admin از طریق فایل های زیر دایرکتوری proc می تواند ببیند که کجا هستید.
تعداد دایرکتوری هایی که زیر دایرکتوری proc وجود دارند ثابت نیست و پیوسته در حال تغییر است.
نکته : فرمان های who و w برای اینکه لیست کاربران Login کرده را تهیه کنند، از داده های زیر دایرکتوری proc استفاده می کنند.
البته در زیر این دایرکتوری تعدادی فایل مرتبط با تجهیزات نیز داریم. فرمان زیر را اجرا کنید :
cat cpuinfo
cpuinfo اطلاعات CPU را می دهد. ممکن است کسی از شما بپرسد که CPU این کامپیوتر از چه مجموعه دستوراتی (Instruction Set ) پشتیبانی می کند؛
برای پاسخ به این سؤال کافی است به فایل proc/cpuinfo/ مراجعه نمایید.
نکته: برای اجرای برخی از برنامه های کاربردی به خصوص در سطح سیستمی نیاز است که مجموعه دستورات خاصی توسط CPU پشتیبانی شود،
که می توانید از خروجی فرمان cat /proc/cpuinfo در این مورد استفاده کنید.
نکته : جهت دستیابی به اطلاعات دقیق تر در مورد CPU برنامه x86info را نصب کنید
(apt-get install x86info یا yum install x86info) و سپس فرمانx86info -c را اجرا نمایید.
خروجی این دستور اطلاعات بسیار دقیقی در مورد معماری پردازنده سیستم و معماری سیستمِ Cache آن را در اختیار شما می گذارد؛
این فرمان علاوه بر کاربرد در توسعه نرم افزارهای سیستمی، جهت خرید سیستم های حرفه ای و بررسی صحت اطلاعات موجود در کاتالوگ ها می تواند استفاده شود.
نکته : Bogomips (پردازش جعلی) : در پردازنده و زبان اسمبلی دستوری به نام (nop(no operation وجود دارد که فقط یک Cycle از CPU می برد،
بدون اینکه کاری بکند و فقط زمانی را از پردازنده صرف خود می کند.
مثلاً Device Driver دیسک می داند که اگر یک فرمان به دیسک بدهد
باید نیم ثانیه بعد جواب بیاید به اندازه نیم ثانیه nop را انجام می دهد تا جواب بیاید. و اگر جواب نیامد Time out می دهد.
تشخیص و پیکربندی سخت افزار در لینوکس – فایل interrupts
فایل بعدی که در زیر proc/ بررسی می کنیم interrupts است . در این فایل شماره هر interrupt و تعداد تکرار آن را می بینیم.
cat interrupts
هر مادربرد تشکیل یافته از تعدادی قطعه است که به یک بورد اصلی (یا بهتر است بگوییم یک بورد اصلی و چند بورد دیگر) وصل است .
وقتی هر کدام از قطعه ها بخواهند با بورد مادر صحبت کنند Interrupt می دهند.
همچنین دستگاه هایی هم که می خواهند با یکدیگر صحبت کنند Interrupt می دهد.
اگر فرمان vmstat -s را بزنیم در انتهای خروجی آن به ما می گوید که Context Switching چند بار انجام شده است .
Context Switching به معنای واگذاری کنترل از یک Process به Process دیگر است.
vmstat -s
وقتی در دایرکتوری proc هستیم با فرمان زیر می توانیم مشاهده کنیم که هارد دیسک ما چند قسمت شده است :
cat partitions
تشخیص و پیکربندی سخت افزار در لینوکس – دستوراتی برای بررسی سخت افزار
زیر proc تعداد زیادی دایرکتوری عددی و فایل سخت افزاری داشتیم. تعدادی فرمان داریم که اطلاعات را از proc می خوانند.
یکی از آنها فرمان dmidecode است که سخت افزار را زیر و رو می کند و اطلاعات را از زیر proc در می آورد.
dmidecode |less
در خروجی دستور بالا اطلاعات مختلفی در مورد سخت افزار را مشاهده می کنید.
یک نکته مهم در مورد UUID یا “شناساگر یکتای جهانی” این است که وقتیHard را فرمت می کنید UUID به شما می دهد.
به عنوان مثال UUID کامپیوتر کلاس عدد ۳۲رقمی هگزا 8.4.4.4.12 است.
برای اینکه این عدد یکتا باشد و تکراری نبا شد، اوّل Mac Address کارت شبکه کامپیوتر را می گیرد
و بعد از روی آن UUID را می سازد. اگر کامپیوتر شما کارت شبکه نداشته باشد cupid را می گیرد.
در صورتی که خودتان خواستید UUID بسازید می توانید از فرمان زیر استفاده کنید:
uuidgen
پس یادتان باشد اگر خواستید Laptop بخرید چند فرمان را به یاد داشته باشید
و CD Live لینوکس را ببرید و اطلاعات سخت افزاری آن را بررسی کنید.
علاوه بر فرمان dmidecode فرمان lshw نیز اطلاعات مهمی در مورد سخت افزار سیستم می دهد.
برای مثال مشخصات کامل مادر بورد و باطری و موارد دیگر را در خروجی این دستورات می بینید.
هرچند خروجی دستور dmidecode بسیار مفصل است ، در برخی مواقع، هر چند نادر، اطلاعات نادرستی را به نمایش می گذارد.
تشخیص و پیکربندی سخت افزار در لینوکس – نویسنده : موسی رشوند
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.