۶ گزینه بوت لینوکس که می‌توانند شما را از یک سیستم خراب نجات دهند

نوشته شده توسط هوشنگ

نمای زاویه‌دار نزدیک از صفحه لپ‌تاپ که منوی بوت GNU GRUB 2.12 را با چندین نسخه از هسته لینوکس فدورا و تنظیمات فریم‌ور UEFI نشان می‌دهد.

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

شناخت این گزینه‌های بوت می‌تواند وقتی همه‌چیز خراب می‌شود، زمان زیادی را برایتان صرفه‌جویی کند. در اینجا شش گزینه بوت لینوکس را آورده‌ام که به نظرم ارزش دانستن دارند:

بوت کردن هسته قدیمی‌تر لینوکس از GRUB

بازگردانی به‌روزرسانی هسته‌ای که سیستم‌تان را خراب کرده است

  • منوی بوت GNU GRUB که هسته‌های موجود لینوکس فدورا و تنظیمات فریمور UEFI را نمایش می‌دهد.

  • ویرایشگر GRUB که پارامترهای بوت هسته پیش‌فرض لینوکس فدورا، از جمله ro quiet را نمایش می‌دهد.

  • ترمینالی که خروجی journalctl -xb را با سرویس‌های شکست‌خورده NetworkManager و home.mount و خرابی وابستگی برای جستجوی نام کاربر و گروه نمایش می‌دهد.

  • حالت اضطراری لینوکس که خطایی مبنی بر قفل بودن حساب روت و عدم امکان باز کردن کنسول نگهداری نمایش می‌دهد.

  • بررسی ورودی‌های ماونت سیستم فایل در فایل etc fstab.

  • منوی بوت GNU GRUB نمایش‌دهنده کرنل‌های موجود فدورا لینوکس و تنظیمات فریم‌ور UEFI.

  • ویرایشگر GRUB نمایش‌دهنده پارامترهای پیش‌فرض بوت کرنل فدورا لینوکس، از جمله ro quiet.

  • ترمینال نمایش‌دهنده خروجی journalctl -xb با سرویس‌های ناموفق NetworkManager و home.mount و خطای وابستگی در جست‌وجوی نام کاربر و گروه.

  • حالت اضطراری لینوکس نمایش‌دهنده خطایی مبنی بر قفل بودن حساب root و باز نشدن کنسول تعمیر و نگهداری.

  • بررسی ورودی‌های مانت سیستم فایل در etc fstab.

  • منوی بوت GNU GRUB که هسته‌های موجود فدورا لینوکس و تنظیمات فریم‌ور UEFI را نمایش می‌دهد.

  • ویرایشگر GRUB که پارامترهای بوت پیش‌فرض هسته فدورا لینوکس را نشان می‌دهد، از جمله ro quiet.

  • ترمینال که خروجی journalctl -xb را با سرویس‌های ناموفق NetworkManager و home.mount و یک خرابی وابستگی در جست‌وجوی نام کاربر و گروه نشان می‌دهد.

  • حالت اضطراری لینوکس که خطایی را نمایش می‌دهد مبنی بر قفل بودن حساب root و عدم امکان باز کردن کنسول تعمیر و نگهداری.

  • بررسی ورودی‌های mount فایل‌سیستم در etc fstab.

  • منوی بوت GNU GRUB که هسته‌های موجود فدورا لینوکس و تنظیمات فریم‌ور UEFI را نمایش می‌دهد.

  • ویرایشگر GRUB که پارامترهای بوت پیش‌فرض هسته فدورا لینوکس، از جمله ro quiet را نمایش می‌دهد.

  • ترمینال که خروجی journalctl -xb را با سرویس‌های ناموفق NetworkManager و home.mount و یک خطای وابستگی برای جست‌وجوی نام کاربر و گروه نمایش می‌دهد.

  • حالت اضطراری لینوکس که خطایی مبنی بر قفل بودن حساب ریشه و باز نشدن کنسول نگه‌داری را نمایش می‌دهد.

  • بررسی ورودی‌های مانت سیستم فایل در etc fstab.

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

