幾種引導(dǎo)異常導(dǎo)致無(wú)法正常開(kāi)機(jī)的解決辦法

今天 brtfs 崩潰了债沮。。本鸣。疫衩。原因是 APT 鎖住了,我強(qiáng)制重啟荣德,然后文件系統(tǒng)就崩了(進(jìn)入 initramfs 模式)闷煤。于是嘗試修復(fù)文件系統(tǒng)。


分以下幾個(gè)部份說(shuō)明:
一涮瞻、開(kāi)機(jī)出現(xiàn) grub rescue 指令模式
二鲤拿、開(kāi)機(jī)出現(xiàn)grub指令模式
三、可見(jiàn)到grub menu饲宛,但無(wú)法開(kāi)機(jī)
四、開(kāi)機(jī)進(jìn)入initramfs模式
五嗜价、處理grub的異常狀況

第5是前面四種錯(cuò)誤處理完后艇抠,進(jìn)入系統(tǒng)該接著處理的事情。不然下次開(kāi)機(jī)仍會(huì)發(fā)生一樣的問(wèn)題久锥。

解決方法一般是3步:
啟動(dòng)盤開(kāi)機(jī),chroot 到硬盤系統(tǒng),執(zhí)行 update-grub.

一家淤、開(kāi)機(jī)出現(xiàn) grub rescue 指令模式

假如看到grub rescue,表示mbr (master boot record)的資料瑟由,完全對(duì)應(yīng)不上磁盤的狀況絮重,所以無(wú)法辨別系統(tǒng)的所有分區(qū),更不用說(shuō)連grub menu都無(wú)法讀入歹苦。所以青伤,處理的方法就是幫他找到grub的設(shè)置。


grub rescue>ls
(hd0), (hd0,msdos3), (hd0,msdos2), (hd0,msdos1)

ls可以列出所有的硬碟與分區(qū)殴瘦,(hd0)是第一個(gè)硬碟狠角,(hd0,msdos1)是第一顆硬碟的第一個(gè)分區(qū)。以此類推蚪腋。輸入指令時(shí)丰歌,可以簡(jiǎn)寫成(hd0,1)表示。若是GPT分割屉凯,出現(xiàn)的會(huì)是(hd0,gpt0)的格式立帖。

接下來(lái)我們必須了解各分區(qū),到底是什麼分區(qū)悠砚?所以我們可以用ls列出文件列表判斷晓勇,格式如下:

grub recue> ls (hd0,1)/
grub recue> ls (hd0,2)/
grub recue> ls (hd0,3)/

確定各個(gè)分區(qū)那個(gè)是 / ,哪個(gè)是/boot,哪個(gè)是swap后宵蕉,就可以開(kāi)始繼續(xù)處理≡途玻現(xiàn)在假設(shè) / 是(hd0,3),/boot 是(hd0,2)羡玛。

額外說(shuō)明一下别智,(hd0,2)/grub下的i386-pc或者x86_64-efi目錄,是放置grub模組所在:前者出現(xiàn)在以mbr開(kāi)機(jī)的系統(tǒng)稼稿,后者出現(xiàn)在efi開(kāi)機(jī)的系統(tǒng) 薄榛。你可以嘗試 ls 看看,會(huì)發(fā)現(xiàn)列出一堆.mod檔让歼,這是開(kāi)機(jī)所需要的文件敞恋,稍候我們也會(huì)需要其中一個(gè)模組。



接下來(lái)是正式設(shè)置谋右,其實(shí)只有四行指令:

grub rescue> set root=(hd0,3)
grub rescue> set prefix=(hd0,2)/grub
grub rescue> insmod normal
grub rescue> normal

第一行指令:設(shè)置根目錄所在的分區(qū)
第二行指令:設(shè)置grub目錄硬猫。這樣他才知道哪里去找模組。此行設(shè)置錯(cuò)誤改执,第三行指令執(zhí)行時(shí)啸蜜,就無(wú)法載入模組。假如你的 /boot 沒(méi)有額外分割辈挂,那這行就要寫成 set prefix=(hd0,3)/boot/grub
第三行指令:載入normal模組
第四行指令:執(zhí)行normal模組
normal模組作用是什麼衬横?他會(huì)把一些指令,文件系統(tǒng)模組终蒂,及其他需要的模組自動(dòng)呼叫進(jìn)來(lái)蜂林。

