google code-beautifer

星期一, 12月 31, 2007

管理grub 開機啟動程式

grub 是近代Linux 最常見的開機啟動程式,可以作多重開機,如一個windows加
兩個不同版本的Linux (兩個不同版本Linu可以共用 /home 跟 /usr/local) 。
重裝系統要是動到MBR的話,只要用liveCD 開機再把grub 重新寫到MBR 就可以了。

以Mandriva Linux為例,有裝winodws 2000 跟以後的winodws 系列都是在
/boot/grub/menu.lst 多加這一項就可以選擇由windows 開機:

title windows
root (hd0,0)
makeactive
chainloader +1

要注意的是64 bit 的系統雖然可以混用 32 bit軟體,但是grub核心要是裝的是64bit 的,就只得用64 bit 的LiveCD 來進行更新grub。目前我所知道的64 bit LiveCD 只有Mandriva one 2007 spring,可以在這裡找到:
ftp://mdk.linux.org.tw/pub/mandrake-linux/official/iso/2007.1/

重新寫入grub到MBR 按下面步驟操作:

先用LiveCD 開機,假如liveCD 沒有把系統磁碟 mount 起來,就要自己手動掛
載。沒有登入超級使用者的話記得要 su 。

然後用 chroot /mnt/系統根目錄掛載點
的方式來變更系統根目錄,假設系統根目錄/dev/hda2 掛載在 /mnt/hda2,那就先下達
chroot /mnt/hda2
再下達
grub
就會看到系統提示從 # 變成 grub>
然後
grub> root (hd0,1)
這個是指定系統根目錄位置,因為起點是從0 算起,所以數字會是比 /dev/hdx
的 x 小一
grub> setup (hd0)
這個把grub 寫上去 hd0 的MBR
最後在grub> 下達
quit

重開機後就大功告成了

近年來Mandriva 又替 grub 加上gfxmenu 的漂亮外觀。用法是在 /boot/grub/menu.lst 前面跟 timeout 那些參數並列。如
gfxmenu (hd0,2)/boot/gfxmenu
要是搬移系統根目錄到不同分割區時,要記得一並更動這裡的參數值