اکثر توزیع‌های لینوکس در هنگام به‌روزرسانی به نسخه جدید، نسخه‌های قدیمی‌تر کرنل را نصب نگه می‌دارند. شما می‌توانید از طریق بارگذار بوت GRUB با انتخاب گزینه‌های پیشرفته (Advanced options) از منوی شروع، به آن‌ها دسترسی پیدا کنید. این کار لیستی از کرنل‌های نصب شده را باز می‌کند. نسخه‌ای قدیمی‌تر که قبلاً کار کرده است را انتخاب کرده، سپس Enter را فشار دهید تا آن را بوت کنید.

اگر GRUB به طور خودکار نمایش داده نشد، هنگام بوت BIOS کلید Shift را نگه دارید یا در سیستم‌های UEFI به طور مکرر کلید Esc را فشار دهید. رفتار دقیق کلیدها به پیکربندی بارگذار بوت شما بستگی دارد. پس از رسیدن به دسکتاپ خود، می‌توانید آپدیت مشکل‌ساز را بررسی کنید، سازگاری درایورها را چک کنید، یا کرنل کاری را مجدداً نصب نمایید. این روش به ویژه زمانی مفید است که به‌روزرسانی کرنل، سیستمی را به شما تحویل دهد که قادر به رسیدن به صفحه ورود (login screen) نباشد.

بوت کردن لینوکس در حالت نجات (Rescue mode)

استفاده از سیستم-د نجات (systemd rescue mode) برای تعمیر نصب لینوکس خراب

Logging into rescue mode with the user password.

حالت نجات زمانی مفید است که لینوکس بتواند کرنل خود را شروع کند اما در طول فرآیند بوت معمولی با مشکل مواجه شود. این حالت یک محیط حداقل (minimal environment) با سرویس‌های ضروری را آغاز کرده و سیستم فایل را Mount می‌کند و یک Shell در اختیار شما قرار می‌دهد تا بتوانید فایل‌های پیکربندی را تعمیر، بسته‌های مشکل‌ساز را حذف و شکست‌های مربوط به راه‌اندازی را بررسی کنید.

در سیستمی که از systemd استفاده می‌کند، می‌توانید با ویرایش ورودی بوت GRUB به حالت نجات دسترسی پیدا کنید. ورودی بوت عادی خود را برجسته (Highlight) کرده، کلید e را فشار دهید، و خطی را پیدا کنید که با linux یا linuxefi شروع می‌شود. این پارامتر را به انتهای آن خط اضافه کنید:

systemd.unit=rescue.target

برای ادامه بوت، کلید Ctrl + X یا F10 را فشار دهید. بسته به پیکربندی شما، ممکن است پیش از رسیدن به شل ریکاوری، از شما رمز ریشه (root password) پرسیده شود.

تعمیر گوشی و لپ‌تاپ - البان

از اینجا، می‌توانید لاگ‌های سیستم را بازرسی، یک بسته معیوب را حذف یا یک فایل پیکربندی را که مانع راه‌اندازی عادی می‌شود، تصحیح کنید. همچنین می‌توانید از دستوراتی مانند journalctl -xb برای بررسی خطاهای بوت فعلی استفاده نمایید. پارامتر قدیمی single نیز می‌تواند در بسیاری از سیستم‌های لینوکس، حالت تک کاربر (single-user mode) را درخواست کند، اگرچه systemd.unit=rescue.target برای نصب‌های مبتنی بر systemd صریح‌تر است.

بوت کردن لینوکس در حالت اضطراری

دسترسی به یک شل ریشه اضطراری وقتی حالت نجات شکست می‌خورد

ویرایشگر GRUB که خط فرمان کرنل لینوکس را با systemd.unit=emergency.target اضافه‌شده نشان می‌دهد.

