Kernel panic، یازده و نیم دقیقه

crash-kernel-panic

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

ایده اصلی:

برمبنای این که سینک کرنل با برخی از بسته/ کتابخانه ها دچار مشکل شده و یا بعلاوه، برخی از بسته/ کتابخانه ها تخریب یا حذف شده اند؛ با یک توزیع گنو/لینوکس( در اینجا آرچ) به ریشه توزیع فعلی کرنل پنیک شده chroot کرده و با جست و جو در کش پکمن، فایل tar کرنل پنیک شده را یافته و آن را بازنصب می کنیم. درحالت سخت تر، بسته/کتابخانه های تخریب/مفقود شده را هم از کش پکمن یافته و آن ها هم untar کرده و در دایرکتوری ای که باید باشند، قرار می دهیم. درحالیکه کش پکمن به هر دلیلی پاک شده باشد، گرچه حل مساله سخت تر است، اما شدنی است که در بخش بعد به آن خواهیم پرداخت.

در ادامه، یک آرچ که میهمان یک آرچ دیگر است، دچار کرنل پنیک شده است.

مرحله صفر- اگر اطّّلاعات مهمی دارید، با یک دیسک گنو/لینوکس chroot کنید و آن ها را بردارید (گرچه برای کسی که یک بار آرچ را نصب کرده باشد، اتفاق بدی نخواهد افتاد).

مرحله نیم- سیستم عامل کرنل پنیک شده را start کنید. از شاخه Device، یکی از زبانه های CD/DVD Devices یا USB Devices را برگزیده و Deviceی را که قرار است بوت از آن انجام شود، انتخاب کنید. در ادامه فرض کرده ایم که یک دیسک نوری حاوی توزیع گنو/لینوکس bootable است.

مرحله۱- ابتدا روی آپشن سیستم عامل کرنل پنیک شده کلیک راست می کنیم و از منوی ستینگ و سپس زبانه system، گزینه first boot option را روی CD/DVD قرار می دهیم. بعد، سیستم عامل کرنل پنیک شده را راه می اندازیم تا سی دی آرچ بوت شود.

مرحله۲- در این مرحله، وارد نصّاب بوت می شویم. سپس تمام پارتیشن های موجود را ماونت می کنیم. من ابتدا با دستور

lsblk

پارتیشن های خود را یادآوری کرده و سپس همه آن ها را ماونت می کنم.

mount /dev/sda2 /mnt 
mount /dev/sda4 /mnt

پارتیشن /dev/sdaی من swap است که در مورد آن به صورت زیر عمل می کنم.

mkswap /dev/sda3
swapon /dev/sda3 

مرحله۳- حال یک دایرکتوری برای ماونت کردن پارتیشن روت ایجاد کرده و پارتیشن روت را در آن ماونت کنید:

mkdir /mnt/arch
mount /dev/sda2 /mnt/arch

اکنون بایستی به root سیستم کرنل پنیک شده، chroot کنید. این کار را با دستور زیر انجام دهید.

arch-chroot /mnt/arch

توجّه کنید که تا قبل از این مرحله، کنار تمام دستورات،

root@archiso~#

قرار دارد ولی بعد از chroot، وارد شل روت سیستم کرنل پنیک شده خواهید شد.

مرحله۴- در این مرحله، باید مطمین شویم تا pacman می تواند به درستی کار خود را انجام دهد. درواقع ممکن است یک یا چند بسته یا کتابخانه که پکمن به آن ها وابسته است، تخریب یا حذف شده باشند. دستور

pacman --version

را وارد کنید. یک پیام شبیه به

 .--.                  Pacman v4.2.1 - libalpm v9.0.1
/ _.-' .-.  .-.  .-.   Copyright (C) 2006-2014 Pacman Development Team
\  '-. '-'  '-'  '-'   Copyright (C) 2002-2006 Judd Vinet
 '--'
                       This program may be freely redistributed under
                       the terms of the GNU General Public License.

نشان دهنده این است که هیچ مشکلی برای گذر به مرحله (۵) وجود ندارد. درغیراینصورت، متن پیام خطا دربرگیرنده بسته/کتابخانه (های) تخریب شده است. فرض کنیم نام یکی از آن بسته/کتابخانه (ها) مثلا mesal باشد. در اینصورت با دستور

ls -l /var/cache/pacman/pkg/mesal*

مطمین شوید که فایل compressed شده آن در کش پکمن موجود است. سپس تحقیق کنید که این فایل بایستی در چه مسیری درحالت عادی قرار داشته باشد. مثلا در مسیر /masir. سپس دستور زیر را وارد کنید.

cp /var/cache/pacman/pkg/mesal* /masir
tar -xf /masir/mesal*

حال، دوباره خروجی دستور

pacman --version

را ملاحظه کنید.

مرحله۵- اکنون موقع آن است که کرنل سیستم کرنل پنیک شده را بازگردانید. ابتدا باید از جزییات دقیق کرنل پنیک شده، اطلاع حاصل کنید. من اینکار را با زدن دستور

find /var/cache -name linux-

و دوبار زدن دکمه tab متوالی، انجام می دهم. چند فایل که یکی از آن ها عبارت از

linux-4.0.5-1-x86_64.pkg.tar.xz

است، یافته خواهند شد( چنین فایلی برای شما ممکن است دارای عددهای متفاوتی باشد).

حال با دستور زیر، این کرنل را بازگردانی می کنم.

pacman -U /var/cache/pacman/pkg/linux-4.0.5-1-x86_64.pkg.tar.xz

پیغام زیر نشان دهنده اتمام موفقیت آمیز فرایند است.

مرحله۶- اکنون دستور زیر را وارد کنید.

mkinitcpio -p linux

که خروجی مشابه

دارد. سپس

grub-mkconfig -o /boot/grub/grub.cfg

که خروجی مشابه

دارد.

مرحله۷- حالا ctrl+D را زده و از حالت chroot خارج شوید. سپس

دستور

umount -R /mnt
reboot

را بزنید. توجه کنید که بعد از زدن این دستور، منتظر باشید تا یک بار دیگر سی دی آرچ بوت شود. سپس سیستم مجازی را power off کرده و تیک گزینه CD/DVD را از منوی boot order بردارید. اکنون سیستم عامل مجازی را start کنید. اگر خبری از کرنل پنیک نبود، که کار تمام است. یک خروجی مشابه

نشان دهنده حل مساله است که همانطور که توضیح داده، یک و نیم دقیقه طول می کشد تا همه چیز به حالت اوّل بازگردد.

مرحله۸− درحالتی که هنوز کرنل پنیک مرتفع نشده، از ابتدا تمام مراحل قبل را انجام دهید و بعد از دستور

pacman -U /var/cache/pacman/pkg/linux-4.0.5-1-x86_64.pkg.tar.xz

در مرحله آخر، دستور

pacmasn -Syu

را زده و سپس از chroot خارج شده و ریبوت کنید (این مرحله برای صرفه جویی در مصرف ترافیک اینترنت جدا شده است).

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *