GRUB的安裝
一)首先要了解的幾個(gè)概念
1.1 啟動(dòng)管理器
啟動(dòng)管理器是存儲(chǔ)在磁盤開始扇區(qū)中的一段程序,例如,硬盤的MBR(Master Boot Record),在系統(tǒng)完成啟動(dòng)測(cè)試后,如果系統(tǒng)是從MBR啟動(dòng),則BIOS(Basic Input/Output System)將控制傳送給MBR。然后存儲(chǔ)在MBR中的這段程序?qū)⑦\(yùn)行。這段程序被稱為啟動(dòng)管理器。它的任務(wù)就是將控制傳送給操作系統(tǒng),完成啟動(dòng)過程。有許多可用的啟動(dòng)管理器,包括GNU GRUB (Grand Unified Boot Loader),Bootmanager, LILO (LInux LOader), NTLDR (boot loader for Windows NT systems),等等等.
1.2 什么是GRUB?
grub 是一個(gè)多重啟動(dòng)管理器。grub是GRand Unified Bootloader的縮寫,它可以在多個(gè)操作系統(tǒng)共存時(shí)選擇引導(dǎo)哪個(gè)系統(tǒng)。它可以引導(dǎo)的操作系統(tǒng)包括:Linux,FreeBSD,Solaris,NetBSD,BeOSi,OS/2,Windows95/98,Windows NT,Windows2000,WinXP。它可以載入操作系統(tǒng)的內(nèi)核和初始化操作系統(tǒng)(如Linux,FreeBSD),或者把引導(dǎo)權(quán)交給操作系統(tǒng)(如Windows 98)來(lái)完成引導(dǎo)。
1.3 GRUB的特點(diǎn)
特別適用于linux與其它操作系統(tǒng)共存情況。
支持大硬盤 現(xiàn)在大多數(shù)Linux發(fā)行版本的lilo都有同樣的一個(gè)問題:根分區(qū)(/boot分區(qū))不能分在超過1024柱面的地方,一般是在8.4G左右的地方,否則lilo不能安裝,或者安裝后不能正確引導(dǎo)系統(tǒng)。而grub就不會(huì)出現(xiàn)這種情況,只要安裝時(shí)你的大硬盤是在LBA模式下,grub就可以引導(dǎo)根分區(qū)在8G以外的操作系統(tǒng)。
支持開機(jī)畫面 grub支持在引導(dǎo)開機(jī)的同時(shí)顯示一個(gè)開機(jī)畫面。對(duì)于玩家來(lái)說,這樣可以制作自己的個(gè)性化開機(jī)畫面;對(duì)于PC廠商,這樣可以在開機(jī)時(shí)顯示電腦的一些信息和廠商的標(biāo)志等。grub支持640x480,800x600,1024x768各種模式的開機(jī)畫面,而且可以自動(dòng)偵測(cè)選擇最佳模式,與Windows那320x400的開機(jī)畫面不可同日而語(yǔ)。
兩種執(zhí)行模式 grub不但可以通過配置文件進(jìn)行例行的引導(dǎo),還可以在選擇引導(dǎo)前動(dòng)態(tài)改變引導(dǎo)時(shí)的參數(shù),還可以動(dòng)態(tài)加載各種設(shè)備。例如你在Linux下編譯了一個(gè)新的核心,但不能確定它能不能工作,你就可以在引導(dǎo)時(shí)動(dòng)態(tài)改變grub的參數(shù),嘗試裝載這個(gè)新的核心進(jìn)行使用。Grub的命令行有非常強(qiáng)大的功能,而且支持如bash或doskey一樣的歷史功能,你可以用上下鍵來(lái)尋找以前的命令。
菜單式選擇 grub使用一個(gè)菜單來(lái)選擇不同的系統(tǒng)進(jìn)行引導(dǎo)。你還可以自己配置各種參數(shù),如延遲時(shí)間,默認(rèn)操作系統(tǒng)等。
分區(qū)大小改變后不必重新配置 grub是通過文件系統(tǒng)直接把核心讀取到內(nèi)存,因此只要操作系統(tǒng)核心的路徑?jīng)]有改變,grub就可以引導(dǎo)系統(tǒng)。
除此之外,Grub還有許多非常強(qiáng)大的功能。例如支持多種外部設(shè)備,動(dòng)態(tài)裝載操作系統(tǒng)內(nèi)核,甚至可以通過網(wǎng)絡(luò)裝載操作系統(tǒng)核心。Grub支持多種文件系統(tǒng),支持多種可執(zhí)行文件格式,支持自動(dòng)解壓,可以引導(dǎo)不支持多重引導(dǎo)的操作系統(tǒng),支持網(wǎng)絡(luò)啟動(dòng)等。
1.4 MBR和第一扇區(qū)
你可以簡(jiǎn)單的理解為MBR是整個(gè)硬盤的物理第一位置,而第一扇區(qū)是硬盤的物理第二位置.
(二)grub的配置
一旦選擇了grub為引導(dǎo)程序,下面我們來(lái)了解一下它的配置.
/boot/grub/grub.conf是grub產(chǎn)生一個(gè)引導(dǎo)選擇菜單以及設(shè)置一些選項(xiàng).下面是我的grub.conf (menu.lst)
:
#==========例子開始==========
default=0
color light-gray/blue
timeout=10
splashimage=(hd0,6)/boot/grub/sw-splash.xpm.gz
title????????Rays LX kernel 2.6.6-1-686-smp
root????????(hd0,6)
kernel????????/boot/vmlinuz-2.6.6-1-686-smp root=LABEL=/ ro vga=785 splash=silent
initrd????????/boot/initrd.img-2.6.6-1-686-smp
savedefault
boot
title????????Rays LX kernel 2.6.6-1-686-smp (recovery mode)
root????????(hd0,6)
kernel????????/boot/vmlinuz-2.6.6-1-686-smp root=LABEL=/ ro vga=785 splash=silent single
initrd????????/boot/initrd.img-2.6.6-1-686-smp
savedefault
boot
title????????Red Hat Linux 9
root????????(hd0,7)
kernel????????/vmlinuz-2.4.20-8 root=/dev/hda9 ro vga=785 splash=(hd0,7)/grub/splash.xpm.gz
initrd????????/initrd-2.4.20-8.img
savedefault
boot
### END DEBIAN AUTOMAGIC KERNELS LIST
title????Windows 9x/2000/XP (on /dev/hda1)
root????(hd0,0)
makeactive
chainloader +1
######## Adding Windows bootable partitions End #########
#===========例子結(jié)束==========
配置選項(xiàng)解釋:
以"#"開頭的是注釋行.
我這里有四個(gè)操作系統(tǒng),分別是Rays LX、Red Hat Linux和Microsoft Windows XP.
Default:默認(rèn)的操作系統(tǒng)就是由default控制的。default后加一個(gè)數(shù)字n,表明是第
n+1個(gè)。如果你修改成3就是WinXP了
timeout:timeout標(biāo)識(shí)默認(rèn)等待時(shí)間,我這設(shè)置為10秒,超過10秒用戶還沒作出選擇的話,將自動(dòng)選擇默認(rèn)的操作系統(tǒng)。
Color:這個(gè)命令將生成彩色菜單。
splashimage一項(xiàng)指定grub界面的背景圖片. 是開機(jī)畫面文件sw-splash.xpm.gz的位置
title:顯示選擇菜單的名字。
root (hd0,6)標(biāo)識(shí)從第一個(gè)硬盤,第7個(gè)分區(qū)來(lái)啟動(dòng)搜索引導(dǎo)內(nèi)核.注意這兒的root與lin
ux的root分區(qū)不同,此root非彼root。grub的硬盤標(biāo)識(shí)方法與linux的有點(diǎn)不同.在linux中第一個(gè)主分區(qū)為hda1,第二個(gè)主分區(qū)為hda2,第一個(gè)邏輯分區(qū)為hda5,而在grub中是以(hdx,y)來(lái)標(biāo)識(shí)的,如第一個(gè)主分區(qū)為(hd0,0)第一個(gè)邏輯分區(qū)為(hd0,1)依此類推.所以這兒root后面的是你的/boot所在分區(qū)標(biāo)識(shí).
知道了內(nèi)核在哪兒,還要具體指出哪個(gè)文件是內(nèi)核文件,這就是kernel的工作。
kernel????????/boot/vmlinuz-2.6.6-1-686-smp root=/dev/hda7 ro vga=785 splash=silent 和 kernel????????/vmlinuz-2.4.20-8 root=/dev/hda9 ro vga=785 就是要載入的內(nèi)核(第一個(gè)是Rays linux的內(nèi)核,后面的是Red hat 9的)。后面的都是傳遞給內(nèi)核的參數(shù)。ro是以readonly的意思,root=LABEL=/就是linux的硬盤分區(qū)表示法,vga=785是分辨率。注意我這里兩個(gè)內(nèi)核前面的路徑。(Rays linux)是“/boot”,是因?yàn)槲抑粸椤癛ays linux”掛載了根分區(qū)“/”而boot分區(qū)是在根分區(qū)之下的。而我為Red hat掛載了boot分區(qū)(hda8),所以這里直接就是“/”。
initrd用來(lái)初始的linux image,并設(shè)置相應(yīng)的參數(shù)
再來(lái)看一看windows的定義段吧。
這里,我添加了一項(xiàng)來(lái)引導(dǎo) WindowsXP。要完成此操作,GRUB 使用了"鏈?zhǔn)窖b入器"(ch
ainloader),鏈?zhǔn)窖b入器從分區(qū) (hd0,0)的引導(dǎo)記錄中裝入winXP自己的引導(dǎo)裝入器NTLoader
,然后引導(dǎo)它。這就是這種技術(shù)叫做鏈?zhǔn)窖b入的原因 -- 它創(chuàng)建了一個(gè)從引導(dǎo)裝入器到
另一個(gè)的鏈。這種鏈?zhǔn)窖b入技術(shù)可以用于引導(dǎo)任何版本的 DOS 或 Windows。如果你在計(jì)
算機(jī)中裝有win98,winme,win2k,winxp的話,chainloader會(huì)把引導(dǎo)權(quán)交與win的NTLoader
來(lái)引導(dǎo).
(三)Grub啟動(dòng)盤的制作
要制作引導(dǎo)盤,需執(zhí)行一些簡(jiǎn)單的步驟。首先,在新的軟盤上創(chuàng)建 ext2 文件系統(tǒng)。然
后,將其安裝,并將一些 GRUB 文件復(fù)制到該文件系統(tǒng),最后運(yùn)行 "grub" 程序,它將
負(fù)責(zé)設(shè)置軟盤的引導(dǎo)扇區(qū)。
將一張空盤插入 1.44MB 軟驅(qū),輸入:
# mke2fs /dev/fd0
創(chuàng)建了 ext2 文件系統(tǒng)后,需要安裝該文件系統(tǒng):
# mount /dev/fd0 /mnt/floppy
現(xiàn)在,需要?jiǎng)?chuàng)建一些目錄,并將一些關(guān)鍵文件(原先安裝 GRUB 時(shí)已安裝了這些文件)
復(fù)制到軟盤:
# mkdir /mnt/floppy/boot
# mkdir /mnt/floppy/boot/grub
# cp /boot/grub/stage1 /mnt/floppy/boot/grub
# cp /boot/grub/stage2 /mnt/floppy/boot/grub
再有一個(gè)步驟,就能得到可用的引導(dǎo)盤。
在linux bash中,從 root 用戶運(yùn)行"grub",該程序非常有趣并值得注意,因?yàn)樗鼘?shí)際
上是 GRUB 引導(dǎo)裝入器的半功能性版本。盡管 Linux 已經(jīng)啟動(dòng)并正在運(yùn)行,您仍可以運(yùn)
行 GRUB 并執(zhí)行某些任務(wù),而且其界面與使用 GRUB 引導(dǎo)盤或?qū)?GRUB 安裝到硬盤 MBR
時(shí)看到的界面(即GRUB控制臺(tái))完全相同。
在 grub> 提示符處,輸入:
grub> root (fd0) (root 與(fd0)之間有空格,下同)
grub> setup (fd0)
grub> quit
現(xiàn)在,引導(dǎo)盤完成了。
(四).恢復(fù)被windows破壞的grub. (以Red hat 9為例)
如果你用grub來(lái)引導(dǎo)linux和windows,當(dāng)windows出毛病重新安裝后,會(huì)破壞MBR中的grub
,這時(shí)需要恢復(fù)grub. (相當(dāng)于用98啟動(dòng)軟盤或光盤啟動(dòng)到實(shí)DOS下,用命令fdisk/mbr
清除/mbr里grub的信息)
1.把linux安裝光盤的第一張放到光驅(qū),然后重新啟動(dòng)機(jī)器,在BOIS中把系統(tǒng)用光驅(qū)來(lái)引
導(dǎo)。
2.等安裝界面出來(lái)后鍵入linux rescue并按回車,進(jìn)入linux rescue模式。
3.一系列鍵盤以及幾項(xiàng)簡(jiǎn)單的配制,過后就[繼續(xù)]了。。。這個(gè)過程,我不說了,比
較簡(jiǎn)單。
4.然后會(huì)出現(xiàn)這樣的提示符:sh# 。你可以到/mnt/下面看到一個(gè)sysimage這么目錄,進(jìn)去以后,就是你安裝linux的/分區(qū). 使用命令chroot將根分區(qū)變?yōu)楫?dāng)前目錄的根分區(qū):
chroot /mnt/sysimage
5.我們就可以操作GRUB了.輸入grub:
sh#grub
會(huì)出現(xiàn)這樣的提示符:
grub>
我們就可以在這樣的字符后面,輸入:
grub>root (hdX,Y)
grub>setup (hd0)
如果成功會(huì)有一個(gè)successful......
這里的X,如果是一個(gè)盤,就是0,如果你所安裝的linux的根分區(qū)在第二個(gè)硬盤上,那X
就是1了;Y,就是裝有l(wèi)inux系統(tǒng)所在的根分區(qū)。 setup (hd0)就是把GRUB寫到硬盤的M
BR上。
(五).用NTLoader來(lái)引導(dǎo)linux.
如果你在安裝linux時(shí)沒有選擇安裝grub,不必著急,現(xiàn)在我們來(lái)看看如何在安裝linux后
安裝grub.并用windows的NTLoader來(lái)引導(dǎo)linux.
1. 安裝grub
我用的grub是Redhat帶的grub安裝包: grub-0.92-7.rpm
安裝: rpm -ivh grub-0.92-7.rpm
其他安裝方式也一樣,只要你安裝上grub就行了.(RH9缺省用的grub, 1,2步驟可以省了.)
2. 建立grub的環(huán)境
cp /usr/share/grub/i386-pc/* /boot/grub
3. 生成grub的配置文件/boot/grub/menu.conf
按照上面所講的grub.conf來(lái)生成一個(gè)配置文件.
注意了, 這里我的linux在/dev/hda8,所以menu.conf那些分區(qū)位置為(hd0,7),
你的可能不一樣了。下面第3步install的中的分區(qū)位置也應(yīng)該和你的系統(tǒng)一致.
3. 安裝grub至Linux分區(qū)boot
將grub的stage1安裝到/dev/hda8的boot扇區(qū)(hd0,7). 過程如下:
/sbin/grub (運(yùn)行g(shù)rub)
grub> install (hd0,7)/grub/stage1 d (hd0,7) (hd0,7)/boot/grub/stage2 p (hd0,7) /grub/menu.conf
(注意,上面"grub>"為grub的提示符.)
4. 取得grub的boot信息
過程如下:
dd if=/dev/hda8 of=/grub.lnx bs=512 count=1
if 是input_file of 是output_file bs是 字節(jié)數(shù) count 是 執(zhí)行的次數(shù)
這樣在根目錄下得到grub的引導(dǎo)信息,只要用NT Loader來(lái)加載它就行了.
5. 將上面得到的grub.lnx弄到Windows的C盤根目錄下
可以先把grub.lnx弄得軟盤上,然后啟動(dòng)windows,拷貝到C:\; 情況允許也可以直接在Li
nux下拷貝到C:了. 我的C盤(即設(shè)備/dev/hda1)為FAT32, 可以直接從Linux下弄過去了.
如下:
mount -t vfat /dev/hda1 /mnt/c
cp /grub.lnx /mnt/c
umount /mnt/c
6. 修改NT Loader的boot.ini
在其中加入一行: C:\grub.lnx="Redhat Linux - GRUB"
加入后boot.ini的內(nèi)容如下:
[boot loader]
timeout=15
default=C:\boot.lnx ???????? ????
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Profession
al" /fastdetect
[VGA mode]" /basevideo /sos
C:\grub.lnx="Redhat Linux - GRUB"
OK. 可以用NT Loader加載Linux了, 其實(shí)上面過程基本思想就是用NT Loader來(lái)加載grub的引導(dǎo)區(qū)(grub.lnx), 其中的關(guān)鍵就是grub的引導(dǎo)區(qū)的獲取. 。
(六)活用grub的交互功能
grub具有強(qiáng)大的交互功能.學(xué)會(huì)了將會(huì)使你受益非淺!
1.grub沒有顯示菜單怎么辦?
當(dāng)開機(jī)后進(jìn)入grub界面但沒了菜單,只剩下一個(gè)grub>提示符。
〈1〉grub>cat (hd0,7)/grub/grub.conf(為了看參數(shù),或者用fdisk -l顯示當(dāng)前分區(qū)情況)
〈2〉grub>root (hd0,7)
〈3〉grub>kernel (hd0,7)/boot/vmlinuz-2.6.6-1-686-smp root=LABEL=/ ro vga=785
〈4〉grub>initrd (hd0,7)/initrd-2.4.18-14.img
〈5〉grub>boot
以上這個(gè)方法也可以用于測(cè)試新編譯的內(nèi)核.
2.進(jìn)入單用戶模式.
有時(shí)不小心把root用戶密碼忘了,只能進(jìn)入單用戶模式來(lái)重新設(shè)置root密碼。
進(jìn)單用戶模式的具體方法為:在出現(xiàn)grub引導(dǎo)界面的時(shí)候,按e,然后選中kernel/boot/vmlinuz-2.6.6-1-686-smp root=LABEL=/ ro vga=785 splash=silent這一項(xiàng)再按e編輯他,把他該成kernel/boot/vmlinuz-2.6.6-1-686-smp root=LABEL=/ single ro vga=785 splash=silent之后按回車退出,再按b。
或者在在出現(xiàn)grub引導(dǎo)界面的時(shí)候然后按照上面的方法進(jìn)行,只是在第三步要在后面加入single參數(shù).
3. 設(shè)置GRUB的密碼
<1> 進(jìn)入grub字符cmd-line
#grub
grub> md5crypt
Password: ********** 你的密碼
Encrypted: $1$U$JK7xFegdxWH6VuppCUSIb grub給出了密文
復(fù)制粘貼記下密文備用,如果忘記密文也無(wú)妨,重新md5crypt一下,因?yàn)橥粋€(gè)密碼,grub給出的密文不一樣
grub> reboot
#
<2> 編輯menu.lst
#vi /boot/grub/menu.lst
添加一行:password --md5 $1$U$JK7xFegdxWH6VuppCUSIb
password命令的位置可以不限,只要在所有title引導(dǎo)項(xiàng)之前就行了,然后是空格,兩條短橫線和md5,又是空格,你的密文。
現(xiàn)在要在啟動(dòng)時(shí)對(duì)GRUB菜單進(jìn)行修改就不那么容易了,看菜單框下方的提示:你要敲“P”鍵,然后輸入正確的密碼才能對(duì)它動(dòng)手動(dòng)腳。
當(dāng)然,這是不夠的,它還能限制操作系統(tǒng)的訪問。
在想要鎖定的選項(xiàng)的title后一行加上lock命令:
title 在你想要的系統(tǒng)title項(xiàng)之后
lock 添加lock,即可實(shí)現(xiàn)進(jìn)入本title系統(tǒng),必須“p”之后才能進(jìn)入的功能
root (hdx,x)
評(píng)論
查看更多