引導加載程序 grub

 當硬盤啓動時,BIOS通常是指向第一個硬盤的第一個扇區,找到MBR的前446的字節,既是引導加載程序(boot loader),boot loader是一段程序,它使用的軟件主要有LILO,GRUB。 

    LILO:LInux LOader  不可以引導1024柱面以後的分區上的內核或系

    GRUB:GRand Unified Bootloader  是目前使用的主流

        主要任務:從磁盤中加載內核文件,以讓內核能夠順利驅動整個系統的硬件

grub 的優點 

  認識與支持較多的文件系統,並且可以使用 grub 的主程序直接在文件系統中查找內核文件名; 

  啓動的時候,可以自行編輯與修改啓動設置選項,類似 bash 的命令模式; 

  可以動態查找配置文件,而不需要在修改配置文件後重新安裝 grub 。即我們只要修改完 /boot/grub/menu.lst 裏頭的設置後,下次啓動就生效了!

我們這裏只說GRUB ,

一、執行過程

   stage1:執行boot loader的主程序

        必須安裝在 在MBR的前446個字節,主要是引導stage 2 

   stage2 :主程序加載配置文件

         加載所有的配置文件與相關的環境參數文件(包括文件系統定義與主要配置    文件 menu.lst)

 

有上圖我們就可以看到grub的主要配置文件就是/boot/grub/menu.lst可以通過三個路徑訪問 /boot/grub/grub.conf

 /boot/grub/menu.lst 

/etc/grub.conf  後面兩個路徑都是指向前一個的連接。

二、 配置文件 /boot/grub/menu.lst 

      1、硬盤與分區在grub中的代號

  • 硬盤代號以小括號 ( ) 括起來; 
  • 硬盤以 hd 表示,後面會接一組數字; 
  • 以“查找順序”做爲硬盤的編號。 
  • 第一個搜尋到的硬盤爲 0 號,第二個爲 1 號,以此類推; 
  • 每顆硬盤的第一個 partition 代號爲 0 ,依序類推。 

  所以第一塊找到的硬盤代號爲(hd0),而這塊硬盤的第一個分區爲(hd0,0)

 

     2、/boot/grub/menu.lst 配置文件 

 

  1. # vim /boot/grub/menu.lst 
  2. default=0  <==默認開機選項,使用第 1 個開機選單 (title)
  3. timeout=5  <==若 5 秒內未動鍵盤,使用默認菜單啓動
  4. splashimage=(hd0,0)/grub/splash.xpm.gz  <==背景圖示所在的文件
  5. hiddenmenu  <==讀秒期間是否顯示出完整的選單畫面(默認隱藏)
  6. title Red Hat Enterprise Linux Server (2.6.18-308.el5)  第一個菜單的內容
  7.         root (hd0,0)  內核文件所在的分區
  8.         kernel /vmlinuz-2.6.18-308.el5 ro root=/dev/vol0/root rhgb quiet 內核
  9.         initrd /initrd-2.6.18-308.el5.img RAM Disk的文件名
  10. title Install Red Hat Enterprise Linux 5 
  11.         root (hd0,0) 
  12.         kernel /vmlinuz-5 ks=http://172.16.0.1/workstation.cfg ksdevice=eth0 noipv6 
  13.         initrd /initrd-5 
  14.         password --md5 $1$FSUEU/$uhUUc8USBK5QAXc.BfW4m. 

三、grub的編輯窗口:

  1、啓動界面 默認5s

 在5s內按任意鍵可以進入選擇菜單

 這三個 就是title的值,默認啓動第二個

 此時按下e鍵進入編輯title 

用方向鍵選擇第二項  按e鍵編輯 

四、加密

   如果我們不行別人選擇啓動菜單,也不想別人編輯title菜單,我們 就可以設置密碼 

  1. default=1 
  2. timeout=5 
  3. splashimage=(hd0,0)/grub/splash.xpm.gz 
  4. hiddenmenu 
  5. password redhat1 
  6. title Red Hat Enterprise Linux Server (2.6.28.10-zhanghui.com) 
  7.         root (hd0,0) 
  8.         kernel /vmlinuz-2.6.28.10-zhanghui.com ro root=/dev/vol0/root rhgb quiet 
  9.         initrd /initrd-2.6.28.10-zhanghui.com.img 
  10.             password redhat2 
  11. title Red Hat Enterprise Linux Server (2.6.18-308.el5) 
  12.         root (hd0,0) 
  13.         kernel /vmlinuz-2.6.18-308.el5 ro root=/dev/vol0/root rhgb quiet 
  14.         initrd /initrd-2.6.18-308.el5.img 
  15. title Install Red Hat Enterprise Linux 5 
  16.         root (hd0,0) 
  17.         kernel /vmlinuz-5 ks=http://172.16.0.1/workstation.cfg ksdevice=eth0 noipv6 
  18.         initrd /initrd-5  
  19.         password --md5 $1$FSUEU/$uhUUc8USBK5QAXc.BfW4m. 

