راهکار حل مشکلات عدم شناسایی سخت‌افزارها و بوت نشدن سیستم
چگونه مشکلات رایج سیستم‌عامل لینوکس را شناسایی و برطرف کنیم
یک سیستم کامپیوتری مجموعه‌ای پیچیده‌ از مولفه‌های نرم‌افزاری و سخت‌افزاری است که تعامل مستقیمی با یکدیگر دارند. در هر سیستم‌عاملی، نرم‌افزار یا سخت‌افزاری ممکن است دچار مشکل شود یا از همان ابتدای کار با نقایصی همراه باشد. سیستم‌عامل لینوکس و توزیع‌های مختلف لینوکسی از این قائده مستثنا نیستند. بدون شک در یک یا چند مقاله نمی‌توان برای تمامی مشکلات راه‌حل‌هایی ارائه کرد، اما در این مقاله قصد داریم راهکار رفع برخی از رایج‌ترین مشکلات کاربران در زمان کار با سیستم‌عامل لینوکس را به شما نشان دهیم و از آن مهم‌تر نشان دهیم چگونه باید یک مشکل را شناسایی کنید.

رفع عیوب مربوط به توزیع‌های لینوکسی 

فایل‌های نصب یک توزیع لینوکسی به خوبی قادر به شناسایی یک سیستم‌عامل ویندوز نصب شده روی یک کامپیوتر هستند و در زمان نصب روی یک سیستم بوت دوگانه را آماده می‌کنند، اما گاهی اوقات اتفاق می‌افتد که کامپیوتر دیگر قادر به شناسایی لینوکس نیست و مستقیما از طریق ویندوز بوت می‌شود. جای نگرانی نیست، مشکل فوق به این دلیل رخ می‌دهد که ویندوز بوت لودر Grub را با معادل اختصاصی خود بازنويسی می‌کند و منوی بوت را حذف می‌کند، اما تمام داده‌ها هنوز سر جای خود هستند و تنها باید پیکربندی بوت لودر را دوباره در رکورد راه‌انداز اصلی (MBR) بارگیری کنید. برای انجام این کار باید از طریق Live CD سیستم را بوت کنید و بعد از باز کردن ترمینال فرمان زير را اجرا کنید:

sudo grub-install /dev/sda

فرض بر این است که فایل‌های موردنیاز را روی اولین (یا تنها) هارد درايو نصب کرده‌اید. فرمان Grub-install معمولا کار خود را در تشخیص یک نصاب Grub به خوبی انجام می‌دهد و تنظیمات را به حالت اول باز می‌گرداند. اگر این کار انجام نشد باید آن‌را به طور دستی ویرایش کنید که فرآیند ساده‌ای است. برای وارد شدن به پوسته Grub فرمان sudo grub را اجرا کنید و فرمان زير را برای تشخیص این‌که فایل‌های Grub در کدام پارتيشن قرار دارند وارد کنید:

find /boot/grub/stage1

اگر ویندوز در پارتيشن اول است، قائدتا Grub در پارتيشن دوم است، در چنین شرایطی این فرمان قالبی شبیه به hd0,1 را برمی‌گرداند. حالا با فرمان‌های زیر تنظیمات Grub را انجام دهید:

root (hd0,1)
setup (hd0)
quit

فرمان اول پارتيشن بوت را شناسایی می‌کند و دومین فرمان بوت لودر را روی MBR می‌نویسد و در انتها از پوسته Grub خارج می‌شود.

وقتی فرآیند بوت متوقف می‌شود

در زمان‌های گذشته، چرخه بوت لینوکس با صفحات متنی همراه بود که روی صفحه‌نمایش ظاهر می‌شدند. اکثر این نوشته‌ها برای کاربران قابل درک نبودند، اگر این چرخه نمایش به دلایل مختلف متوقف می‌شد، کاربر باید دقیقا بررسی می‌کرد مشکل در چه مکانی اتفاق افتاده است. در چنین شرایطی تنها چند خط انتهایی متن روی صفحه سر نخ موجود بود. 
این روزها، توزیع‌ها در زمان بوت یک صفحه معرفی شیک و کاربرپسند را نمایش می‌دهند که اطلاعات آن شفاف است، البته تا زمانی‌که مشکلی بروز نکند. اگر خطای به وجود آمده در ابتدای چرخه بوت باشد، ممکن است بتوانيد با اضافه کردن noapic به خط بوت کرنل مشکل را برطرف کنید. اگر این کار مشکل را برطرف کرد، فایل پیکربندی Grub را در
/boot/grub/menu.lst  یا /boot/grub/grub.conf ویرایش کنید و گزینه noapic را به آن اضافه کنید. شما می‌توانید از همین تکنیک زمانی‌که سیستم به کندی خاموش می‌شود نیز استفاده کنید.

مراحل شناسایی خطای بوت

حذف صفحه معرفی: برای غیرفعال كردن صفحه معرفی و نمایش پیغام‌های بوت، اولین آیتم از منو را انتخاب کنید و دکمه E (برای ویرایش) را فشار دهید. هایلایت را به خطی که با kernel شروع می‌شود منتقل کنید و دوباره E را فشار دهید تا خط kernel را ویرایش کنید. هر مرجعی به quiet یا splash را پاک کنید و سپس B (برای بوت) را فشار دهید.

شیوه کار در SUSE متفاوت است. گزينه‌های Boot مستقیما در منوی صفحه قرار دارند. splash=0 را اضافه کنید تا صفحه معرفی به‌طور کامل غیرفعال شود. دکمه F1 را فشار دهید تا فهرستی از گزينه‌ها ظاهر شوند و سپس از Tab و Enter برای گرفتن اطلاعات بیشتر از آیتم‌ها استفاده کنید.


پیدا کردن مشکل: پس از مشاهده پیغام‌ها در مرحله بعد باید مکانی که فرآیند بوت در آن مکان متوقف شده را بررسی کنید. خطی که پیغام خطا را نشان می‌دهد (یا خط آخر) را در گوگل جست‌وجو کنید تا راهکاری که برای رفع مشکل ارائه شده را پیدا کنید. این احتمال وجود دارد که یک قطعه سخت‌افزاری عامل بروز مشکل باشد، بنابراین دستگاه‌های غیر ضروری را جدا کنید و دوباره سیستم را راه‌اندازی کنید. 

رفع عیوب سخت‌افزاری

انتظار نداشته باشید تمامی درایورهای لینوکس داخل دیسک همراه دستگاه باشند. عدم وجود درایورها روی دیسک به معنای آن نیست که تولیدکنندگان اهمیتی به لینوکس نمی‌دهند بلکه به این دلیل است که درایورهای اکثر دستگاه‌ها از قبل به عنوان ماژول کرنل روی سیستم نصب شده‌اند. ماژول‌های کرنل را می‌توان از خط فرمان یا یک فایل شروع به بارگیری کرد، اما سیستم HAL/D-BUS در بیشتر موارد سخت‌افزار را شناسایی می‌کند و ماژول‌ها را به‌طور خودکار بارگیری می‌کند. اگر چنین اتفاقی رخ نداد چه باید کرد؟ از کجا مطلع شویم کدامیک از ماژول را باید بارگیری کنیم؟ اولین مرحله شناسایی سخت‌افزار است. 

شناسایی سخت افزار 

در اولین مرحله از طریق فرمان‌های lspci برای دستگاه‌های اینترنال یا lsusb برای دستگاه‌های USB جزئیات مولفه‌های سخت‌افزاری را به دست آورید:

sudo lspci
sudo lsusb

خروجی این فرامین چیزی شبیه به اطلاعات زیر است:

00:1f.2 SATA controller: Intel Corporation 82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA AHCI Controller (rev 02) 01:00.0 VGA compatible controller: nVidia Corporation GeForce 7100 GS (rev a1) 02:00.1 IDE interface: JMicron Technologies, Inc. JMicron 20360/20363 AHCI Controller (rev 03) 03:00.0 Ethernet controller: Attansic Technology Corp. L1 Gigabit Ethernet Adapter (rev b0)

در برخی موارد اطلاعات به شکل زیباتر و دقیق‌تر نشان داده می‌شوند: 

Bus 001 Device 004: ID 03f0:2c17 Hewlett-Packard
Bus 004 Device 002: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Bus 002 Device 002: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port

پس از شناسایی نوع دستگاه‌ها، از گزينه –s برای دریافت اطلاعات یک دستگاه مشخص و –v برای جزئیات بیشتر استفاده کنید:

sudo lspci -s 03:00.0 -v
sudo lsusb -s 001:004 -v

این گزینه‌ها در بیشتر موارد زمانی که با فرمان lspci استفاده شوند اطلاعات اضافی در ارتباط با ماژول کرنل مورد استفاده برای دستگاه را نشان می‌دهند. گزینه  -k نیز اطلاعات اضافی را فارغ از جزییات غیر مرتبط نشان می‌دهد. اگر فرمان lspci کمی‌ نامفهوم است، جایگزین گرافیکی مثل Hardinfo وجود دارد. 


