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

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

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

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

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

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

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

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

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

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

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

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

  • منوی بوت 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 در حال نمایش هسته‌های موجود Fedora Linux و تنظیمات فریم‌ور UEFI.

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

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

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

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

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

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

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

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

استفاده از حالت نجات systemd برای تعمیر نصب خراب لینوکس

ورود به حالت نجات با رمز عبور کاربر.

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

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

systemd.unit=rescue.target

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

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

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

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

دسترسی به یک پوسته روت اضطراری وقتی حالت نجات کارساز نیست

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

گاهی اوقت حتی حالت نجات (Rescue Mode) هم نمی‌تواند سیستم شما را به وضعیتی قابل استفاده برساند. یک اتصال (mount) خراب سیستم فایل، یک ورودی نادرست در /etc/fstab یا خرابی دیگری در مراحل اولیه بوت می‌تواند مانع تکمیل فرآیند بازیابی شود. اینجاست که حالت اضطراری وارد عمل می‌شود. این حالت محیطی حتی مینیمال‌تر از حالت نجات فراهم می‌کند؛ سرویس‌های بسیار محدودی را راه‌اندازی می‌کند و برای عیب‌یابی یک پوسته روت در اختیارتان می‌گذارد. برای ورود به حالت اضطراری، مانند قبل ورودی بوت 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 بگویید که سرویس خاصی را در طول بوت فعلی mask کند. برای مثال، اگر NetworkManager عامل بروز مشکلات در راه‌اندازی است، عبارت زیر را اضافه کنید:

systemd.mask=NetworkManager.service

عبارت NetworkManager.service را با نام سرویسی که می‌خواهید بررسی کنید جایگزین کنید. Systemd مانع از اجرای واحد مشخص‌شده در طول آن بوت خواهد شد.

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

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

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

#

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

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

اتصال مجدد سیستم فایل ریشه با مجوزهای خواندن و نوشتن.

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

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

init=/bin/bash

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

mount -o remount,rw /

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

sync
reboot -f

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

حل مشکلات بوت لینوکس با nomodeset

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

Editing GRUB boot parameters to add nomodeset and disable early graphics mode during emergency boot.

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

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

nomodeset

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

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

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

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

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

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

  • ### دسکتاپ
  • ### موبایل

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

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

منبع

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