假如你的grub.cfg沒(méi)有問(wèn)題,應(yīng)該就可以看見(jiàn)grub菜單了拇泣。提醒一點(diǎn)噪叙,這模式下,指令只要打錯(cuò)霉翔,只能開(kāi)機(jī)重來(lái)构眯,無(wú)法重打一次覆蓋之前的命令。

進(jìn)入系統(tǒng)后早龟,記得 處理grub的異常狀況

附注:我利用fdisk的expert mode重新變更分區(qū)的順序惫霸,產(chǎn)生這樣的問(wèn)題。

二葱弟、開(kāi)機(jī)出現(xiàn)grub指令模式

這類問(wèn)題通常發(fā)生在壹店,mbr可以找到對(duì)應(yīng)的磁盤與各分區(qū),卻無(wú)法找到可用有效的grub.cfg芝加。

這時(shí)候硅卢,相關(guān)的模組已經(jīng)載入射窒,所以比grub rescue好處理,打錯(cuò)可以重打一次覆蓋之前的命令将塑,也可以用上下鍵重復(fù)之前的命令脉顿。

同樣用 ls 找出相關(guān)的分區(qū),并檢查哪個(gè)分區(qū)是根目錄点寥,哪個(gè)分區(qū)是 /boot 艾疟,方法與之前的grub rescue相同。現(xiàn)在假設(shè) / 是(hd0,3)敢辩,/boot 是(hd0,2)



命令有四行:

grub> set root=(hd0,3)
grub> linux (hd0,2)/vmlinuz-3.11.0-18-generic root=/dev/sda3
grub> initrd (hd0,2)/initrd.img-3.11.0-18-generic
grub> boot

第一行:設(shè)置根目錄所在的分區(qū)
第二行:設(shè)置核心所在蔽莱,并設(shè)置根目錄所在分區(qū)
第三行:設(shè)置虛擬系統(tǒng)啟動(dòng)核心所在。
第四行:開(kāi)機(jī)

我怎麼知道核心的完整名稱為何戚长?用ls去查一下就可以了盗冷。
假如你的 /boot 沒(méi)有額外分割,第二行要改成 (hd0,3)/boot/vmlinuz-3.11.0-18-generic同廉,且后面指定root=/dev/sda3可以省略仪糖;第三行要改成(hd0,3)/boot/initrd.img-3.11.0-18-generic。

假如你系統(tǒng)的其他部份沒(méi)有問(wèn)題迫肖,應(yīng)該就會(huì)進(jìn)入系統(tǒng)了锅劝。不會(huì)見(jiàn)到grub菜單。

進(jìn)入系統(tǒng)后咒程,記得 處理grub的異常狀況

注:我刪除grub.cfg來(lái)重現(xiàn)這種錯(cuò)誤鸠天。

三讼育、可見(jiàn)到grub menu帐姻,但無(wú)法開(kāi)機(jī)

系統(tǒng)可以找到grub.cfg,但是上頭的資料有問(wèn)題奶段,無(wú)法找到核心饥瓷。常發(fā)生在變更分割表后,因grub無(wú)法辨識(shí)uuid或者label造成.



在grub menu可選擇'e'痹籍,對(duì)menuentry進(jìn)行修改

修改前呢铆,大約會(huì)如下:

setparams 'Ubuntu'
recordfail
load_video
insmod gzio
insmod part_msdos
insmod ext2
set root='hd1,msdos2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos2 --hint-baremetal=ahci1,msdos2 1ad522f5-2d6f-4a74-b827-245e168e8b35
else
search --no-floppy --fs-uuid --set=root 1ad522f5-2d6f-4a74-b827-245e168e8b35
fi
echo'Loading Linux 3.11.0-18 ...'
linux/boot/vmlinuz-3.11.0-18-generic root=UUID=1ad522f5-2d6f-4a74-b827-245e168e8b35 ro quiet splash $vt_handoff
echo'Loading initial ramdisk ...'
initrd/boot/initrd.img-3.11.0-18-generic

可以把他修改成最基本的樣式:

setparams 'Ubuntu'
set root=(hd0,3)
linux (hd0,2)/vmlinuz-3.11.0-18-generic root=/dev/sda3
initrd (hd0,2)/initrd.img-3.11.0-18-generic

輸入完成后,按Ctrl-x或者F10開(kāi)機(jī)蹲缠。
是不是很像 開(kāi)機(jī)出現(xiàn)grub指令模式 的處理方法棺克?因?yàn)閮烧叨际莋rub.cfg的異常所造成,所以必須告訴grub核心在哪里线定。

