什么是GRUB
GNU GRUB 是一個(gè)多重操作系統(tǒng)啟動(dòng)管理器锈嫩。GNU GRUB 是由GRUB(GRand Unified Bootloader) 派生而來(lái)贰镣。GRUB 最初由Erich Stefan Boleyn 設(shè)計(jì)和應(yīng)用;
系統(tǒng)啟動(dòng)引導(dǎo)管理器滓彰,是在計(jì)算機(jī)啟動(dòng)后運(yùn)行的第一個(gè)程序,他是用來(lái)負(fù)責(zé)加載州袒、傳輸控制到操作系統(tǒng)的內(nèi)核揭绑,一旦把內(nèi)核掛載,系統(tǒng)引導(dǎo)管理器的任務(wù)就算完成退出郎哭,系統(tǒng)引導(dǎo)的其它部份他匪,比如系統(tǒng)的初始化及啟動(dòng)過(guò)程則完全由內(nèi)核來(lái)控制完成;
Linux中GRUB的配置文件
grub的配置文件位于/boot/grub/grub.conf其內(nèi)容如下夸研。
grub.conf generated by anaconda## Note that you do not have to rerun grub after making changes to this file# NOTICE: You have a /boot partition. This means that# all kernel and initrd paths are relative to /boot/, eg.# root (hd0,0)# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00# initrd /initrd-version.img#boot=/dev/sdadefault=0timeout=5splashimage=(hd0,0)/grub/splash.xpm.gzhiddenmenutitle Red Hat Enterprise Linux Server (2.6.18-164.el5)root (hd0,0)kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quietinitrd /initrd-2.6.18-164.el5.img
注釋行就不多做解釋了邦蜜。
default=0 //默認(rèn)啟動(dòng)的內(nèi)核或者說(shuō)默認(rèn)啟動(dòng)的操作系統(tǒng),0表示的是第一個(gè)內(nèi)核或者操作系統(tǒng)亥至,依次往后排(title所指定的那一項(xiàng)悼沈,第一個(gè)title是0,第二個(gè)是1姐扮,依次)
timeout=5 //默認(rèn)的超時(shí)時(shí)間絮供,這里定義的是5秒,如果5秒沒(méi)有選擇茶敏,默認(rèn)啟動(dòng)第一個(gè)內(nèi)核或者說(shuō)是第一個(gè)操作系統(tǒng)
splashimage=(hd0,0)/grub/splash.xpm.gz //指定grub的背景圖片壤靶,因?yàn)間rub是系統(tǒng)開機(jī)后,運(yùn)行系統(tǒng)所必須運(yùn)行的第一個(gè)程序睡榆,所以萍肆,系統(tǒng)所自帶的文件系統(tǒng)還沒(méi)有被掛載袍榆,好在grub可以直接訪問(wèn)磁盤文件,grub所識(shí)別的硬盤跟linux系統(tǒng)的不太一樣塘揣,grub認(rèn)為包雀,所有的磁盤都是hd的,而系統(tǒng)則不是亲铡。所以這里是(hd0,0),第一個(gè)0表示的是第一塊硬盤才写,第二個(gè)0表示的是第一個(gè)分區(qū)。如果要引用磁盤設(shè)備奖蔓,要用括號(hào)括起來(lái)赞草,所以這里有一個(gè)括號(hào)。
hiddenmenu //隱藏grub菜單吆鹤,如果有這一項(xiàng)厨疙,我們將看不到grub的菜單,只能看到grub的背景圖片疑务,然后上面出現(xiàn)了一個(gè) please any key to enter the menu 下面是 Booting <default=0指定的沾凄,默認(rèn)是第一個(gè)title的內(nèi)容> in <timeout=N 超時(shí)時(shí)間設(shè)置>... 這樣子。具體的看下面的圖

然后可以通過(guò)按任意鍵知允,進(jìn)入grub的菜單撒蟀。如果有多個(gè)內(nèi)核的話,我們可以選擇啟動(dòng)哪一個(gè)內(nèi)核温鸽。下圖是grub的菜單