如上圖所示,密碼可以分別加在三個地方 

  密碼加在1 位置處,我們不可以編輯每一個菜單。可以看到三個菜單但無法編輯。

下面選項沒有“e”但有一個"p"

按“p”輸入redhat1    位置1 出的密碼

 就可以編輯每一個菜單了 

密碼加在2 位置處,沒有密碼我們就無法啓動這個菜單

 

輸入 密碼2出的密碼 redhat2  就可以通過這個菜單啓動  

 

密碼加在3 位置處,沒有密碼我們就無法啓動這個菜單 

    上面我們的密碼都是明碼,誰只要可以登錄系統都可以看到密碼,這樣不安全,也起不到限制的作用,我們可以對密碼加密,就像密碼3處的密碼 

使用命令: grub-md5-crypt 

  1. [root@localhost ~]# grub-md5-crypt  
  2. Password:   輸入redhat
  3. Retype password:   再次輸入redhat
  4. $1$mZD5i0$WZVJcZal2oc/NagUysGap.  加密密碼就生成了

  password --md5 $1$FSUEU/$uhUUc8USBK5QAXc.BfW4m. 

這樣別人就不知道密碼了 

  但是位置2 和位置3 的密碼是可以被刪除的 ,因爲輸入密碼1之後就可以編輯下面的title菜單  把設置密碼的那一行刪除 在用那個菜單啓動 就不需要密碼了。

五、安裝

  1、在grub的命令模式安裝 

       

  1.  #grub  
  2. grub> root(hd0,0) 
  3. grub>setup (hd0) 
  4. 只會裝stage1:MBR (446)  stage2 可以複製   

2、grub-install 安裝grub    

  1.  #grub-install [--root-directory=DIR] INSTALL DEVICE 
  2.  
  3. 選項與參數:  
  4. --root-directory=DIR 那個 DIR 爲實際的目錄,使用 grub-install 默認會   將grub 所有的檔案都複製到 /boot/grub/* ,如果想要複製到其他目錄與裝置 
  5. 去, 就得要用這個參數。  
  6.  
  7. INSTALL_DEVICE 安裝的裝置代號啦!  

例如將grub 裝在/tmp目錄下 /tmp是一塊獨立的分區 /dev/sdb1    

  1. [root@localhost tmp]# grub-install --root-directory=/tmp /dev/sdb1 
  2. Probing devices to guess BIOS drives. This may take a long time. 
  3. Installation finished. No error reported. 
  4. This is the contents of the device map /tmp/boot/grub/device.map. 
  5. Check if this is correct or not. If any of the lines is incorrect, 
  6. fix it and re-run the script `grub-install'. 
  7.  
  8. (fd0)   /dev/fd0 
  9. (hd0)   /dev/sda 
  10. (hd1)   /dev/sdb 

vim /boot/grub/menu.lst 

手動一步一步的寫可以  ,複製也可以 

 

  • 先使用grub-install安裝grub的配置文件
  • 開始編輯menu.lst這個重要的配置文件
  • 通過grub來將主程序安裝到系統中,(MBR的(hd0)或者是boot sector 的(hd0,0))

 

六、故障修復

     grub 故障分三種 

            1,stage1  2,stage2,3,grub.conf 

     1、 緊急救援模式  :

        用光盤引導 進入緊急救援模式 :linux rescue 就是光盤上的小系統,搜        索當前系統上某分區上的根文件系統,並掛載到 /mnt/sysimage chroot /mnt/sysimage 跟切換 到真正的跟 

並重裝grub

     2、stage2 可以複製

        cp /usr/share/grub/i386 -redaht/stage2 

     3、grub.conf 

       進入緊急救援模式 

          vim /etc/grub/grub.conf 

七、備份

 備份 MBR 

     dd if=/dev/sda of=/root/mbr.bak bs=512 count=1

備份boot loader  

     dd if=/dev/sda of=/root/bootloader.bak bs=446 count=1

   還原 

   1、dd if=/mnt/sysimage/root/bootloader.bak of=/dev/sda bs=446 count=1 還原 

 

盡我所能總結了這麼些內容,有不足之處還望大家多多指教,共同學習進步。呵呵 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章