還有一個(gè)小技巧娜谊,其實(shí)兩者的處理方式可以一模一樣:按下Ctrl-c或者F2,就會(huì)進(jìn)入指令模式斤讥,與 開(kāi)機(jī)出現(xiàn)grub指令模式 的處理方法 完全相同纱皆。若是你搞不清楚哪個(gè)分區(qū)是/boot?哪個(gè)是根目錄?指令模式會(huì)比較好用派草。

進(jìn)入系統(tǒng)后搀缠,記得 處理grub的異常狀況。

注:我修改grub.cfg來(lái)造成這樣的問(wèn)題近迁。

四艺普、開(kāi)機(jī)進(jìn)入initramfs模式

假如開(kāi)機(jī)過(guò)程,一直到載入核心都沒(méi)問(wèn)題钳踊,但是其他的文件系統(tǒng)卻無(wú)法正常掛載衷敌,導(dǎo)致開(kāi)機(jī)失敗,就會(huì)進(jìn)入initramfs模式拓瞪。

什麼是initramfs缴罗?就是initrd.img,他其實(shí)就是一個(gè)核心的內(nèi)存版祭埂,開(kāi)機(jī)過(guò)程中面氓,直接放上內(nèi)存,形成一個(gè)虛擬的系統(tǒng)蛆橡,然后再把其他的文件系統(tǒng)掛載進(jìn)來(lái)舌界,換成真正的核心來(lái)控制。

所以你可以 ls 看一下泰演,就會(huì)發(fā)現(xiàn)就是一個(gè)類似linux系統(tǒng)的文件結(jié)構(gòu)呻拌。


但他真的很簡(jiǎn)陋,你可以到bin與sbin下看看睦焕,就知道這個(gè)系統(tǒng)有多簡(jiǎn)陋藐握。所以我們必須把原有磁盤中的文件系統(tǒng)掛載進(jìn)來(lái)。其實(shí)這個(gè)過(guò)程垃喊,就跟真的開(kāi)機(jī)過(guò)程類似猾普。小心,initramfs下不會(huì)顯示所在的目錄本谜,小心「迷路」初家。

blkid可以檢視有哪些磁盤與分區(qū)(沒(méi)有fdisk可用...),我們可以利用mount掛載進(jìn)來(lái)看乌助。我們假設(shè)你已經(jīng)確認(rèn):/ 在/dev/sda3溜在,/boot在/dev/sda2

mkdir mnt
mount /dev/sda3 /mnt
mount /dev/sda2 /mnt/boot

這兩個(gè)順序不要顛倒,因?yàn)?boot是在根目錄之下的

接著需要把一些必要設(shè)備檔他托、系統(tǒng)檔掖肋、與內(nèi)存掛載到真實(shí)的根目錄去,以提供真實(shí)的根目錄使用上祈。

mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys
mount -t proc proc /mnt/porc

假如你還有其他分區(qū)培遵,也要一并掛載到相對(duì)應(yīng)的目錄浙芙。

再來(lái)就要把根目錄切換到真實(shí)的根目錄去了:

chroot /mnt

好了,現(xiàn)在你應(yīng)該看到每行最前面的initramfs已經(jīng)變成root@(none)籽腕,你已經(jīng)開(kāi)始使用真實(shí)的根目錄嗡呼,很多工具也回來(lái)了。如果你對(duì)系統(tǒng)夠了解皇耗,加載模組南窗,連上網(wǎng)路都是可行的。
稍微解釋一下chroot郎楼。這個(gè)指令會(huì)把你的根目錄切換到你指定的地方万伤,切換過(guò)去后,你會(huì)從這里開(kāi)始你的root身份呜袁,在這里你擁有所有的權(quán)限敌买。這個(gè)技巧很重要,不僅用在修復(fù)系統(tǒng)阶界。到目前為止虹钮,你所作的事,就跟真實(shí)的開(kāi)機(jī)流程類似膘融。有興趣的人芙粱,不妨多了解一點(diǎn)。

不過(guò)現(xiàn)在首要的事情氧映,是 處理grub的異常狀況(請(qǐng)看第五段)春畔,因?yàn)槟阋呀?jīng)進(jìn)入系統(tǒng)了,雖然功能不全岛都,但已經(jīng)足以讓你處理問(wèn)題了律姨。

這里額外提供一個(gè)技巧,blkid可以查看磁盤分區(qū)的uuid疗绣,比對(duì) /etc/fstab 后线召,可能你會(huì)需要修改 /etc/fstab 里的數(shù)據(jù)铺韧。為了方便修改多矮,你可以先把查詢的結(jié)果放在 /etc/fstab 的后面:
blkid >> /etc/fstab