گاهی اوقات حتی حالت نجات هم نمی‌تواند سیستم شما را به وضعیتی قابل استفاده برساند. یک مانت خراب فایل‌سیستم، یک ورودی نادرست در /etc/fstab، یا شکست دیگری در مراحل اولیه بوت می‌تواند مانع از تکمیل فرایند بازیابی شود. اینجاست که حالت اضطراری وارد عمل می‌شود. این حالت محیطی حتی مینیمال‌تر از حالت نجات فراهم می‌کند؛ سرویس‌های بسیار کمی را راه‌اندازی می‌کند و یک شل ریشه (root) برای عیب‌یابی در اختیار شما قرار می‌دهد. برای ورود به حالت اضطراری، ورودی بوت GRUB خود را مانند قبل ویرایش کنید و این عبارت را به انتهای آن اضافه کنید:

systemd.unit=emergency.target

اکنون می‌توانید /etc/fstab را بررسی کنید، مانت‌های ناموفق را مورد مطالعه قرار دهید و مشکلات پیکربندی را اصلاح کنید. اگر فایل‌سیستم ریشه به‌صورت فقط‌خواندنی مانت شده باشد، ممکن است لازم باشد پیش از ویرایش فایل‌ها، آن را با دسترسی نوشتن دوباره مانت کنید:

mount -o remount,rw /

غیرفعال کردن یک سرویس مشکل‌دار systemd هنگام بوت

استفاده از پارامتر systemd.mask برای دور زدن سرویس معیوب

ویرایشگر ورودی بوت که خط فرمان کرنل لینوکس را همراه با پارامترهای بوت systemd.unit=emergency.target و systemd.mask=NetworkManager.service نشان می‌دهد.

من این گزینه را زمانی امتحان می‌کنم که بوت عادی بازیابی به دلیل مشکلات مربوط به فایل‌سیستم یا مانت مدام شکست بخورد. این حالت محیط کوچک‌تری برای کار در اختیار شما می‌گذارد که به‌ویژه زمانی می‌تواند مفید باشد که وابستگی‌های راه‌اندازی مانع از رسیدن لینوکس به یک وضعیت بازیابی قابل استفاده می‌شوند.

یک سرویس systemd با رفتار نادرست می‌تواند مانع رسیدن لینوکس به صفحه ورود شود یا شما را در زمان راه‌اندازی در انتظاری نامحدود نگه دارد. این اتفاق ممکن است پس از تغییر پیکربندی شبکه، نصب یک درایور جدید یا دستکاری سرویسی که به‌طور خودکار اجرا می‌شود رخ دهد. می‌توانید با افزودن پارامتر systemd.mask= به ورودی GRUB خود، از systemd بخواهید که سرویس خاصی را در بوت فعلی ماسک کند. برای مثال، اگر NetworkManager باعث ایجاد مشکلات در راه‌اندازی می‌شود، عبارت زیر را اضافه کنید:

systemd.mask=NetworkManager.service

به جای NetworkManager.service نام سرویسی را که می‌خواهید بررسی کنید قرار دهید. systemd مانع اجرای واحد مشخص‌شده در آن بوت خواهد شد.

این کار به‌ویژه زمانی مفید است که مشکوک باشید سرویسی مقصر شکست در راه‌اندازی است، اما همچنان برای بررسی آن به دسترسی به سیستم‌تان نیاز دارید. پس از رسیدن به یک شل، لاگ‌های آن را با journalctl بررسی کنید و تصمیم بگیرید که سرویس مشکل‌دار را غیرفعال کنید، دوباره پیکربندی کنید یا از نو نصب کنید.

ماسک کردن NetworkManager عملکرد شبکه‌ای آن را نیز غیرفعال می‌کند، بنابراین اگر عیب‌یابی شما به اتصال نیاز دارد، به راه دیگری برای اتصال به اینترنت نیاز خواهید داشت.

3D illustration of Tux, the Linux penguin mascot, depicted as an elderly figure with a white beard, glasses, and a cane, standing in front of a display showcasing some Linux distros.

#

بوت مستقیم لینوکس به یک شل ریشه Bash

دور زدن systemd با پارامتر init=/bin/bash

