۳.۱ استخراج و پیکربندی تنظیمات سخت افزار
هدف اول: تعیین و پیکربندی تنظیمات سخت افزار
راه اندازی یک کامپیوتر (PC) برای لینوکس (و یا هر سیستم عامل دیگر) نیاز به آشنایی با تجهیزات نصب شده در سیستم و پیکربندی آن هامی باشد. موارد که باید با آنها آشنا باشید شامل مودم، پورت های سریال و موازی، آداپتورهای شبکه، آداپتورهای SCSI، هارد درایو ها، کنترل کننده USB و کارت صدا می باشد. بسیاری از این دستگاه ها، به خصوص دستگاه های قدیمی تر ،نیاز به پیکربندی دستی دارد تا از تداخل در اختصاص منابع (resource conflicting) جلوگیری شود. بقیه پیکربندی ها توسط firmwareهای کامپیوتر یا BIOS انجام می شود.
BIOS¶
فیرم ور موجود در سیستم (معمولا به آن BIOS می گویند) مسئول است تا سخت افزار را برای بوت آماده کند.در سیستمهای مختلف این کار متفاوت است، اما این کار معمولا شامل مقدار دهی اولیه (initalization)،تست حافظه و دیگر تجهیزات، و در نهایت پیدا کردن سیستم عامل از بین تجهیزات حافظه است.به علاوه BIOS یه رابط سطح-پایین پیکربندی سیستم را فراهم می کند، که به کاربر اجازه انتخاب گزینه هایی مانند تجهیز بوت (boot device) و غیره را می دهد.فروشندگان نسخههای سفارشی BIOS را برای محصولات مختلف خود ارائه میدهند که با توجه به ساختار سیستم با یکدیگر متفاوتاند.در زمان بوت اکثر کامپیوترهای شخصی روش وارد شدن به ابزار پیکربندی BIOS را نشان میدهند،این کار معمولا با فشردن کلید خاصی انجام می شود.
تاریخ و زمان¶
یکی از کار های اصلی BIOS مدیریت ساعت سختافزاری است.در ابتدا زمان و تاریخ از طریق بخش های مربوطه در BIOS تنظیم می شود.بعد از یک بار تنظیم،ساعت داخلی زمان را نگهداری می کند و آن را در اختیار سیستم عامل قرار می دهد.
دیسک ها و تجهیزات بوت¶
یکی از موارد اصلی جهت پیکربندی در BIOS، مشخص کردن تجهیزات ذخیره سازی است.سیستم های جدید توانایی شناسایی و پیکربندی بیشتر این سختافزار ها را دارند.به هر حال BIOS های قدیمی نیاز به پیکربندی دستی در این موارد پیدا می کنند.
استفاده از پوشه proc:¶
این پوشه حاوی اطلاعات مفیدی در مورد پروسه ها و اطلاعات سیستمی می باشد.در واقع محل نگهدار وضعیت هسته یا کرنل است که از ساختمان داده ی کرنل استفاده کرده تا اطلاعاتی راجع به سیستم استخراج کند.همچنین می توان به منابعی که توسط سخت افزارها استفاده می شود نیز دسترسی پیدا کرد.از جمله ioport،DMA،interrupt ها. برای مثال فایل proc/interrupts/ حاوی اطلاعاتی در مورد وقفه های سیستمی است و با استفاده از دستور cat به راحتی میتوان این اطلاعات را مشاهده کرد
# cat /proc/interrupts
USB¶
USB یا Universal Serial Bus یک نوع رابط برای اتصال دستگاه های جانبی مانند کیبورد ، موس ،پرینتر و ... است
همبندی USB¶
تجهیزات USB با یک ساختار درختی توسط تعدادی تجهیز hub به سیستم متصل می شوند
با کمک دستور lsusb می توان ابزارهای متصل از طریق پورت usb را نشان داد.در صورتی که از گزینه ی -t با این دستور استفاده شود خروجی به صورت یک نمودار درختی مشاهده می شود:
$ lsusb –t
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
|_port 2: Dev 2, Class=HID, Driver=usbhid, 1.5M
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
کنترلر های USB¶
برای هر usb سه نوع کنترل وجود دارد که به شرح زیر می باشد:
کنترلر OHCI یا Open Host Controller Interface : نسخه USB 1.1 – حداکثر 12Mbps
کنترلر UHCI یا Universal Host Controller Interface : نسخه USB 1.1 – حداکثر 12Mbps
کنترلر EHCI یا Enhanced Host Controller Interface : نسخه USB 2.0 – حداکثر 480Mbps
کنترلر XHCI یا eXtensible Host Controller Interface: نسخه USB 3.0 – حداکثر 5000Mbps
تجهیزات USB¶
تجهیزات USB به چندین دسته (class) شامل دسته های زیر تقسیم میشوند :
تجهیزات رابط انسان (HID : Human Iterface Device)
- موس ،کیبورد
تجهیزات ارتباطی مانند مودم (Communications device)
- مودم ها
رسانه های ذخیره سازی (mass stronge device)
- فلش خوان ها
صدا (Audio)
- تجهیزات صدا
IrDA
- تجهیزات مادون قرمز
پرینتر
- پرینترها یا کابل های USB-to-parallel
درایور های USB¶
پشتیبانی از USB در سری 2.3.x به کرنل لبنوکس اضافه شد . بعد از آن همه بخش ها به غیر از پشتیبانی از دستگاه های ذخیره سازی انبوه USB (به علت تغییرات SCSI در 2.3.x) به لینوکس 2.2.x backport شد . back-port در انتشار نسخه 2.2.18 گنجانده شد .
برای تست کردن ماژول های usb از دستور زیر استفاده میشود:
$ cat /proc/modules | grep hci
uhci_hcd 16057 0 – Live 0xf7dbe000
ehci_hcd 28693 0 – Live 0xf7dlc000
usbcore 98969 4 usbhid,uhci_hcd,ehci_hcd, Live 0xf7c4c000
گزارش گیری از سختافزار¶
قبل اقدام به اضافه کردن تجهیزات جدید به سیستم،بهتر است اطلاعاتی در مورد تجهیزات نصب شده بدست بیاورید.در ادامه بعضی از دستورات کاربردی در این زمینه معرفی شده است
lspci¶
برای مشخص شدن تجهیزاتی که به درگاه pci متصل شده اند از این دستور استفاده می شود که در واقع جزئیات بیشتری از سخت افزارها را نشان می دهد.مانند ماژول هایی که برای آنها استفاده می شود.این دستور با دو گزینه –v و –vv قابل استفاده است.
lsmod¶
این دستور کلیه ماژول های کرنل را که لود شده اند نشان می دهد که خروجی آن چیزی شبیه به زیر است:
در ستون اول اسم ماژول، در ستون دوم حجم و ستون سوم دفعات استفاده از ماژول را نشان می دهد.ستون چهارم شامل ماژول های وابسته می باشد.
برای مثال در تصویر بالا ماژول vfat به fat وابسته است
راه دیگر پیدا کردن این ماژول ها استفاده از خروجی /proc/modules است.
دستکاری کردن ماژولها¶
insmod¶
با کمک این دستور می توان یک ماژول از کرنل را بارگذاری کرد.بهتر است قبل از آن از وجود ماژول مطمئن شد.این کار را می توان با جست و جوی ماژول در مسیر زیر انجام داد :
/lib/modules/kernel_version/kernel/
مثال:
# find /lib/modules/3.2.0-4-amd64/ -iname *vfat*
/lib/modules/3.2.0-4-amd64/kernel/fs/fat/vfat.ko
در این مثال نشان داده شده است که ماژول msdos به ماژول fat وابسته است پس اول باید ماژول fat بارگذاری شود:
# insmod /lib/modules/3.2.0-4-amd64/kernel/fs/fat/msdos.ko
# insmod /lib/modules/3.2.0-4-amd64/kernel/fs/fat/msdos.ko
rmmod¶
این دستور برای حذف ماژول ها استفاده می شود که در صورت وجود وابستگی برای هر ماژول باید آن را به صورت مجزا حذف کرد.
مثال:
# rmmod fat
rmmod: fat is in use
# rmmod msdos
# rmmod fat
modprobe¶
این دستور مشابه دستورات insmod و rmmod است با این تفاوت که امکانات بیشتری دارد ازجمله اینکه هنگام بارگذاری وابستگی ها را مدیریت می کند.این دستور را می توان با گزینه های زیر استفاده کرد:
-a: همه مازول ها را بارگذاری می کند و بیشتر با –t استفاده می شود.
-c: پیکربندی ماژول را نمایش می دهد. /etc/modules.conf یا /etc/modprobe.d
-l: لیست تمامی ماژول ها را نمایش می دهد.
-r: ماژول را حذف می کند.
-s: خروجی را به syslog می فرستد.
-t moduletype: پوشه ی ماژول ها را مشخص می کند.
-v: حالت verbose
مسیر قرارگیری ماژول ها¶
کلیه ی ماژول ها در مسیر زیر قرار دارند:
/lib/modules/kernel_version/kernel/
از نام هر پوشه در این شاخه می توان به همراه گزینه ی –t در دستور modprobe استفاده کرد.
مثال:
# ls /lib/modules/2.6.32-5-686-bigmem/kernel/arch/x86
crypto/ kernel/ kvm/ oprofile/
modinfo¶
برای مشاهده ی مشخصات، پارامترهای قابل پیکربندی و وابستگی های ماژول از این دستور استفاده می شود:
این دستور را می توان با گزینه های زیر می توان استفاده کرد:
-f:مشخصات نویسنده ماژول
-d مورد کارکرد ماژول
-p: پارامترهای قابل تنظیم ماژول
مثال:
# modinfo msdos
# modinfo –p psmouse
تنظیم پارامترهای یک ماژول¶
برای بارگذاری(load) یک ماژول و پارامترهای آن به صورت زیر عمل می شود:
# modprobe psmouse protp=imps
برای دائمی کردن این تنظیمات ابتدا پوشه ی /etc/modprob.d را ساخته و مقدار زیر در یک فایل با پسوند conf. در آن وارد می شود:
Option psmouse proto=imps
بارگذاری خودکار ماژولها¶
برای اینکه ماژولهایی که به صورت خودکار بارگذاری (load) نمی شوند در زمان بوت شدن سیستم بارگذاری شوند باید آنها را به فایل etc/modules/ اضافه کرد.
باید توجه داشت که هر ماژول را باید در یک خط وارد کرد.
/etc/modules :
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.
vfat
msdos
loop
بخشهایی از این فصل از کتاب بر گرفته از منابع زیر است :
LPI Linux Certification in a Nutshell, 3rd Edition