GRUB原理及修復
此處以C5 C6為例,GRUB的主要作用是提供一個選單,允許使用者選擇要啟動系統或不同的核心版本,把使用者選定的核心裝載到記憶體的特定空間中,解壓展開,並把系統控制權移交給核心,一臺主機上可能裝有不止一個作業系統,使用者可以根據GRUB提供的啟動選單選定作業系統,隨即載入指定核心
GRUB分為三個階段,
stage 1 這段程式碼的其中一段程式碼是MBR中的 bootloader(446位元組),這一步在GRUB 中是不可或缺的,主要負責當BIOS 交接給GRUB 時,載入存在於各分割槽中的開機檔案,也就是所謂的開機管理程式。其大小大約512位元組
stage1_5 這段程式碼是在緊接著MBR的,輔助
其大小約32K
stage 2 在boot目錄中,不一定在根分割槽上,即,可以獨立分割槽;
stage提供一個GRUB啟動選單,供使用者選擇不同的作業系統選擇不同的作業系統
提供選項,訪問配置檔案、連線下一個bootsector(主機上可能裝的不止一個系統,,可能,可以手動選擇啟動哪個系統,也可以修改其配置檔案以達到不同效果)
在系統讀秒的過程中按任意鍵可進入GRUB選擇選單,如下圖,假如你的主機中不止一個作業系統,你可以根據需要選擇不同的作業系統;
仔細看選單下面的選項,鍵入e鍵,可在開機前進入編輯模式,如下圖,
方框內第一行代表boot目錄所在的位置,此處為第一個磁碟第一個分割槽,
方框內第二行就是你的核心位置及核心,
方框內第三行ramdisk(ramfs),這是一個虛擬檔案系統,可通過這個檔案系統可找到根分割槽位置 以方便核心找到根分割槽、init程式、以及必要的驅動程式、庫檔案
在這個介面,如果再次鍵入e鍵,可對你選擇的選項進行修改!
在這兩個介面中你也可以按
在以上兩個介面中你也可以按c進入GRUB的命令列模式
這樣手動指定核心及initrd也能啟動系統
grub 2主要是為載入核心提供選單,主要依靠配置檔案,它的位置在 /boot/grub/grub.conf
#boot=/dev/sda
10 default=0 #啟動項可以有多種,default=0表示預設第一項,1表示預設第二項
11 timeout=5 #在grub選單處停留的時間,超時則自動進入預設項
12splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz#grub2 的背景圖片,可以修改
13 hiddenmenu #是否隱藏選單
14 title CentOS 6 (2.6.32-504.el6.x86_64) #核心或title不止一個,此處的內容將出現在選擇選單中
15 root (hd0,0) #核心的磁碟位置
16 kernel /vmlinuz-2.6.32-504.el6.x86_64ro root=/dev/mapper/VolGroup-lv_root
rd_NO_LUKS rd_NO_MDrd_LVM_LV=VolGroup/lv_swap crashkernel=auto.UTF-8 #核心的一些引數選項,名字,選項等。
rd_LVM_LV=VolGroup/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM
rhgb quiet
17 initrd/initramfs-2.6.32-504.el6.x86_64.img # initrd的名字
看到它的配置檔案,便會明白grub2 的主要作用了
安裝grub會自動生成此檔案
[[email protected] ~]# ls /boot/grub/
device.mapgrub.confminix_stage1_5 stage2
e2fs_stage1_5iso9660_stage1_5reiserfs_stage1_5 ufs2_stage1_5
fat_stage1_5jfs_stage1_5splash.xpm.gz vstafs_stage1_5
ffs_stage1_5 menu.lst stage1 xfs_stage1_5
功用,
(1)提供選單。並提供互動介面
e: 編輯模式,用於編輯選單
c:命令模式 ,互動式介面
(2)載入使用者選擇的核心或作業系統
允許傳遞引數給核心
可隱藏此選單
(3)為選單提供了保護機制
為標記選單進行認證
為啟用核心或作業系統進行認證
將grub破壞後,有三種途徑可以修改之!
如果grub破壞後沒有重啟,則直接grub-install 如下,如果已經關機了,則可以把壞的系統磁碟分割槽掛載到好的系統之上,grub-install安裝。
[[email protected]~]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 16G 4.8G11G 33% /
tmpfs 1.9G 01.9G 0% /dev/shm
/dev/sda1 291M 48M228M 18% /boot
/dev/sr0 3.5G 3.5G0 100% /media/cdrom
[[email protected]~]# dd if=/dev/zero of=/dev/sda1 bs=200 count=1
1+0 records in
1+0 records out
200 bytes (200B) copied, 0.00160427 s, 125 kB/s
[[email protected]~]# man bs
No manual entryfor bs
[[email protected]~]# man dd
[[email protected]~]# grub-install --root-directory=/ /dev/sda1
ll /boot/grub –d
drwxr-xr-x. 2root root 1024 9月 29 08:35 grub
2、如果只是grub2 壞了,則可以手動配置grub的配置選項,或者在grub命令列重新安裝grub,grub命令列的操作類似於在系統中進入grub
3、再不濟,開機進入到系統救援模式下,安裝配置grub,
(1)首先插入光碟,進入bios,將光碟調整為第一啟動,略…,啟動後如下。。。
未提示步驟選擇預設!
此處設定不用聯網,選no
此處提示,要chroot 切換跟
切換至bash下,進行grub安裝,安裝後退出重啟
重新修改bios就可以重新啟動了!
轉載於:https://blog.51cto.com/fallcamel/1699690