ممکن است این سوال مطرح می‌شود که بعد از این‌که متوجه شدیم بارگیری کدام ماژول روی یک دستگاه را باید انجام دهیم، چگونه این‌کار انجام می‌شود؟ پاسخ در Live CD که در اختیار دارید نهفته است. اگر در زمان بوت از روی Live CD دستگاه موردنظر شناسایی شد، فرمان
lspci –k را اجرا کنید تا ببینید از کدام ماژول استفاده می‌کند، سپس به سیستم بازگردید و سعی کنید درایور موردنظر را دوباره بارگیری کنید.

modprobe -v modulename

اگر هیچ خروجی را مشاهده نکردید، این ماژول قبلا بارگیری شده و از طریق فرمان lsmod در خروجی نشان داده می‌شود. اگر خروجی شبیه به متن زیر را مشاهده می‌کنید: 

insmod /lib/modules/.../modulename.ko

... به معنای آن است که این ماژول در حال حاضر بارگیری شده و درایورها باید کار کنند یا دست‌کم برای نصب آماده هستند. پاسخ دیگری که ممکن است دریافت کنید پیغام device not present است که نشان می‌دهد سخت‌افزار مربوط به آن ماژول پیدا نشده است. این اتفاق معمولا زمانی رخ می‌دهد که ماژول اشتباهی را انتخاب می‌کنید. در نهایت پیغام
module not found به این معنا است که این ماژول روی سیستم وجود ندارد. اکثر توزیع‌ها به‌طور پیش‌فرض اغلب ماژول‌های کرنل را نصب می‌کنند، بنابراین یا سخت‌افزار سیستم ناشناخته است و باید برای فعال کردن آن یک کرنل جدید را کامپایل کنید یا سخت‌افزار تنها توسط آخرین نسخه‌های کرنلی که در اختیار دارید پشتیبانی می‌شود. شما می‌توانید با استفاده از فرمان زير نسخه کرنل Live CD و سیستم را بررسی کنید:

uname -r

اگر کرنل Live CD جدیدتر است به دنبال یک به‌روزرسانی برای توزیع خود باشید. پاسخ دیگری که وجود دارد این است که سخت‌افزار توسط این کرنل پشتیبانی نمی‌شود و باید از یک درایور ثالث استفاده کرد. این مشکل بیشتر در ارتباط با کارت‌های بی‌سیمی که از درایورهایی شبیه به MadWifi یا NdisWrapper استفاده می‌کنند، ظاهر می‌شود. اگر نیاز دارید که یک درایور جداگانه را نصب کنید، احتمالا می‌توانید آن‌را در یکی از مخازن توزیع توزیع لینوکس پیدا کنید.

بارگیری خودکار ماژول‌ها

در بیشتر موارد نیاز دارید که در زمان بوت یک ماژول را هم بارگیری کنید. تمام توزیع‌ها روشی برای انجام این‌کار دارند که معمولا با یکدیگر متفاوت است. در اوبونتو به‌سادگی نام ماژول مورد نظر را به انتهای فایل /etc/modules اضافه می‌کنید. کاربران SUSE باید /etc/sysconfig/kernel را ویرایش کنند و تنظیمات MODULES_LOADED_ON_BOOT را به شکل زیر ویرایش کنند:

MODULES_LOADED_ON_
OOT=”module1 module2”

در Fedora یک فایل (در واقع یک اسکریپت) را به /etc/sysconfig/modules/ 
به‌همراه یک افزونه .modules اضافه می‌کنید.به‌طور مثال، برای بارگیری NdisWrapper یک فایل /etc/sysconfig/modules/ndiswrapper.modules با محتوای زیر ایجاد می‌کنید:

#!/bin/sh
/sbin/modprobe ndiswrapper

از آن‌جایی که فایل فوق یک اسکریپت است، همچنین باید آن‌را به یک فایل اجرایی تبدیل کنید:

sudo chmod +x /etc/sysconfig/modules/ndiswrapper.modules

سخت‌افزار کارت گرافیک 

هیچ یک از موارد فوق در مورد کارت‌های گرافیکی صدق نمی‌کند. درایور کارت‌های گرافیک بخشی از نرم‌افزار X.org است، مگر این‌که از یک کارت ATI یا Nvidia استفاده کنید. اگر قصد انجام کارهایی را دارید که به شتاب‌دهنده سه بعدی نیاز دارد یا برای بازی کردن از کارت گرافیک استفاده می‌کنید باید به سراغ درایورهایی بروید که تولیدکننده کارت گرافیک ارائه کرده است.

