當硬盤啓動時,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 配置文件
- # vim /boot/grub/menu.lst
- default=0 <==默認開機選項,使用第 1 個開機選單 (title)
- timeout=5 <==若 5 秒內未動鍵盤,使用默認菜單啓動
- splashimage=(hd0,0)/grub/splash.xpm.gz <==背景圖示所在的文件
- hiddenmenu <==讀秒期間是否顯示出完整的選單畫面(默認隱藏)
- title Red Hat Enterprise Linux Server (2.6.18-308.el5) 第一個菜單的內容
- root (hd0,0) 內核文件所在的分區
- kernel /vmlinuz-2.6.18-308.el5 ro root=/dev/vol0/root rhgb quiet 內核
- initrd /initrd-2.6.18-308.el5.img RAM Disk的文件名
- title Install Red Hat Enterprise Linux 5
- root (hd0,0)
- kernel /vmlinuz-5 ks=http://172.16.0.1/workstation.cfg ksdevice=eth0 noipv6
- initrd /initrd-5
- password --md5 $1$FSUEU/$uhUUc8USBK5QAXc.BfW4m.
三、grub的編輯窗口:
1、啓動界面 默認5s
在5s內按任意鍵可以進入選擇菜單
這三個 就是title的值,默認啓動第二個
此時按下e鍵進入編輯title
用方向鍵選擇第二項 按e鍵編輯
四、加密
如果我們不行別人選擇啓動菜單,也不想別人編輯title菜單,我們 就可以設置密碼
- default=1
- timeout=5
- splashimage=(hd0,0)/grub/splash.xpm.gz
- hiddenmenu
- password redhat1
- title Red Hat Enterprise Linux Server (2.6.28.10-zhanghui.com)
- root (hd0,0)
- kernel /vmlinuz-2.6.28.10-zhanghui.com ro root=/dev/vol0/root rhgb quiet
- initrd /initrd-2.6.28.10-zhanghui.com.img
- password redhat2
- title Red Hat Enterprise Linux Server (2.6.18-308.el5)
- root (hd0,0)
- kernel /vmlinuz-2.6.18-308.el5 ro root=/dev/vol0/root rhgb quiet
- initrd /initrd-2.6.18-308.el5.img
- title Install Red Hat Enterprise Linux 5
- root (hd0,0)
- kernel /vmlinuz-5 ks=http://172.16.0.1/workstation.cfg ksdevice=eth0 noipv6
- initrd /initrd-5
- password --md5 $1$FSUEU/$uhUUc8USBK5QAXc.BfW4m.
如上圖所示,密碼可以分別加在三個地方
密碼加在1 位置處,我們不可以編輯每一個菜單。可以看到三個菜單但無法編輯。
下面選項沒有“e”但有一個"p"
按“p”輸入redhat1 位置1 出的密碼
就可以編輯每一個菜單了
密碼加在2 位置處,沒有密碼我們就無法啓動這個菜單
輸入 密碼2出的密碼 redhat2 就可以通過這個菜單啓動
密碼加在3 位置處,沒有密碼我們就無法啓動這個菜單
上面我們的密碼都是明碼,誰只要可以登錄系統都可以看到密碼,這樣不安全,也起不到限制的作用,我們可以對密碼加密,就像密碼3處的密碼
使用命令: grub-md5-crypt
- [root@localhost ~]# grub-md5-crypt
- Password: 輸入redhat
- Retype password: 再次輸入redhat
- $1$mZD5i0$WZVJcZal2oc/NagUysGap. 加密密碼就生成了
password --md5 $1$FSUEU/$uhUUc8USBK5QAXc.BfW4m.
這樣別人就不知道密碼了
但是位置2 和位置3 的密碼是可以被刪除的 ,因爲輸入密碼1之後就可以編輯下面的title菜單 把設置密碼的那一行刪除 在用那個菜單啓動 就不需要密碼了。
五、安裝
1、在grub的命令模式安裝
- #grub
- grub> root(hd0,0)
- grub>setup (hd0)
- 只會裝stage1:MBR (446) stage2 可以複製
2、grub-install 安裝grub
- #grub-install [--root-directory=DIR] INSTALL DEVICE
- 選項與參數:
- --root-directory=DIR 那個 DIR 爲實際的目錄,使用 grub-install 默認會 將grub 所有的檔案都複製到 /boot/grub/* ,如果想要複製到其他目錄與裝置
- 去, 就得要用這個參數。
- INSTALL_DEVICE 安裝的裝置代號啦!
例如將grub 裝在/tmp目錄下 /tmp是一塊獨立的分區 /dev/sdb1
- [root@localhost tmp]# grub-install --root-directory=/tmp /dev/sdb1
- Probing devices to guess BIOS drives. This may take a long time.
- Installation finished. No error reported.
- This is the contents of the device map /tmp/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/sda
- (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 還原
盡我所能總結了這麼些內容,有不足之處還望大家多多指教,共同學習進步。呵呵