上下比對(duì)修改應(yīng)該不會(huì)太難。最后記得把舊的設(shè)置哈打,前面加上'#'塔逃,這樣才不會(huì)沖突。存檔料仗。鍵入sync湾盗。重新開(kāi)機(jī)。(因?yàn)楹芏嗄=M沒(méi)有掛上立轧,你無(wú)法reboot或shutdown格粪,只能直接電源鍵關(guān)機(jī)躏吊。)

假如都正常了,應(yīng)該就會(huì)進(jìn)入系統(tǒng)帐萎。大多數(shù)的狀況下比伏,不需要額外的處理。因?yàn)槟阋呀?jīng)處理完了疆导。

注:我利用tune2fs修改分區(qū)的uuid赁项,來(lái)造成這樣的問(wèn)題。

五澈段、處理grub的異常狀況

會(huì)出現(xiàn)grub異常狀況悠菜,幾乎都與掛載設(shè)置,grub設(shè)置败富,或磁盤開(kāi)機(jī)區(qū)有關(guān)悔醋,所以請(qǐng)?zhí)幚硪韵氯拢?/p>

  1. 檢查并修改 /etc/fstab :
    /etc/fstab 是系統(tǒng)掛載分區(qū)的必要文件。請(qǐng)確認(rèn)里面的uuid是否與實(shí)際狀況相符兽叮?實(shí)際的uuid可以藉由sudo blkid取得篙顺。若有不符的狀況,請(qǐng)修改〕湓瘢現(xiàn)在ubuntu已經(jīng)默認(rèn)使用uuid來(lái)辨識(shí)分區(qū)德玫,這種辨識(shí)方式,可以避免系統(tǒng)的混淆椎麦。當(dāng)然他仍支持以往用設(shè)備名稱辨識(shí)的方法宰僧。

  2. 更新 /boot/grub/grub.cfg :

sudo update-grub
  1. 重新安裝grub到磁盤開(kāi)頭的開(kāi)機(jī)區(qū)
sudo grub-install /dev/sda

若有問(wèn)題,可能需要強(qiáng)制安裝

sudo grub-install /dev/sda --force

若不是/dev/sda观挎,請(qǐng)自行修改琴儿。

以下三個(gè)參數(shù)要注意,必要時(shí)要特別加入

--boot-directory=[path]
--efi-directory=[path]
--uefi-secure-boot

詳情請(qǐng)man grub-install


轉(zhuǎn)載:http://tieba.baidu.com/p/2910461207

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末嘁捷,一起剝皮案震驚了整個(gè)濱河市造成,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌雄嚣,老刑警劉巖晒屎,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異缓升,居然都是意外死亡鼓鲁,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門港谊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)骇吭,“玉大人,你說(shuō)我怎么就攤上這事歧寺≡镎” “怎么了棘脐?”我有些...
    開(kāi)封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)龙致。 經(jīng)常有香客問(wèn)我荆残,道長(zhǎng),這世上最難降的妖魔是什么净当? 我笑而不...
    開(kāi)封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任内斯,我火速辦了婚禮,結(jié)果婚禮上像啼,老公的妹妹穿的比我還像新娘俘闯。我一直安慰自己,他們只是感情好忽冻,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布真朗。 她就那樣靜靜地躺著,像睡著了一般僧诚。 火紅的嫁衣襯著肌膚如雪遮婶。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天湖笨,我揣著相機(jī)與錄音旗扑,去河邊找鬼。 笑死慈省,一個(gè)胖子當(dāng)著我的面吹牛臀防,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播边败,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼袱衷,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了笑窜?” 一聲冷哼從身側(cè)響起致燥,我...
    開(kāi)封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎排截,沒(méi)想到半個(gè)月后嫌蚤,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡匾寝,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年搬葬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了荷腊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片艳悔。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖女仰,靈堂內(nèi)的尸體忽然破棺而出猜年,到底是詐尸還是另有隱情抡锈,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布乔外,位于F島的核電站床三,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏杨幼。R本人自食惡果不足惜撇簿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望差购。 院中可真熱鬧四瘫,春花似錦、人聲如沸欲逃。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)稳析。三九已至洗做,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間彰居,已是汗流浹背诚纸。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留陈惰,地道東北人咬清。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像奴潘,于是被迫代替她去往敵國(guó)和親旧烧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容