系統引導管理器GRUB初學者指南(1)

摘要: GRUB是多系統引導管理器,簡單的說既能引導Linux,同時也能引導Windows;從LinuxSir.Org 討論區近四年的觀察來看,大多初學者並不能在短期內掌握GRUB的用法,爲了解決初學者在最短期內掌握GRUB,重寫GRUB入門文檔仍是有必要的;
本文重點介紹了GRUB的menu.lst的寫法,另外經過GRUB命令行引導系統也作了詳述;這些不管是對Windows版本的WINGRUB仍是Linux版本的GRUB都是適用的;
目錄索引

++++++++++++++++++++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++++++++++++++++++++


1、什麼是多重操做系統引導管理器,什麼是GRUB;

一、什麼是多重操做系統引導管理器及工做原理;
系統啓動引導管理器,是在計算機啓動後運行的第一個程序,他是用來負責加載、傳輸控制到操做系統的內核,一旦把內核掛載,系統引導管理器的任務就算完成退出,系統引導的其它部份,好比系統的初始化及啓動過程則徹底由內核來控制完成;

Briefly, boot loader is the first software program that runs when a computer starts. It is responsible for loading and transferring control to the operating system kernel software (such as the Hurd or the Linux). The kernel, in turn, initializes the rest of the operating system (e.g. GNU).

在X86 架構的機器中,Linux、BSD 或其它Unix類的操做系統中GRUB、LILO 是你們最爲經常使用,應該說是主流;
Windows也有相似的工具NTLOADER;好比咱們在機器中安裝了Windows 98後,咱們再安裝一個Windows XP ,在機器啓動的會有一個菜單讓咱們選擇進入是進入Windows 98 仍是進入Windows XP。NTLOADER就是一個多系統啓動引導管理器,NTLOADER 一樣也能引導Linux,只是極爲麻煩罷了;
在Powerpc 架構的機器中,若是安裝了Linux的Powerpc 版本,大可能是用yaboot 多重引導管理器,好比Apple機目前用的是IBM Powerpc處理器,因此在若是想在Apple機上,安裝Macos 和Linux Powerpc 版本,大可能是用yaboot來引導多個操做系統;
由於目前X86架構的機器還是主流, 因此目前GRUB和LILO 仍然是咱們最經常使用的多重操做系統引導管理器;

二、什麼是GRUB;爲何我要選擇GRUB;


1)什麼是GRUB;

GNU GRUB 是一個多重操做系統啓動管理器。GNU GRUB 是由GRUB(GRand Unified Bootloader) 派生而來。GRUB 最初由Erich Stefan Boleyn 設計和應用;

GNU GRUB is a Multiboot boot loader. It was derived from GRUB, GRand Unified Bootloader, which was originally designed and implemented by Erich Stefan Boleyn.

2)「GRUB太很差用」──對GRUB的認識的誤區;

GRUB真的很差用嗎?不是的,經過LinuxSir.Org 社區近四年來的運行,我發現了大多新手弟兄仍是不太瞭解GRUB;固然這也有中文Linux社區的責任,雖然也有GRUB的中文譯本,初學Linux的弟兄可能有點看不懂;
咱們欣喜的看到LinuxSir.Org 社區的好多弟兄都曾經或正在寫GRUB實踐文檔,也有的弟兄也總結了GRUB的一些基礎知識,好比 probing兄弟的 《GRUB 學習筆記》;因爲每一個人的寫文檔時風格不一樣,可能同一份文檔不一樣的人來寫就有不一樣的風格;因此今天也抖膽也一篇入門級的教程,因爲北南不會寫高級教程,因此還得請高手弟兄指教,先謝過;