Remounting the root filesystem with read and write permissions.

اگر systemd مانع بوت شدن نصب شما می‌شود، می‌توانید به‌طور کامل از آن عبور کنید و مستقیماً یک شل راه‌اندازی کنید. این یکی از شدیدترین گزینه‌های بازیابی است، اما وقتی اهداف بازیابی معمولی در دسترس نیستند، می‌تواند فوق‌العاده مفید باشد. ورودی بوت GRUB خود را ویرایش کنید و این عبارت را اضافه کنید:

init=/bin/bash

این به هسته لینوکس می‌گوید که Bash را به‌جای راه‌اندازی سیستم init معمولی، به‌عنوان PID 1 اجرا کند. در این صورت مستقیماً وارد یک شل روت خواهید شد، بدون سرویس‌های معمول سیستم، مدیر ورود یا محیط دسکتاپ. نکته‌ای که باید به خاطر داشته باشید این است که فایل‌سیستم روت شما معمولاً به‌صورت فقط‌خواندنی مونت می‌شود. قبل از تغییر فایل‌های پیکربندی یا تعمیر نصب خود، آن را با دسترسی نوشتن دوباره مونت کنید:

mount -o remount,rw /

اکنون می‌توانید فایل‌ها را ویرایش کنید، پیکربندی سیستم را بررسی کنید و مشکلاتی را که مانع راه‌اندازی systemd می‌شوند برطرف کنید. وقتی کارتان تمام شد، تغییرات در انتظار را ذخیره کنید و سیستم را دوباره راه‌اندازی کنید:

sync
reboot -f

از این گزینه برای موقعیت‌هایی استفاده کنید که حالت‌های نجات (rescue) و اضطراری (emergency) نمی‌توانند شما را به یک محیط قابل استفاده برسانند. از آنجا که از systemd عبور می‌کنید، چندین دستور و سرویس آشنا در دسترس نخواهند بود و رویه‌های معمول خاموش کردن سیستم نیز کار نخواهند کرد.

#

رفع مشکلات بوت لینوکس با nomodeset

غیرفعال کردن تنظیمات اولیه حالت گرافیکی برای دور زدن مشکلات درایور

ویرایش پارامترهای بوت GRUB برای افزودن nomodeset و غیرفعال کردن حالت گرافیکی اولیه هنگام بوت اضطراری.

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

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

nomodeset

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

البته یک بده‌بستان هم وجود دارد. ممکن است نمایشگر شما به رزولوشن پایین‌تری محدود شود و شتاب‌دهی سخت‌افزاری گرافیک در دسترس نباشد. من nomodeset را به‌عنوان یک اقدام موقت برای عیب‌یابی در نظر می‌گیرم، در حالی که مشکل واقعی درایور را بررسی می‌کنم.

ترمینال لینوکس در حال نمایش استفاده از چند ترفند Bash برای آسان‌تر کردن کارهای تکراری.

ایجاد یک اسنپ‌شات قبل از به‌روزرسانی لینوکس

اگر به‌طور منظم با به‌روزرسانی‌های لینوکس، درایورها یا پیکربندی سیستم آزمایش می‌کنید، راه‌اندازی Timeshift را توصیه می‌کنم. این ابزار به شما امکان می‌دهد اسنپ‌شات‌هایی از سیستم ایجاد کنید که در صورت خراب شدن نصب شما پس از یک به‌روزرسانی، می‌توانید آن‌ها را بازیابی کنید. می‌توانید اسنپ‌شات‌های خودکار را زمان‌بندی کنید یا پیش از نصب به‌روزرسانی‌های بزرگ، به‌صورت دستی یکی ایجاد کنید.

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

یک دسکتاپ اوبونتو دو ترمینال باز نمایش می‌دهد؛ یکی در حال اجرای دستور pwd است و دیگری دستورهای mkdir، cd، echo و scp را برای ساخت فایلی در یک پوشه و انتقال آن از طریق شبکه نشان می‌دهد.


منبع

دیدگاهتان را بنویسید