
اگر سیستم لینوکس شما بعد از یک بهروزرسانی از کار بیفتد، حاضر به نمایش صفحه ورود نشود، یا هنگام راهاندازی خطای دیگری صادر کند، لازم نیست کل توزیعتان را از نو نصب کنید. لینوکس چندین گزینه بوت ارائه میدهد که میتوانند به شما در بازیابی یک نصب خراب، عیبیابی مشکلات راهاندازی و بازگشت به سیستمتان کمک کنند.
شناخت این گزینههای بوت میتواند وقتی همهچیز خراب میشود، زمان زیادی را برایتان صرفهجویی کند. در اینجا شش گزینه بوت لینوکس را آوردهام که به نظرم ارزش دانستن دارند:
بوت کردن هسته قدیمیتر لینوکس از GRUB
بازگردانی بهروزرسانی هستهای که سیستمتان را خراب کرده است
بهروزرسانی هسته گاهی میتواند مشکلاتی در سازگاری سختافزار، درایورهای گرافیک، شبکه یا پشتیبانی از سیستم فایل ایجاد کند. اگر مدت کافی است از لینوکس استفاده میکنید، احتمالاً چند داستان ترسناک درباره بهروزرسانیهای هسته از تجربه شخصی خودتان دارید. وقتی چنین اتفاقی میافتد، یکی از اولین کارهایی که ارزش امتحان دارد، بوت کردن یک هسته قدیمیتر است، مخصوصاً اگر همهچیز پیش از بهروزرسانی بهخوبی کار میکرد.
اکثر توزیعهای لینوکس در هنگام بهروزرسانی به نسخه جدید، نسخههای قدیمیتر کرنل را نصب نگه میدارند. شما میتوانید از طریق بارگذار بوت GRUB با انتخاب گزینههای پیشرفته (Advanced options) از منوی شروع، به آنها دسترسی پیدا کنید. این کار لیستی از کرنلهای نصب شده را باز میکند. نسخهای قدیمیتر که قبلاً کار کرده است را انتخاب کرده، سپس Enter را فشار دهید تا آن را بوت کنید.
اگر GRUB به طور خودکار نمایش داده نشد، هنگام بوت BIOS کلید Shift را نگه دارید یا در سیستمهای UEFI به طور مکرر کلید Esc را فشار دهید. رفتار دقیق کلیدها به پیکربندی بارگذار بوت شما بستگی دارد. پس از رسیدن به دسکتاپ خود، میتوانید آپدیت مشکلساز را بررسی کنید، سازگاری درایورها را چک کنید، یا کرنل کاری را مجدداً نصب نمایید. این روش به ویژه زمانی مفید است که بهروزرسانی کرنل، سیستمی را به شما تحویل دهد که قادر به رسیدن به صفحه ورود (login screen) نباشد.
بوت کردن لینوکس در حالت نجات (Rescue mode)
استفاده از سیستم-د نجات (systemd rescue mode) برای تعمیر نصب لینوکس خراب

حالت نجات زمانی مفید است که لینوکس بتواند کرنل خود را شروع کند اما در طول فرآیند بوت معمولی با مشکل مواجه شود. این حالت یک محیط حداقل (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 صریحتر است.
بوت کردن لینوکس در حالت اضطراری
دسترسی به یک شل ریشه اضطراری وقتی حالت نجات شکست میخورد

گاهی اوقات حتی حالت نجات هم نمیتواند سیستم شما را به وضعیتی قابل استفاده برساند. یک مانت خراب فایلسیستم، یک ورودی نادرست در /etc/fstab، یا شکست دیگری در مراحل اولیه بوت میتواند مانع از تکمیل فرایند بازیابی شود. اینجاست که حالت اضطراری وارد عمل میشود. این حالت محیطی حتی مینیمالتر از حالت نجات فراهم میکند؛ سرویسهای بسیار کمی را راهاندازی میکند و یک شل ریشه (root) برای عیبیابی در اختیار شما قرار میدهد. برای ورود به حالت اضطراری، ورودی بوت GRUB خود را مانند قبل ویرایش کنید و این عبارت را به انتهای آن اضافه کنید:
systemd.unit=emergency.target
اکنون میتوانید /etc/fstab را بررسی کنید، مانتهای ناموفق را مورد مطالعه قرار دهید و مشکلات پیکربندی را اصلاح کنید. اگر فایلسیستم ریشه بهصورت فقطخواندنی مانت شده باشد، ممکن است لازم باشد پیش از ویرایش فایلها، آن را با دسترسی نوشتن دوباره مانت کنید:
mount -o remount,rw /
غیرفعال کردن یک سرویس مشکلدار systemd هنگام بوت
استفاده از پارامتر systemd.mask برای دور زدن سرویس معیوب

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

#
بوت مستقیم لینوکس به یک شل ریشه Bash
دور زدن systemd با پارامتر init=/bin/bash

اگر systemd مانع بوت شدن نصب شما میشود، میتوانید بهطور کامل از آن عبور کنید و مستقیماً یک شل راهاندازی کنید. این یکی از شدیدترین گزینههای بازیابی است، اما وقتی اهداف بازیابی معمولی در دسترس نیستند، میتواند فوقالعاده مفید باشد. ورودی بوت GRUB خود را ویرایش کنید و این عبارت را اضافه کنید:
init=/bin/bash
این به هسته لینوکس میگوید که Bash را بهجای راهاندازی سیستم init معمولی، بهعنوان PID 1 اجرا کند. در این صورت مستقیماً وارد یک شل روت خواهید شد، بدون سرویسهای معمول سیستم، مدیر ورود یا محیط دسکتاپ. نکتهای که باید به خاطر داشته باشید این است که فایلسیستم روت شما معمولاً بهصورت فقطخواندنی مونت میشود. قبل از تغییر فایلهای پیکربندی یا تعمیر نصب خود، آن را با دسترسی نوشتن دوباره مونت کنید:
mount -o remount,rw /
اکنون میتوانید فایلها را ویرایش کنید، پیکربندی سیستم را بررسی کنید و مشکلاتی را که مانع راهاندازی systemd میشوند برطرف کنید. وقتی کارتان تمام شد، تغییرات در انتظار را ذخیره کنید و سیستم را دوباره راهاندازی کنید:
sync
reboot -f
از این گزینه برای موقعیتهایی استفاده کنید که حالتهای نجات (rescue) و اضطراری (emergency) نمیتوانند شما را به یک محیط قابل استفاده برسانند. از آنجا که از systemd عبور میکنید، چندین دستور و سرویس آشنا در دسترس نخواهند بود و رویههای معمول خاموش کردن سیستم نیز کار نخواهند کرد.
#
رفع مشکلات بوت لینوکس با nomodeset
غیرفعال کردن تنظیمات اولیه حالت گرافیکی برای دور زدن مشکلات درایور

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

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























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