3)爲何要選擇GRUB;
基於在X86架構的CPU而開發操做系統,系統引導管理器不只僅有GRUB ,並且也有LILO,但對於多重系統引導管理器,你只能選擇其一而用;不能兩個同時使用;
目前這兩個多重系統引導管理器是你們最經常使用的,也是主流Linux發行版而採用的;有的弟兄喜歡GRUB,好比我我的,有的弟兄喜歡LILO ,好比etony兄(誰是etony,請參見  http://debian.linuxsir.org );
主流發行版 Fedora、Redhat、Centos等基於RPM包的系統,在最新版本中都默認GRUB引導;Slackware 目前仍採用LILO;而Debian發行版目前最新的版本也是採用GRUB;
從目前看來,GRUB有逐漸取代LILO之勢,GRUB 2.0正在開發之中;因此咱們有理由用GRUB,我也有理由寫GRUB使用教程;

2、GRUB軟件包版本選擇和安裝;

一、GRUB的版本選擇,Linux版本的GRUB及Windows版本的GRUB的說明;
GRUB不但有Linux版本,也有Windows版本;現咱們一一介紹;
如前面所說,目前在在Unix類的操做系統中,大可能是都有GRUB;GRUB幾乎能引導全部X86架構的操做系統;功能之強,使用簡單是GRUB最大的賣點;因爲Windows 操做系統的先入爲主的優點,使得你們對Windows的NTLOADER瞭解的比較多,而對開源社區的GRUB顯得有點寞生,由此而帶來使用上的「心理恐懼」;究其初學者對GRUB「恐懼」的主要緣由仍是對GRUB沒有太多的瞭解和深刻;不管是WINGRUB仍是Linux版本的GRUB,最方便的仍是對GRUB命令行的操做;一談到命令行(Command)的操做,可能初學者對此恐懼;其實沒有什麼難的,象北南這樣低級的寫手,還能操做得起來,您也應該能行;

二、GRUB的Windows版本WINGRUB;

三、GRUB的Linux版本軟件包的安裝;
其實對於Linux的GRUB,幾乎全部的Linux主流發行版都有打包,若是您安裝了Linux,而且在開機後出現GRUB字樣的,證實您已經安裝了GRUB;而無需再次安裝;Linux的GRUB軟件包安裝部份並非本文的重點;
若是您的Linux系統沒有安裝GRUB,或者採用的是LILO,而您想用GRUB,能夠用系統安裝盤自帶GRUB軟件包來安裝,或者到相關發行版本的軟件倉庫下載後安裝;
GRUB 的Linux版本目前在各大發行版中都有打包;好比Fedora/Redhat/Centos/Mandrive/Mandriva/SuSE等以RPM包管理機制的系統,能夠經過以下的命令來安裝;
[root@localhost ~]# rpm -ivh grub*.rpm
若是是Slackware 您能夠用以下的辦法來安裝;
[root@localhost ~]# installpkg grub*.tgz
其它的發行版本請用其本身特點的軟件包管理工具來安裝;
固然您也能夠經過源碼包,在任何Linux的發行版上安裝;至於源碼包的安裝方法;
[root@localhost ~]#tar zxvf grub*.tar.gz
[root@localhost ~]#cd grub-xxx
[root@localhost ~]#./configure;make;make install
確認您是否成功安裝了GRUB,您能夠測試是否有以下兩個命令;
[root@localhost ~]# grub
[root@localhost ~]# grub-install
若是您不能找到這兩個命令,可能您的可執行程序的路徑沒有設置;
請參考: 《設置可執行程序路徑》,固然您能夠用絕對路徑;好比下面的;
[root@localhost ~]# /usr/sbin/grub
[root@localhost ~]# /usr/sbin/grub-install
若是您仍是找不到GRUB軟件包安裝在哪了;您能夠用下面的命令來解決和查找;
[root@localhost ~]# updatedb  注:這個要花很長時間;是索引slocate 的庫,而後再經過locate來查找;
[root@localhost ~]# locate grub
好比找到的是有相似以下的;
[root@localhost ~]# locate grub 
/sbin/grub-md5-crypt
/sbin/grub
/sbin/grub-install
/sbin/grub-terminfo
在通常狀況下,在路徑中帶有bin或sbin中字樣的,這些路徑下都是可執行程序;sbin 是超級權限用戶才能使用的管理命令;要使用這些命令通常的狀況下得切換到root用戶下才能使用;好比
[beinan@localhost ~]$ su -  注:切換到root用戶,而且切換到其家目錄;
Password:
[root@localhost ~]#/sbin/grub  注:用絕對路徑來運行grub命令;

3、在Linux中,GRUB的配置中的安裝和寫入硬盤的MBR;

一、在Linux中,GRUB配置過程當中的安裝grub-install;
grub-install 命令有何用呢?其實就是把咱們前面已經安裝的軟件包中的一些文件複製到 /boot/grub中;對於新安裝GRUB軟件包後,也是一個必經的過程;咱們前面所說的GRUB軟件包的安裝;而如今咱們說的是GRUB配置的過程當中的安裝;雖然在洋文中都是install ,但表達的意思是不同的;
咱們首先要運行 fdisk -l 來確認究竟是硬盤的標識;
這個過程主要是確認硬盤的標識是哪一個調備,究竟是/dev/hda仍是/dev/hdb 仍是其它的;
[root@localhost ~]# fdisk -l

Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1         970     7791493+   7  HPFS/NTFS
/dev/hda2             971        9729    70356667+   5  Extended
/dev/hda5             971        2915    15623181    b  W95 FAT32
/dev/hda6            2916        4131     9767488+  83  Linux
/dev/hda7            4132        5590    11719386   83  Linux
/dev/hda8            5591        6806     9767488+  83  Linux
/dev/hda9            6807        9657    22900626   83  Linux
/dev/hda10           9658        9729      578308+  82  Linux swap / Solaris
若是經過fdisk -l 出現有/dev/hda字樣的,咱們就要用下面的命令來安裝;
[root@localhost ~]# grub-install /dev/hda
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.

(fd0)   /dev/fd0
(hd0)   /dev/hda
若是是您fdisk -l 出現的有/dev/hdb呢,那就以下運行;
[root@localhost ~]# grub-install /dev/hdb
若是既有/dev/hda和/dev/hdb 就安裝到/dev/hda中;
[root@localhost ~]# grub-install /dev/hda
值得注意的是若是您有一個/boot分區,應該用以下的辦法來安裝;
[root@localhost ~]#grub-install --root-directory=/boot /dev/hda

[root@localhost ~]#grub-install --root-directory=/boot /dev/hdb
註解:具體是/dev/hda仍是/dev/hdb,請以fdisk -l 爲準;若是兩個都有,就看您把/boot分區是放在第一塊硬盤仍是第二塊硬盤上了,以實際狀況爲準;

二、設定GRUB的/boot分區並寫入MBR;;

在Linux中,GRUB軟件包的安裝,及在配置過程當中安裝grub到 /boot中仍是不夠的, 還要把GRUB,寫入MBR才行;有時咱們從新安裝了Windows,Windows會把MBR 重寫,這樣GRUB就消失了;若是您出現這樣的狀況,就要進行這個過程;
[root@localhost ~]# grub
會出現 grub>提示符,這是grub命令行模式 ,若是能在開機中出現提示符,沒有引導不起來的系統,除非您的系統破壞的極爲嚴重。若是僅僅是GRUB被破壞了,GRUB命令行是能讓操做系統引導起來的;
接着看例子,咱們要找到 /boot/grub/stage1的,在grub>後面輸入;
grub> find  /boot/grub/stage1
(hd0,6)  
(fd0)   注:這個是軟驅;如今不多用軟驅了,若是您有這方面的須要,本身看GRUB的DOC吧;
註解:
(hd0,6) 這是/boot所在的分區;不要誤解爲是Linux 的/所在的分區,這是值得注意的;
(fd0) 注:這個是軟驅;如今不多用軟驅了,若是您有這方面的須要,本身看GRUB的DOC吧;
grub>root (hd0,6)    注:這是/boot所在的分區;
grub>setup (hd0)   注:把GRUB寫到MBR上;
註解:
上面這步驟是根據 find /boot/stage1而來的,仔細看一下就明白了;如今咱們通常安裝不多會把/boot分區列爲一個單獨的分區;不過有的弟兄可能也喜歡這麼作;因此仍是有必要說一下爲好;
相關文章
相關標籤/搜索