系統(tǒng)之家 - 系統(tǒng)光盤(pán)下載網(wǎng)站!

當(dāng)前位置:系統(tǒng)之家 > 系統(tǒng)教程 > 如何修復(fù)一個(gè)Panic的Linux內(nèi)核?

如何修復(fù)一個(gè)Panic的Linux內(nèi)核?

時(shí)間:2017-06-20 11:19:13 作者:chunhua 來(lái)源:系統(tǒng)之家 1. 掃描二維碼隨時(shí)看資訊 2. 請(qǐng)使用手機(jī)瀏覽器訪問(wèn): https://m.xitongzhijia.net/xtjc/20170620/100601.html 手機(jī)查看 評(píng)論

  如何修復(fù)一個(gè)Panic的Linux內(nèi)核?Linux是一個(gè)一體化內(nèi)核(monolithic kernel)系統(tǒng),一些用戶在操作Linux系統(tǒng)的過(guò)程中,有時(shí)候由于操作不當(dāng),會(huì)導(dǎo)致Linux內(nèi)核不能正常工作。最近就有一位用戶由于操作問(wèn)題,使得內(nèi)核啟動(dòng)中止于Panic狀態(tài),那么要如何修復(fù)一個(gè)Panic狀態(tài)的Linux內(nèi)核呢?下面我們一起來(lái)看看。

如何修復(fù)一個(gè)Panic的Linux內(nèi)核?

  問(wèn)題描述:

  為了配置完全的靜默啟動(dòng),用戶對(duì)工作計(jì)算機(jī)上運(yùn)行的Linux執(zhí)行了不當(dāng)?shù)膍kinitcpio操作,原因是忽略了mkinitcpio.conf文件中的一處邏輯錯(cuò)誤。這使得mkinitcpio生產(chǎn)了新的內(nèi)核文件,但這個(gè)內(nèi)核文件不能正常工作。重啟的時(shí)候,內(nèi)核啟動(dòng)中止于Panic狀態(tài)。

  一般情況下,新內(nèi)核不能正常工作時(shí),可以通過(guò)使用initramfs內(nèi)核文件的fallback版本來(lái)臨時(shí)啟動(dòng)系統(tǒng),甚至可以直接將fallback版本覆蓋回去以回退更改,但這次要命的是,mkinitcpio同時(shí)修改了vmlinuz內(nèi)核文件,而且vmlinuz沒(méi)有fallback版本。對(duì)于一般用戶,可以直接重裝系統(tǒng)解決;但是該用戶的工作站環(huán)境配置相當(dāng)復(fù)雜,這意味著除了可能損失用戶的工作文件之外,用戶還需要花費(fèi)大量額外的時(shí)間來(lái)重配開(kāi)發(fā)環(huán)境。

  注意:本教程之“修復(fù)”,指“嘗試回退毀滅性的人為更改”,故不可用于恢復(fù)不知原因的內(nèi)核崩潰。

  如何修復(fù)一個(gè)Panic的Linux內(nèi)核?

  一、從LiveCD啟動(dòng)并查看磁盤(pán)

  憑著兼職Linux服務(wù)器運(yùn)維那段時(shí)間積累的經(jīng)驗(yàn),小編立即想到可以用LiveCD啟動(dòng)來(lái)獲得一個(gè)臨時(shí)的、用于修復(fù)內(nèi)核的Linux環(huán)境。

  小編使用的是Arch Linux 64位版,所以小編從從Arch Linux的LiveCD啟動(dòng)。正確進(jìn)入LiveCD內(nèi)建的root用戶之后,我們需要查看自己的主硬盤(pán)的設(shè)備名。執(zhí)行fdisk -l,在小編的情況下,小編的主硬盤(pán)、掛載至根目錄的分區(qū)對(duì)應(yīng)的設(shè)備文件是/dev/sdb2。

  二、chroot至硬盤(pán)上的系統(tǒng)根目錄

  要chroot到硬盤(pán)上的系統(tǒng)根目錄,并能正常調(diào)用硬盤(pán)上的系統(tǒng)組件對(duì)硬盤(pán)上的系統(tǒng)作出更改,我們首先要手動(dòng)掛載硬盤(pán)上的根分區(qū)。執(zhí)行(小編的設(shè)備文件是/dev/sdb2):

  1. 01mount /dev/sdb2 /mnt