رفع عیوب نرم‌افزاری 

گاهی اوقات پیش می‌آید که متوجه می‌شوید سرعت سیستم در حال کند شدن است و انجام وظایف بیشتر از حد معمول طول می‌کشد. سه منبع اصلی سیکل‌های پردازنده مرکزی، حافظه و فضای هارد دیسک در کامپیوتر وجود دارد. این امکان وجود دارد که یک برنامه خاص یا حتا مولفه‌های سیستم‌عامل بیش از اندازه از این منابع استفاده کنند. بررسی وضعیت میزان مصرف پردازنده مرکزی از همه راحت‌تر است. شما می‌توانید از برنامه top و اجرای آن در ترمینال، ردیف‌ها و ستون‌هایی از اطلاعات را در پنجره ترمینال مشاهده کنید. خط CPU نشان می‌دهد چه میزان از پردازنده مرکزی توسط انواع مختلفی از برنامه‌ها استفاده شده است. Sy نمایانگر پردازش سیستم، us نمایانگر پردازش توسط کاربر و ni نشان‌دهنده برنامه‌هایی است که با مقادیر خوب و مثبت ارزش‌گذاری شده و در حال اجرا هستند.
Nice روشی برای برنامه‌ریزی نرم‌افزارها برای تعیین میزان مصرف پردازنده مرکزی توسط آن‌ها است و هر چه این میزان مطلوب‌تر باشد به این نرم‌افزار اجازه داده می‌شود منابع بیشتری از چرخه پردازنده مرکزی در اختیار داشته باشد. البته موضوع کمی‌ پیچیده‌تر از این حرف‌ها است و معمولا توصیه می‌شود Nice تنها در برنامه‌ریزی پردازش کرنل استفاده شود. اگر از بیشتر از یک هسته پردازنده مرکزی استفاده می‌کنید، کلید 1 را فشار دهید تا top همه آن‌ها را نمایش دهد. مقادیری که ابتدا باید به آن‌ها نگاه کنید id (idle) و wa (wait) است. مگر در مواردی که در حال کامپایل نرم‌افزار یا پخش ویدیو هستید، نماد idle باید بسیار بالا (معمولا بالای 90%) باشد. اگر این مقدار کمتر از 10% یا حتی صفر باشد نشان‌دهنده آن است که پردازه‌ای در حال بلعیدن منابع پردازنده مرکزی است. فهرست پردازش‌ها نشان دهنده مقدار پردازنده مرکزی و حافظه‌ای است که هر برنامه در حال استفاده از آن است و به‌طور پیش‌فرض بر اساس مصرف پردازنده مرکزی مرتب می‌شود. شما می‌توانید منابع پردازشی یک برنامه خاص را افزایش دهید یا در صورت عدم منابع تخصیص داده شده را حذف کنید.


Filelight نیز ابزاری برای نمایش وضعیت دایرکتوری‌ها و پارتیشن‌های هارددیسک است که میزان فضای اشغال شده توسط هر دایرکتوری را به صورت گرافیکی نمایش می‌دهد. به کمک این نرم‌افزار می‌توانید پر شدن بی دلیل پارتيشن‌های مختلف را شناسایی و علت را تشخیص دهید. با استفاده از فرمان du نیز می‌توانید از طریق ترمینال به این اطلاعات دسترسی داشته باشید.


ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را می‌توانید از دکه‌های روزنامه فروشی تهران و شهرستان‌ها تهیه کنید. همچنین می‌توانید برای مطالعه شماره‌ها مختلف آن به کتابخانه‌های عمومی سراسر کشور مراجعه نمایید.

آخرین نسخه ماهنامه شبکه را دریافت کنید
برای دانلود ماهنامه شبکه 222 با پرونده ویژه «ترفندهای سیستم‌عامل‌ها» اینجا کلیک کنید.

اشتراک ماهنامه شبکه
اشتراک ماهنامه شبکه یکی دیگر از راه‌های دسترسی به مطالب مجله است؛ به ویژه اشتراک آنلاین که با قیمتی مناسب محتوای کامل مجله، شامل مطالب و آگهی‌ها را در ختیار شما قرار می‌دهد.

برچسب: 

مطالب پربازدید روز

پشتیبانی توسط ایران دروپال