Grub2中文指南5---重装或移除Grub2
重新安裝
GRUB 2
有時(shí)使用者可能需要移動(dòng)或是重新安裝
GRUB 2。當(dāng)用戶遇到空白屏幕上只有
GRUB
字樣,沒有提示符號,也沒有辦法輸入指令的時(shí)候,就需要重新安裝
GRUB 2。這通常發(fā)生在開機(jī)裝置的
MBR
區(qū)被修改的時(shí)候,例如在安裝
Ubuntu
之后才安裝
Windows。此外,若用戶完全無法開機(jī)進(jìn)入操作系統(tǒng),甚至無法使用救援模式,那么也許必須要重新完全安裝
GRUB 2。
由
LiveCD
重新安裝
若您無法從
GRUB 2
開機(jī),請參考開機(jī)問題及救援模式小節(jié)。若需要重新安裝,則依照這些程序進(jìn)行。這里有提出兩個(gè)方案;兩者皆需要從
LiveCD
開機(jī)(Ubuntu
9.10, Karmic Koala
或更新版本)。若第一個(gè)方案沒有作用,就進(jìn)行第二方案,這會(huì)比較復(fù)雜且包含更多選項(xiàng)及指令。
最簡易方案
-
從
LiveCD
復(fù)制
GRUB 2
檔案
這是一個(gè)從故障的
GRUB 2
系統(tǒng)復(fù)原的快速及簡單方法。會(huì)使用終端機(jī)來輸入指令,而用戶必須知道被安裝之系統(tǒng)上的裝置名稱/分割區(qū)(sda1,
sdb5
等等)。有問題的分割區(qū)將會(huì)從
LiveCD
來定位及掛載。相關(guān)檔案接下來會(huì)由
LiveCD
來復(fù)制到合適的地點(diǎn)及
MBR
中。跟之后的方法比起來,這樣需要最少的步驟和較少的指令輸入。
1.
開機(jī)進(jìn)入
LiveCD
桌面(Ubuntu
9.10
或更新版)。
2.
從選單中選擇應(yīng)用程序,附屬應(yīng)用程序,終端機(jī)來啟動(dòng)終端機(jī)。
3.
確認(rèn)
Ubuntu
安裝之分割區(qū)。fdisk
的選項(xiàng)「-l」是一個(gè)小寫的「L」。
sudo fdisk -l
若使用者無法確定分割區(qū),可以找一個(gè)擁有合適的大小或是格式的。
執(zhí)行
sudo blkid
也許能提供更多的信息來協(xié)助找到適合的分割區(qū),特別是若分割區(qū)有名稱標(biāo)記。裝置/磁盤是由
sdX
來指定,X
即為指定的裝置。sda
是第一個(gè)裝置,sdb
是第二個(gè),依此類推。絕大多數(shù)的使用者之
MBR
會(huì)被安裝在
sda,系統(tǒng)中的第一個(gè)磁盤。分割區(qū)是由
Y
指定。第一個(gè)分割區(qū)是
1
,第二個(gè)是
2。注意到裝置和分割區(qū)的計(jì)算法是不同的。
4.
掛載包含
Ubuntu
安裝的分割區(qū)。
sudo mount /dev/sdXY
/mnt
范例:sudo
mount /dev/sda1
注意:若使用者有單獨(dú)的
/boot
分割區(qū),必須要掛載到
/mnt/boot
注意:若使用者有單獨(dú)的
/home
分割區(qū),必須掛載到
/mnt/home。加密的
home
分割區(qū)應(yīng)能正常作業(yè)。
5.
執(zhí)行下面所列出的
grub-install
指令。這樣將會(huì)在掛載的分割區(qū)上的適當(dāng)位置重新安裝
GRUB 2
檔案,以及指定裝置上的
MBR。
sudo grub-install
--root-directory=/mnt/ /dev/sdX
范例:sudo
grub-install --root-directory=/mnt/ /dev/sda
6.
重新啟動(dòng)
7.
用
sudo update-grub
指令更新
GRUB 2
選單
8.
若用戶想知道為何系統(tǒng)會(huì)失敗,參考底下的回復(fù)后指令小節(jié)。
方案
2 -
從已安裝的分割區(qū)復(fù)制
GRUB 2
檔案
這是一個(gè)快速且簡單的方法來回復(fù)系統(tǒng)損壞的
GRUB 2
檔案。有問題的分割區(qū)將會(huì)從
LiveCD
來定位及掛載。相關(guān)檔案接下來會(huì)由受損系統(tǒng)的
/boot/grub
目錄復(fù)制到適當(dāng)?shù)奈恢靡约?
MBR
中。這樣需要較少的步驟及較少的指令輸入,跟之后的
CHROOT
方案比較起來。擁有分散系統(tǒng)分割區(qū)的用戶,例如單獨(dú)的
/boot
分割區(qū),或其他特殊情況,使用
CHROOT
方案應(yīng)該會(huì)有比較好的結(jié)果。
1.
開機(jī)進(jìn)入
LiveCD
桌面(Ubuntu
9.10
或更新版)。
2.
掛載您
Ubuntu
安裝所在的分割區(qū)。
a.
從「位置」選單,點(diǎn)選您的
Ubuntu
安裝之分割區(qū)來掛載。
o
若未辨識(shí)出分割區(qū),找找看有合適的大小或名稱的。
o
一旦掛載后,用戶應(yīng)該會(huì)看到
Ubuntu
系統(tǒng)目錄例如
/boot。
從選單中的「應(yīng)用程序」,「附屬應(yīng)用程序」,「終端機(jī)」來啟動(dòng)終端機(jī)。
執(zhí)行如底下說明的
grub-setup -d
指令。這樣會(huì)重新安裝
GRUB 2
檔案到掛載分割區(qū)的適當(dāng)位置以及指定裝置的
MBR
中。
.
參考「位置」中的位置列來決定掛載點(diǎn)。將指令中的
XXXX
以
UUID
取代,若分割區(qū)并不是掛載在
/media
之下,則用正確的位置取代
/media/XXXX。選定的位置可能是一個(gè)
UUID,或是一個(gè)名稱標(biāo)簽,若用戶有自行建立的話(參考注意事項(xiàng))。
a.
若位置窗口的樣式和圖片里的不一樣,按下左邊的鉛筆圖標(biāo)來更改樣式。(譯者注:這里的圖片是舊版
Ubuntu
的樣式,在
10.04
以后請按
Ctrl-L
來更改。)
b.
以鼠標(biāo)選取
UUID/位置來復(fù)制內(nèi)容。在終端機(jī)中按下鼠標(biāo)中鍵來貼上。若使用鍵盤的話,按
CTRL-C
來復(fù)制位置并使用
CTRL-SHIFT-V
來貼上至終端機(jī)中。
c.
裝置/磁盤是由
sdX
來指定,X
即是指定的裝置。sda
是第一個(gè)裝置,sdb
是第二個(gè)裝置,余類推。大部分使用者的
MBR
應(yīng)該都是安裝在
sda
中,即是系統(tǒng)中的第一個(gè)裝置。
sudo grub-setup -d
/media/XXXX/boot/grub /dev/sda
范例:
sudo
grub-setup -d
/media/7848138a-41a0-4eba-8aed-d1b625ac8759/boot/grub
/dev/sda
d.
若使用者收到一個(gè)「error:
Cannot open /boot/grub/device.map」訊息,加上一個(gè)
-m
選項(xiàng)以及
device.map
的路徑至指令中,如下:
sudo grub-setup -d
/media/XXXXX/boot/grub -m /media/XXXXX/boot/grub/device.map
/dev/sda
范例:
sudo
grub-setup -d
/media/7848138a-41a0-4eba-8aed-d1b625ac8759/boot/grub -m
/media/7848138a-41a0-4eba-8aed-d1b625ac8759/boot/grub/device.map
/dev/sda
e.
使用
grub-setup
尚有其他的選項(xiàng)可使用。在終端機(jī)中,輸入
grub-setup --help
即可列出一份所有選項(xiàng)的說明文件。
f.
也許您會(huì)重復(fù)收到「error:
Cannot open /boot/grub/device.map」訊息。如果持續(xù)發(fā)生,試著重新啟動(dòng)。使用
UUID
方法實(shí)際上應(yīng)該會(huì)有作用,但會(huì)不正確的丟出一個(gè)錯(cuò)誤訊息。使用名稱卷標(biāo)似乎不會(huì)發(fā)生這樣重復(fù)出現(xiàn)錯(cuò)誤訊息的問題。
重新啟動(dòng)
使用
sudo update-grub
來更新
GRUB 2
選單
若用戶想要查明為何系統(tǒng)開機(jī)失敗,參考以下的回復(fù)后指令小節(jié)。
Ubuntu 9.10
引進(jìn)一個(gè)新的應(yīng)用程序,能夠簡單的指定標(biāo)簽給現(xiàn)存的分割區(qū)。從選單中的「系統(tǒng)」,「管理」中執(zhí)行磁盤公用程序來使用。
方案
3 - CHROOT
此方案安裝會(huì)使用
chroot
指令來存取受損系統(tǒng)的檔案。一旦執(zhí)行了
chroot
指令,LiveCD
會(huì)將損壞系統(tǒng)的
/
(根目錄)當(dāng)作是目前自己所使用的。在
chroot
環(huán)境中執(zhí)行的指令會(huì)影響受損系統(tǒng)的文件系統(tǒng),而不是
LiveCD
的。
1.
開機(jī)進(jìn)入
LiveCD
桌面(Ubuntu
9.10
或更新版)。注意此
LiveCD
必須要與您現(xiàn)在欲修復(fù)系統(tǒng)的版本相同
-
無論
32-bit
或是
64-bit(否則
chroot
會(huì)失敗)。
2.
開啟終端機(jī)
-
應(yīng)用程序,附屬應(yīng)用程序,終端機(jī)。
3.
確認(rèn)您的標(biāo)準(zhǔn)系統(tǒng)分割區(qū)
-
(選項(xiàng)是小寫的「L」)
sudo
fdisk -l
o
若您不確定,執(zhí)行
df
-Th
找到正確的磁盤容量及
ext3
或
ext4
格式。
4.
掛載您的標(biāo)準(zhǔn)系統(tǒng)分割區(qū)
o
用正確的分割區(qū)替換:sda1,
sdb5
等等。
sudo mount /dev/sdXX /mnt
#范例:sudo
mount /dev/sda1 /mnt
5.
若您有獨(dú)立的
/boot
分割區(qū):
o
sdYY
是
/boot
分割區(qū)的位置(例如
sdb3)
o
sudo mount /dev/sdYY /mnt/boot
6.
掛載重要的虛擬文件系統(tǒng):
sudo
mount --bind /dev /mnt/dev
sudo
mount --bind /dev/pts /mnt/dev/pts
sudo
mount --bind /proc /mnt/proc
sudo
mount --bind /sys /mnt/sys
7.
Chroot
至您的標(biāo)準(zhǔn)系統(tǒng)裝置:
sudo
chroot /mnt
8.
若系統(tǒng)中沒有
/boot/grub/grub.cfg
或其內(nèi)容不正確,使用以下指令重建
update-grub
9.
重新安裝
GRUB 2:
o
以正確裝置替換
- sda, sdb,
等等。不要指定分割區(qū)號碼。
grub-install /dev/sdX
10.
驗(yàn)證安裝(使用正確的裝置,例如
sda。不要指定分割區(qū)):
sudo
grub-install --recheck /dev/sdX
11.
退出
chroot:按下鍵盤之
CTRL-D
12.
卸除虛擬文件系統(tǒng):
sudo
umount /mnt/dev/pts
sudo
umount /mnt/dev
sudo
umount /mnt/proc
sudo
umount /mnt/sys
o
若您有掛載獨(dú)立的
/boot
分割區(qū):
sudo
umount /mnt/boot
13.
卸除
LiveCD
的
/usr
目錄:
sudo
umount /mnt/usr
14.
卸除最后的裝置:
sudo
umount /mnt
15.
重新啟動(dòng)。
sudo
reboot
復(fù)原后指令
一旦用戶可以開機(jī)至正常作業(yè)的系統(tǒng),可試著查明為何系統(tǒng)之前開機(jī)失敗。以下指令也許對找到及/或修復(fù)問題有所幫助。
·
重新整理
/boot/grub/grub.cfg
中可用的裝置和設(shè)定
·
o
sudo update-grub
·
查詢啟動(dòng)加載程序位置。
·
o
grub-probe -t device /boot/grub
·
安裝
GRUB 2
至
sdX
分割區(qū)的
MBR
中(sda,
sdb
等等。)
·
o
sudo grub-install /dev/sdX
·
重新驗(yàn)證安裝。(sda,
sdb
等等。)
·
o
sudo grub-install --recheck /dev/sdX
更改或移動(dòng)
GRUB 2
更改
GRUB 2
安裝裝置或啟動(dòng)文件的指令的方式是以
root
身份執(zhí)行
grub-install。此指令允許用戶藉由設(shè)定根(ROOT)目錄、預(yù)載模塊、執(zhí)行特定配置文件案或其他方式來修改安裝。當(dāng)執(zhí)行時(shí),grub-install
可能會(huì)執(zhí)行一或多個(gè)其他指令,例如
grub-probe、grub-mkimage
和
grub-setup。這里是當(dāng)執(zhí)行
grub-install
時(shí)一些需要考慮的:
·
在一般情況下應(yīng)該使用
grub-install
指令而不是
grub-setup。當(dāng)需要的時(shí)候
grub-install
會(huì)呼叫
grub-setup。
·
此指令應(yīng)指定一裝置,當(dāng)執(zhí)行時(shí)將會(huì)安裝
GRUB
需要的檔案至指定的裝置上。(例如:sudo
grub-install /dev/sda)
·
若用戶試圖在執(zhí)行此指令時(shí)指定一個(gè)分割區(qū),(例如:sudo
grub-install /dev/sda6)會(huì)發(fā)出一個(gè)警告訊息。指定一個(gè)分割區(qū)是不被建議采用的而被列在阻擋清單(blocklists)中,阻擋清單是開發(fā)者認(rèn)為不可靠的部份。然而還是有復(fù)寫此建議的選項(xiàng),若用戶依然想要如此做的話。
·
grub-install
可用選項(xiàng)列表可在終端機(jī)中執(zhí)行
grub-install --help
來顯示。
·
grub-install
之聯(lián)機(jī)幫助文件(man
page)目前尚不會(huì)顯示所有可用的選項(xiàng)。
移除
GRUB 2
回復(fù)至傳統(tǒng)
GRUB
若使用者選擇回復(fù)至傳統(tǒng)
GRUB(0.97),以下步驟將移除
GRUB 2
并安裝
GRUB。
命令行模式提供較清楚干凈的移除和重新安裝。然而
Synaptic
也可以做到新增和移除套件,某些步驟依然要進(jìn)入終端機(jī)來達(dá)成。
1.
開啟終端機(jī):應(yīng)用程序(Applications),附屬應(yīng)用程序(Accessories),終端機(jī)(Terminal)。
2.
選用:備份
GRUB 2
目錄和檔案。
o
sudo cp /etc/default/grub /etc/default/grub.old
o
sudo cp -R /etc/grub.d /etc/grub.d.old
o
sudo cp -R /boot/grub /boot/grub.old
3.
移除
GRUB 2
o
sudo apt-get purge grub2 grub-pc
o
此時(shí)在其他啟動(dòng)加載程序安裝前,系統(tǒng)將無法開機(jī)。
o
當(dāng)套件移除后,許多檔案依然會(huì)留在「/boot/grub」下
4.
安裝
GRUB 0.97
o
sudo apt-get install grub
5.
當(dāng)
grub
安裝后,使用者依然需要執(zhí)行以下兩個(gè)指令來建立
menu.lst
和
stage1/stage2
檔案。
a.
sudo update-grub
§
產(chǎn)生
menu.lst
§
提示時(shí)選擇「Yes」。
b.
sudo grub-install /dev/sdX
§
選擇正確的裝置(sda、sdb
等),一般而言就是
Ubuntu
安裝的那個(gè)裝置
§
在
/boot/grub
中建立
stage1/stage2
檔案并寫入至主啟動(dòng)扇區(qū)(MBR)。
重開機(jī)。
若使用者在重新啟動(dòng)時(shí)收到一個(gè)「Unrecognized
device string Error 11」錯(cuò)誤訊息,參考解決
Unrecognized device string Error 11
小節(jié),有關(guān)如何編輯選單和使系統(tǒng)可開機(jī)的指令。
外接磁盤安裝及「grub-pc」更新
Launchpad
Bug 496435
安裝
Ubuntu
在外接磁盤上可能會(huì)導(dǎo)致問題產(chǎn)生,因?yàn)?
grub-install
某些狀況下會(huì)使用裝置名稱(例如
sda, sdb)而不是
UUID。若在連接到其他機(jī)器的時(shí)候進(jìn)行
grub-pc
更新,那么可能會(huì)將更新寫入至錯(cuò)誤的裝置并使得計(jì)算機(jī)無法開機(jī)。
有一個(gè)暫時(shí)解決方案在上面的錯(cuò)誤回報(bào)連結(jié)中有提供。
外接磁盤安裝及
MBR
選擇
Launchpad
Bug 414996
當(dāng)安裝
Ubuntu
至
USB
磁盤中時(shí),GRUB
2
有可能會(huì)寫入至硬盤的
MBR
中,或是分開至硬盤及
USB
磁盤中(而不是全部在
USB
磁盤中)。這樣可能會(huì)使得主磁盤無法開機(jī)。
暫時(shí)解決方案:在安裝過程的最后一個(gè)步驟,有一個(gè)「進(jìn)階(Advanced)」按鈕,可以允許用戶選擇安裝的位置。更多細(xì)節(jié)請參考錯(cuò)誤回報(bào)。
開機(jī)分割區(qū)所在的邏輯卷冊(Logical
Volume)位于包含一份系統(tǒng)快照(snapshot)的卷冊群組內(nèi)(Volume
Group)
Launchpad
Bug 563895
當(dāng)您的開機(jī)分割區(qū)(放置
/boot)是
LV,請確認(rèn)不要有任何的
LVM
快照在包含的
VG
中。在重新啟動(dòng)時(shí)會(huì)讓您的系統(tǒng)無法開機(jī),進(jìn)入「grub
rescue>」環(huán)境中并顯示以下訊息:「error:
no such disk.」
grub-rescue
接口在這里無法幫助您,因?yàn)樗械哪K(特別是
lvm)皆無法存取。您必須從其他安裝媒體中開機(jī)并手動(dòng)移除與
boot
分割區(qū)在同一個(gè)
VG
里所有的快照。
若您的服務(wù)器在遠(yuǎn)程數(shù)據(jù)中心,這個(gè)問題會(huì)超級麻煩,因?yàn)閱栴}的原因無法簡單的查到,且修復(fù)系統(tǒng)可能會(huì)很困難。
雖然此問題會(huì)在即將到來的
Maverick Meerkat 10.10
版本中修復(fù),然而目前的
Lucid Lynx LTS 10.04
卻是有受到影響的。
一個(gè)暫時(shí)解決方法是將
Ubuntu
的
/boot
安裝在一個(gè)分開的非
LVM
分割區(qū)中,如果您常常使用
LVM
的快照功能的話。
諷刺的是如果您是個(gè)細(xì)心的人,會(huì)在更新前(或是可能的重新啟動(dòng)前)制作一份
LVM
快照,反而會(huì)引發(fā)這個(gè)
bug。
由序列式控制臺(tái)(Serial
Console)開機(jī)
若您想要
GRUB
透過序列式連線作業(yè),您需要去掉在
/etc/default/grub
檔案中
GRUB_TERMINAL
的批注,并設(shè)定為
serial(取代預(yù)設(shè)的
console)。默認(rèn)的序列式控制臺(tái)設(shè)定將會(huì)作業(yè)在第一個(gè)串行端口(ttyS0),以
9600 bit/s
傳輸速率及
8 data bits,1
stop bit,無同位檢查。
若您想使用其他串行端口,或是您的控制臺(tái)使用不同的設(shè)定,您必須加入一行
GRUB_SERIAL_COMMAND
來為
serial
指令指定額外的參數(shù)。GRUB
2
使用的
serial
指令與傳統(tǒng)
GRUB
對應(yīng)的部份語法相同(文件在這里)。例如,一個(gè)
4800 bit/s
序列聯(lián)機(jī)使用
7 data bits,1
stop bit
和偶數(shù)校驗(yàn):
GRUB_SERIAL_COMMAND="serial --unit=0 --speed=4800 --word=7
--parity=even --stop=1"
連結(jié)
以下皆為英文參考文件連結(jié)。
GrubHowTo
Grub
2 (Ubuntu Wiki)
外部連結(jié)
GNU
GRUB
GNU
GRUB 2 Manual
Illustrated
Dual Boot HomePage
Mac
OS X (XNU) Support
Mac
OS X Boot Snow Leopard
http://grub.gibbit.com/Theme_format(主題)
總結(jié)
以上是生活随笔為你收集整理的Grub2中文指南5---重装或移除Grub2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蓝桥杯2015初赛-牌型种数-dfs
- 下一篇: 临沂公积金这些业务可网上办理了临沂公积金