復(fù)制代碼
mount /dev/sdb2 /mnt

  先不要急。這時(shí)候chroot到/mnt雖然能進(jìn)入硬盤(pán)上主系統(tǒng)的bash,但是你幾乎不能正確完成任何復(fù)雜的任務(wù),因?yàn)檫有一些重要的目錄沒(méi)有掛載。我們執(zhí)行指令,分別掛載proc目錄、/sys目錄、/dev目錄和/run目錄。進(jìn)入/mnt,分別執(zhí)行:

  1. 01mount -t proc proc proc/
復(fù)制代碼
mount -t proc proc proc/
  1. 01mount --rbind /sys sys/
復(fù)制代碼
mount --rbind /sys sys/
  1. 01mount --rbind /dev dev/
復(fù)制代碼
mount --rbind /dev dev/
  1. 01mount --rbind /run run/
復(fù)制代碼
mount --rbind /run run/

  這些目錄的作用分別是:

  proc目錄:虛擬的、Procfs格式的文件系統(tǒng),用于存放進(jìn)程狀態(tài)文件(在Linux下,這些文件表面看起來(lái)都是文本文件,實(shí)際上是進(jìn)程狀態(tài)的文件映射);

  /sys目錄:對(duì)于Arch Linux,這是一個(gè)類(lèi)似proc目錄的、Sysfs格式的虛擬文件系統(tǒng),用于儲(chǔ)存連接到系統(tǒng)的設(shè)備文件;對(duì)于傳統(tǒng)Unix和類(lèi)Unix,它是一個(gè)指向內(nèi)核代碼樹(shù)的軟鏈接;

  /dev目錄:儲(chǔ)存設(shè)備文件,比如你的硬盤(pán)就是/dev/sdXY之類(lèi)的;

  /run目錄:存放最近的啟動(dòng)之后系統(tǒng)的部分信息;

  掛載了這些東西之后,我們可以chroot到我們的主硬盤(pán)的根目錄了:

  1. 01chroot /mnt
復(fù)制代碼
chroot /mnt

  對(duì)于小編來(lái)說(shuō),小編只需要修改mkinitcpio.conf文件并重新執(zhí)行mkinitcpio操作,就能重新生成正確的內(nèi)核文件。一般的,如果是錯(cuò)誤地修改了配置導(dǎo)致的內(nèi)核Panic,這個(gè)環(huán)境可以解決大部分問(wèn)題。

  三、一些技巧

  1、許多配置文件在LiveCD里的那個(gè)系統(tǒng)里有正確的版本或范本,如果不記得正常的時(shí)候是什么樣子的,可以參照一下它們;

  2、對(duì)于Arch Linux,可以在不chroot到/mnt的情況下,直接使用pacstrap指令對(duì)/mnt這個(gè)掛載點(diǎn)進(jìn)行軟件包管理;

  3、可以在兩個(gè)tty下操作,這樣在chroot到/mnt下之后依然能從LiveCD的文件系統(tǒng)里向/mnt轉(zhuǎn)移文件。

  對(duì)于Panic內(nèi)核崩潰問(wèn)題的解決辦法就給大家分享到這邊了,對(duì)于不知原因的Linux內(nèi)核崩潰,該方法是不奏效的。有遇到同樣情況的伙伴,可以按照上述教程來(lái)解決。

標(biāo)簽 Linux內(nèi)核

發(fā)表評(píng)論

0

沒(méi)有更多評(píng)論了

評(píng)論就這些咯,讓大家也知道你的獨(dú)特見(jiàn)解

立即評(píng)論

以上留言僅代表用戶個(gè)人觀點(diǎn),不代表系統(tǒng)之家立場(chǎng)

其他版本軟件

熱門(mén)教程

人氣教程排行

Linux系統(tǒng)推薦

掃碼關(guān)注
掃碼關(guān)注

掃碼關(guān)注 官方交流群 軟件收錄