下面的英文內(nèi)容保屯,相信大家也看得懂。我就不多說(shuō)了涤垫。通過(guò)編輯這里的grub菜單姑尺,我們可以直接進(jìn)入單用戶模式,然后修改密碼雹姊。忘記密碼的時(shí)候股缸,可以試下這個(gè)方法衡楞。
title Red Hat Enterprise Linux Server (2.6.18-164.el5) //這就是一個(gè)標(biāo)題吱雏,就是Grub菜單上所顯示的內(nèi)容,title關(guān)鍵字后面的內(nèi)核瘾境,可以隨便寫歧杏,為了方便識(shí)別,建議還是寫一些可以從字面意義看出是什么操作系統(tǒng)或者內(nèi)核的文字描述迷守。
root (hd0,0) //把hd0,0設(shè)置為根目錄,方便訪問(wèn).設(shè)置文件訪問(wèn)的起始點(diǎn),這里設(shè)置的根犬绒,是grub的根。
kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet //指定內(nèi)核文件,在內(nèi)核后面跟的root,指的是操作系統(tǒng)的根目錄在哪兒. rhgb是redhat的一個(gè)小工具,顯示各種輸出的信息,包括硬件的初始化,quit表示是靜默模式,不輸出信息.啟動(dòng)系統(tǒng)的時(shí)候會(huì)卡一下,然后出現(xiàn)redhat就是因?yàn)闆](méi)有顯示rhgb小程序的輸出信息.
initrd /initrd-2.6.18-164.el5.img //可以認(rèn)為這是一個(gè)驅(qū)動(dòng)程序兑凿,系統(tǒng)剛開機(jī)的時(shí)候凯力,Grub第一個(gè)啟動(dòng)茵瘾,要掛載文件系統(tǒng),就要從文件系統(tǒng)里面讀取驅(qū)動(dòng)咐鹤,如果驅(qū)動(dòng)在內(nèi)核里面還好拗秘,如果不在內(nèi)核里面了,那不就……所以祈惶,這個(gè)可以認(rèn)為是一個(gè)驅(qū)動(dòng)雕旨。其實(shí),他是一個(gè)微小的linux系統(tǒng)捧请,這個(gè)系統(tǒng)里面凡涩,只包含了驅(qū)動(dòng)程序,沒(méi)有其它文件疹蛉』罨可以先把它重命令為.gz的,然后解壓可款,解壓后再用cpio解壓讹蘑,就可以看到其內(nèi)容了。目錄結(jié)構(gòu)跟你的linux系統(tǒng)是一樣的筑舅,只不過(guò)沒(méi)有文件座慰,只有驅(qū)動(dòng)程序而已。
剛才說(shuō)過(guò)翠拣,可以直接通過(guò)這里改密碼版仔,這樣是很不安全的。也就是說(shuō)误墓,如果別人能接觸到我們的物理服務(wù)器蛮粮,他就可以直接更改我們系統(tǒng)的密碼,所以谜慌,我們可以給grub加密碼然想,加密碼的方法就是直接在grub.conf中指定,可以用關(guān)鍵字password 后面跟密碼來(lái)實(shí)現(xiàn)欣范,但是這樣的密碼是明文的变泄,也不安全,所以我們可以用password --md5 通過(guò)grub的md5加密工具來(lái)加密恼琼,然后寫到password --md5的后面妨蛹。grub的md5加密工具是grub-md5-crypt ,直接使用這個(gè)命令晴竞,輸出密碼蛙卤,然后會(huì)生成一段MD5加密后的值,寫到關(guān)鍵字后面就可以實(shí)現(xiàn)md5加密grub了。
寫的位置的不同颤难,加密的效果也就不一樣神年,我們可以寫到一個(gè)title里面,只對(duì)指定的內(nèi)核或者說(shuō)操作系統(tǒng)來(lái)加密行嗤,當(dāng)啟動(dòng)該內(nèi)核或者系統(tǒng)的時(shí)候瘤袖,會(huì)要求用戶輸入grub的密碼。當(dāng)寫在所有的title外面的時(shí)候昂验,編譯grub菜單的時(shí)候捂敌,會(huì)要求輸入密碼,這時(shí)候密碼先按p鍵輸入密碼既琴,然后再按e鍵占婉,才能編輯。
手動(dòng)安裝GRUB
安裝grub有兩種方法可以使用甫恩。下面進(jìn)入詳細(xì)的介紹逆济,如果某些地方說(shuō)的不太準(zhǔn)確,希望大家能夠提出磺箕,TKS
第一
可以使用grub-install命令來(lái)進(jìn)行安裝奖慌,具體方法是
grub-install --root-directory=/要安裝到哪個(gè)目錄 /要安裝的設(shè)備
例:我這里用虛擬機(jī)演示一下,新加了一塊磁盤松靡,然后分區(qū)格式化(該操作不演示)简僧,然后掛載,然后用命令安裝雕欺,如下圖
x
注意:這里掛載點(diǎn)一定是boot目錄岛马,可以不是/mnt,但最后掛載的目錄名字屠列,一字叫boot啦逆,不然會(huì)出問(wèn)題的。還有安裝的時(shí)候--root-directory=一定不要指定到boot目錄笛洛,要指定到boot所在的目錄夏志,因?yàn)間rub安裝的時(shí)候,會(huì)去找boot目錄苛让,如果找不到沟蔑,會(huì)報(bào)錯(cuò)的。當(dāng)我們把盤掛載到boot之后蝌诡,可以認(rèn)為溉贿,該盤的名字就叫boot枫吧,所以浦旱,它會(huì)在該盤內(nèi)寫入bootloader,以引導(dǎo)系統(tǒng),如果我們安裝的時(shí)候指定到了boot九杂,那么就是把bootloader的內(nèi)容寫到了文件里面颁湖,而不是硬盤的MBR宣蠕。切記切記。我做了好多次都沒(méi)做出來(lái)甥捺,就是犯了這個(gè)錯(cuò)抢蚀。
安裝完成后,我們新建一個(gè)虛擬機(jī)镰禾,創(chuàng)建磁盤的時(shí)候皿曲,使用已有磁盤,找到我們安裝過(guò)grub的磁盤吴侦,然后使用之即可屋休。開機(jī)之后,會(huì)驚喜的發(fā)現(xiàn)备韧,出現(xiàn)了grub的提示符劫樟。

第二種方法(有點(diǎn)兒麻煩):
首先把 /usr/share/grub/i386-redhat/里的所有文件,拷貝到grub目錄
注意:這里同上织堂,一定要掛載到boot目錄下叠艳,無(wú)論boot目錄在哪

然后開始grub的安裝,直接使用命令grub

root (hd2,0) 表示grub要安裝到第三塊硬盤第1個(gè)分區(qū)上
setup (hd2) 指定要安裝的設(shè)備易阳,設(shè)備為第二塊硬盤附较,安裝完成后quit命令退出就可以了,至于圖片潦俺,我就不上了翅睛,絕對(duì)是可以的。