在Linux引導程序(Bootloader)中,主要有兩種多重操作系統引導管理器,這裏我們着重寫寫GRUB:
LILO:Linux Loader,是個很悠久的引導程序,但是有個缺陷,不適合引導大硬盤。
GRUB:Grand Unified Bootloader,可以引導多種操作系統,不僅可以引導Linux,還可以引導windows操作系統,甚至還能引導freeBSD、UNIX等操作系統。它的功能非常的強大,支持的操作系統的內核加載的功能也非常的多,而且GRUB還支持命令行編輯,還可以在GRUB界面中編輯啓動參數,還支持界面背景。另外,在redhat 5系列的GRUB版本默認支持的最大硬盤好像是2T,再大就應該裝更新的GRUB了。
在這裏我們應該知道引導文件是寫在MBR(Master Boot Record,主引導記錄)中的,MBR是位於磁盤的0柱面,0磁頭,1扇區的。它總共大小爲512字節,其中前446個字節是用來記錄引導程序(Bootloader)的,中間64個字節是記錄分區表信息的,最後兩個字節是MBR的有效標誌。但是,有沒有想過,我們的GRUB功能這麼強大,446個字節可以記錄下麼?那肯定是不行了,但是GRUB採用了一種巧妙的手段,採用兩段式引導。
第一階段我們稱爲stage1:它是寫入到MBR中的,它沒啥用,就是用來啓動第二階段的;
第二階段我們成爲stage2:它通常是放在/boot/grub/目錄中的一些執行程序;
其實在它們兩個階段中還有一個階段,我們成爲stage1.5:它是用來識別磁盤的文件系統的,從而找到第二階段的文件了。(注:1.5階段的作用其實並不是用來識別文件系統的,只是爲了好理解這麼說的)
第二階段是讀取stage2的配置文件的,它的配置文件的名字叫:grub.conf。那麼這個配置文件都定義了什麼呢?讓我們一起來看看吧!
上面藍色的都是註釋,就不多作解釋了,看看主要有哪兒些內容吧!
1、 default=0:默認啓動第一個操作系統;
2、 timeout:GRUB界面顯示5秒,然後就默認啓動第一個操作系統;
3、 splashimage=(hd0,0)/grub/splash.xpm.gz:指定GRUB背景圖片的位置的;
4、 hiddenmenu:用來隱藏GRUB菜單的,沒有這個命令,就顯示GRUB菜單;
5、 title Red Hat Enterprise Linux Server (2.6.18-164.el5):title後跟的就是GRUB菜單中顯示的標題的,這個標題可以是你喜歡的隨意名稱,另外,每個title只能指定一個內核或一個操作系統;
6、 root (hd0,0):指定根所在的分區的,也是grup的根,用來把某個分區設爲文件訪問的起始點。這裏補充下,在GRUB中它表示的分區名稱是以hd命名的,而不是以sda1或sdb1來命名的。例如第一塊磁盤的第一個分區在GRUB中是這樣命名的:hd(0,0),第二個分區就是:hd(0,1)。第二塊磁盤的第一個分區:hd(1,0),以此類推;
7、 kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/vol0/root rhgb quiet:kernel後面是指定的內核;ro :表示以只讀的方式加載後面的內容;root=/dev/vol0/root:指定操作系統的根文件系統,就是操作系統啓動的根了;rhgb:是來說明這個是紅帽的;quiet:用於設定靜默模式的(如果不設置這個,在系統啓動中會輸出很多信息);
8、 initrd /initrd-2.6.18-164.el5.img:指定用來提供驅動程序的文件。當某個磁盤的驅動程序在內核中時,這項是可以省去的。
9、 password --md5 $1$FSUEU/$uhUUc8USBK5QAXc.BfW4m.:用來設置密碼的,在圖中的位置表示,在完成GRUB選擇後,開始啓動操作系統時,需要輸入密碼;而這項如果在第一個title前面時,表示給GRUB加密,如果不輸入密碼,GRUB就無法修改和啓動了。
一、其他的不多說了,下面來看看如何安裝GRUB吧!
GRUB的安裝方法有兩種:在下面的兩種方法中有一個大前提,就是將磁盤分好區,給個簡單的分區方法吧!其實這個方法就是將一些參數通過管道的方式送給了fdisk這個分區命令了而已:
- #echo ‘
- >n
- >p
- >1
- >
- >+100M
- >w ‘ | fdisk sdb
1、第一種方法
使用grub-install命令來安裝:在紅帽5.4中boot分區需要大約100M,紅帽6中大約需要500M,多了也沒用。我們這裏是以新加的第二塊磁盤來說明的:
1)、 首先在我們要將磁盤要掛載的目錄建立好(安裝GRUB,只能在boot目錄下):
- #mkdir /mnt/boot
2)、 將磁盤分區掛載到建好的目錄下來:
- #mount /dev/sdb1 /mnt/boot
3)、 現在就可以使用grub-install命令來安裝GRUB了:
- #grub-install –root-directory=/mnt /dev/sdb
弄完這三步,GRUB就在磁盤上安裝好了。
2、第二種方法
這個就需要複製文件,並進入grub>命令行中來實現了,這裏我們以redhat爲例,依舊是以新裝的第二塊磁盤爲例來說明的:
1)、 將磁盤掛在/mnt/boot目錄下:
- #mount /dev/sdb1 /mnt/boot
2)、 在boot目錄下新建grub目錄:
- #mkdir /mnt/boot/grub
3)、 將/usr/share/grub/i386-redhat/目錄下的所有文件複製到/mnt/boot/grub目錄中:
- #cp /usr/share/grub/i386-redhat/* /mnt/boot/grub
4)、 進入grub模式中進行設置:
- #grub
- grub>root (hd1,0)
- grub>setup (hd1)
- grub>quit
經過這幾步第二種方法也完成了,是不是很簡單呢?不過還是需要多練啊,熟能生巧嘛,建議在虛擬機上多多練習。