هنگام راهاندازی Linux، گاهی پیامهای خطا روی صفحه ظاهر میشوند و سیستم پیش از رسیدن به محیط دسکتاپ متوقف میشود. هرچند این پیامها نگرانکننده به نظر میرسند، اما در عمل مهمترین سرنخ برای پیدا کردن علت واقعی مشکل هستند.
در این مقاله، رایجترین علتهای خطا هنگام بوت Linux و روشهای مرحلهبهمرحله برای رفع آنها را با جزئیات بررسی میکنیم.
1. بدون بررسی خطا، سیستم را بارها مجبور به ریاستارت نکنید
بسیاری از کاربران وقتی خطایی در زمان بوت میبینند، چندین بار سیستم را پشتسرهم ریاستارت میکنند. اما اگر مشکل مربوط به سیستم فایل یا دیسک باشد، این کار میتواند اوضاع را بدتر کند.
بهتر است ابتدا این کارها را انجام دهید:
- متن دقیق خطا را یادداشت کنید
- از صفحه عکس بگیرید
- بررسی کنید بوت در چه مرحلهای متوقف میشود
- به آخرین تغییرات انجامشده در سیستم فکر کنید
اگر مشکل بعد از یک بهروزرسانی شروع شده، احتمال دارد علت در کرنل یا درایورها باشد. اگر پیش از آن خاموشی ناگهانی یا قطع برق رخ داده، آسیب دیدن سیستم فایل محتملتر است.
2. انواع رایج خطاهای هنگام بوت
- خطاهای GRUB یا بوتلودر
- خطاهای سیستم فایل
- مشکلات کرنل یا initramfs
- شکست در راهاندازی سرویسهای systemd
- مشکلات درایور GPU یا نمایشگر
- کمبود فضای دیسک
- خرابی فیزیکی دیسک
با وجود اینکه نشانه کلی یکسان است و Linux بوت نمیشود، راهحل به نوع خطا بستگی دارد.
3. پیامهای جزئی بوت را نمایش دهید
بسیاری از توزیعها پیامهای جزئی بوت را با استفاده از quiet splash مخفی میکنند.
برای دیدن علت واقعی، بهتر است این گزینه را موقتاً در GRUB حذف کنید.
- سیستم را ریاستارت کنید
- بلافاصله پس از روشن شدن، چند بار Shift یا Esc را فشار دهید
- در GRUB ورودی بوت را انتخاب کرده و e را بزنید
quiet splashرا حذف کنید- با Ctrl + X بوت را ادامه دهید
این کار کمک میکند دقیقتر ببینید که در چه مرحلهای مشکل رخ میدهد.
4. اگر “grub rescue” یا “no such partition” دیده میشود
اگر هنگام روشن کردن سیستم بلافاصله grub rescue یا خطایی مانند “no such partition” ظاهر شود، معمولاً مشکل به بوتلودر یا ساختار پارتیشنها مربوط است.
علتهای رایج:
- پارتیشنها تغییر داده شده یا جابهجا شدهاند
- Windows در حالت dual boot اطلاعات بوت را بازنویسی کرده است
- پارتیشن EFI یا /boot آسیب دیده است
- پیکربندی GRUB خراب شده است
در بسیاری از موارد میتوان با Live USB و نصب دوباره GRUB مشکل را رفع کرد:
sudo mount /dev/sda2 /mnt
sudo mount /dev/sda1 /mnt/boot/efi # فقط برای سیستمهای UEFI
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt
grub-install /dev/sda
update-grub
exit
sudo reboot
نام دستگاهها را متناسب با سیستم خود تغییر دهید.
5. اگر سیستم وارد emergency mode میشود
پیام You are in emergency mode معمولاً به این معناست که سیستم هنگام mount کردن پارتیشنها یا خواندن تنظیمات مهم با یک مشکل جدی روبهرو شده است.
یکی از رایجترین علتها، خطا در فایل /etc/fstab است.
ابتدا لاگ را بررسی کنید:
journalctl -xb
سپس فایل fstab را ببینید:
cat /etc/fstab
خطاهای معمول:
- UUID اشتباه
- mount point که وجود ندارد
- دیسک خارجی در fstab تعریف شده ولی متصل نیست
اگر مشکلی پیدا شد، فایل را ویرایش کنید:
nano /etc/fstab
بعد از اصلاح، سیستم را ریاستارت کنید.
6. اگر خطا به fsck یا سیستم فایل مربوط است
پیامهایی مانند fsck failed یا UNEXPECTED INCONSISTENCY معمولاً نشانه آسیب در سیستم فایل هستند.
این اتفاق اغلب بعد از قطع برق یا خاموش شدن اجباری رخ میدهد.
امنترین روش این است که بررسی را از طریق Recovery Mode یا Live USB انجام دهید:
sudo fsck -f /dev/sda1
نباید fsck را روی پارتیشن ریشهای که هماکنون فعال و mount شده است اجرا کنید.
همچنین بهتر است سلامت دیسک را هم بررسی کنید:
sudo smartctl -a /dev/sda
اگر SMART تعداد زیادی خطا نشان میدهد، باید ابتدا از دادههای مهم نسخه پشتیبان تهیه کنید.
7. اگر سرویسهای systemd اجرا نمیشوند
گاهی هسته Linux بهدرستی اجرا شده، اما یکی از سرویسهای مهم systemd بالا نمیآید و همین باعث توقف ادامه بوت میشود. در این حالت معمولاً پیامهایی مانند موارد زیر دیده میشود:
Failed to start ...Dependency failed for ...
در این وضعیت میتوانید وارد TTY شوید:
Ctrl + Alt + F2
بعد از ورود، سرویسهای ناموفق را بررسی کنید:
systemctl --failed
journalctl -xb
برای دیدن جزئیات یک سرویس خاص:
systemctl status NetworkManager
journalctl -u NetworkManager -b
اگر سرویس مشکلدار حیاتی نباشد، میتوان آن را موقتاً غیرفعال کرد تا مشخص شود سیستم ادامه بوت را انجام میدهد یا نه.
8. اگر مشکل در کرنل یا initramfs است
اگر مشکل بعد از بهروزرسانی کرنل شروع شده، ممکن است هسته جدید یا initramfs خراب شده باشد. در این حالت میتوانید از GRUB یک کرنل قدیمیتر را بوت کنید:
- GRUB را باز کنید
- Advanced options را انتخاب کنید
- یک نسخه قدیمیتر از کرنل را انتخاب کنید
اگر این روش جواب داد، میتوانید initramfs را دوباره بسازید:
sudo update-initramfs -u
9. اگر درایور GPU مقصر است
گاهی Linux در واقع بوت شده، اما محیط گرافیکی به دلیل مشکل در درایور GPU ظاهر نمیشود. این موضوع بهویژه بعد از بهروزرسانیهای NVIDIA زیاد دیده میشود.
در GRUB بهطور موقت nomodeset را اضافه کنید:
linux /boot/vmlinuz ... quiet splash nomodeset
اگر سیستم با این روش بوت شد، به احتمال زیاد مشکل از درایور گرافیکی است. سپس میتوان درایور را دوباره نصب کرد.
10. بررسی فضای خالی دیسک را فراموش نکنید
گاهی علت واقعی بسیار ساده است: پارتیشن ریشه یا /boot کاملاً پر شده است.
در این حالت بهروزرسانیها ناقص میمانند و بوت بعدی دچار مشکل میشود.
فضای آزاد را با این دستور بررسی کنید:
df -h
اگر فضا تقریباً تمام شده، cache و بستههای قدیمی را پاک کنید:
sudo apt clean
sudo apt autoremove
همچنین ممکن است لازم باشد کرنلهای قدیمی و فایلهای لاگ حجیم را حذف کنید.
11. اگر هیچ چیز جواب نداد، اول از دادهها نسخه پشتیبان بگیرید
اگر نه TTY، نه Recovery Mode و نه روشهای معمول تعمیر نتیجه ندادند، امنترین کار این است که با Live USB بوت کنید و ابتدا فایلهای مهم را ذخیره کنید. این موضوع زمانی که به خرابی فیزیکی دیسک مشکوک هستید، اهمیت بیشتری پیدا میکند.
با Live USB میتوانید:
- فایلهای مهم را کپی کنید
- fsck را اجرا کنید
- GRUB را دوباره نصب کنید
- فایلهای تنظیمات را بررسی کنید
- وضعیت دیسک را ارزیابی کنید
جمعبندی
نمایش پیام خطا هنگام بوت Linux لزوماً به این معنا نیست که باید کل سیستم را فوراً دوباره نصب کنید. در بسیاری از موارد، اگر پیام خطا را درست بخوانید و مرحلهبهمرحله علت را بررسی کنید، مشکل قابل حل است.
- متن دقیق خطا را یادداشت کنید
- پیامهای جزئی بوت را نمایش دهید
- از TTY، Recovery Mode یا Live USB استفاده کنید
- GRUB، سیستم فایل، سرویسها، کرنل، درایورها و فضای دیسک را بررسی کنید
- اگر به خرابی دیسک مشکوک هستید، اول دادهها را حفظ کنید
مهمترین نکته این است که بدون بررسی، سیستم را دوباره نصب نکنید، بلکه از پیام خطا بهعنوان سرنخی برای پیدا کردن علت واقعی استفاده کنید.