سلام
کرنل پنیک تاحالا چندبار برای من اتّفاق افتاده که مجموع تجربیاتم رو برای حلّش، جمع آوری کردم. تصمیم گرفتم تا اون ها رو به این وسیله در اختیار دوستانم هم قرار بدم.
در ادامه، فرض بر این است که یک آرچ که میهمان یک آرچ دیگر است، دچار کرنل پنیک شده است:
مرحله صفر- اگر اطّلاعات مهمی دارید، با یک دیسک گنو/لینوکس chroot کنید و آن ها را بردارید (گرچه برای کسی که یک بار آرچ را نصب کرده باشد، اتفاق بدی نخواهد افتاد).
مرحله نیم- سیستم عامل کرنل پنیک شده را start کنید. از شاخه Device، یکی از زبانه های CD/DVD Devices یا USB Devices را برگزیده و Deviceی را که قرار است بوت دیسک از آن انجام شود، انتخاب کنید. در ادامه فرض کرده ایم که یک دیسک نوری حاوی توزیع گنو/لینوکس bootable است.
مرحله۱- ابتدا روی آپشن سیستم عامل کرنل پنیک شده کلیک راست می کنیم و از منوی ستینگ و سپس زبانه system، گزینه firdt 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 کنید. اگر خبری از کرنل پنیک نبود، که کار تمام است. یک خروجی مشابه
نشان دهنده حل مساله است که همانطور که توضیح داده، یک و نیم دقیقه طول می کشد تا همه چیز به حالت اوّل بازگردد.
مرحله۸− درحالتی که هنوز کرنل پنیک مرتفع نشده، از ابتدا تمام مراحل قبل را- به استثنای مرحله (4) که یک بار انجام دادن آن کافیست،- انجام دهید و بعد از دستور
pacman -U /var/cache/pacman/pkg/linux-4.0.5-1-x86_64.pkg.tar.xz
در مرحله آخر، دستور
pacmasn -Syu
را زده و سپس از chroot خارج شده و ریبوت کنید (این مرحله برای صرفه جویی در مصرف ترافیک اینترنت جدا شده است).
توجّه: با توجّه به خروجی مرحله (۵)، گاهی نیاز به استفاده از دستور
mkinitcpio -p linux
در مرحله (۶) نیست.