一、CentOS 6 grub legacy:
1.啟動流程:
POST –> Boot Sequence(BIOS) –> Boot Loader –>Kernel(ramdisk) –> rootfs –> switchroot –> /sbin/init –>(/etc/inittab, /etc/init/*.conf) –> 設定默認運行級別 –>
系統初始化腳本rc.sysinit –> 關閉或啟動對應級別的服務 –> 啟動終端
2.grub legacy
? grub: GRand Unified Bootloader
grub 0.x: grub legacy
grub 1.x: grub2
grub legacy:
stage1: mbr
stage1_5: mbr之后的扇區,讓stage1中的bootloader
能識別stage2(/boot)所在的分區上的文件系統
vmlinuz
stage2:磁盤分區(/boot/grub/)
initramfs—->讀取/grub.conf 文件
grub 各階段備份文件:——–》可以用于修復
3. grub 功用
? stage2及內核等通常放置于一個基本磁盤分區
? 功用:
(1) 提供啟動菜單、并提供交互式接口
a:內核參數
e: 編輯模式,用于編輯菜單
c: 命令模式,交互式接口
(2) 加載用戶選擇的內核或操作系統
允許傳遞參數給內核
可隱藏啟動菜單
(3) 為菜單提供了保護機制
為編輯啟動菜單進行認證
為啟用內核或操作系統進行認證
4. grub的命令行接口
help: 獲取幫助列表
help KEYWORD: 詳細幫助信息
find (hd#,#)/PATH/TO/SOMEFILE:
root (hd#,#) #指定根目錄
kernel /PATH/TO/KERNEL_FILE: 設定本次啟動時用到的內核文件;
額外還可添加許多內核支持使用的cmdline參數
例如: max_loop=100 selinux=0 init=/path/to/init
initrd /PATH/TO/INITRAMFS_FILE: 設定為選定的內核提供額外文件的ramdisk;
boot: 引導啟動選定的內核
? cat /proc/cmdline 內核參數
? 內核參數文檔:/usr/share/doc/kernel-doc-
2.6.32/Documentation/kernel-parameters.txt
? 識別硬盤設備:
(hd#,#)
hd#: 磁盤編號,用數字表示;從0開始編號
#: 分區編號,用數字表示; 從0開始編號
(hd0,0) 第一塊硬盤,第一個分區
5. 手動在grub命令行接口啟動系統:(啟動選擇菜單,選擇"e")
grub> root (hd#,#) #指定根目錄分區位置
一般為 root (hd0,0)
grub> kernel /vmlinuz-VERSION-RELEASE ro
root=/dev/DEVICE
# 指定內核vmlinuz以及根目錄
grub> initrd /initramfs-VERSION-RELEASE.img
#指定initramfs
grub> boot #引導
6.grub legacy配置文件
grub 配置文件: /boot/grub/grub.conf <– /etc/grub.conf(軟鏈接)
文件內容示例:
—————————————————————————————-
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/mapper/vg0-root
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=2
splashimage=(hd0,0)/grub/splash.xpm.gz #開機啟動畫面背景圖
hiddenmenu
title CentOS 6 (2.6.32-642.el6.x86_64) 第0啟動項
root (hd0,0)
kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/mapper/vg0-root rd_NO_LUKS rd_NO_DM.UTF-8 rd_LVM_LV=vg0/swap rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg0/root KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto
initrd /initramfs-2.6.32-642.el6.x86_64.img
title MaMaDan 第1 啟動項目
root (hd0,0)
kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/mapper/vg0-root rd_NO_LUKS rd_NO_DM.UTF-8 rd_LVM_LV=vg0/swap rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg0/root KEYBOARDTYPE=pc KEYTABLE=us quiet rhgb crashkernel=auto
initrd /initramfs-2.6.32-642.el6.x86_64.img
——————————————————————————————–
啟動效果:
——————————————————————————————-
quiet rhgb 可以刪去,用于美化啟動界面,但是會隱藏錯誤信息,刪除后可以看到詳細錯誤信息,以字符界面顯示
基本必須項目:
default=#
timeout=#
title #############
root ( )
kernel /############
initrd /########
————————————————————————————
7.配置文件內容解析:
default=#: 設定默認啟動的菜單項;落單項(title)編號從0開始
timeout=#:指定菜單項等待選項選擇的時長
splashimage=(hd#,#)/PATH/TO/XPM_FILE:菜單背景圖片文件路徑
hiddenmenu:隱藏菜單
password [–md5] STRING: 啟動菜單編輯認證
添加在第一個title 之前時,用于設定全局單用戶模式密碼
添加在指定title 之內,則用于設定指定title 密碼
建議使用加密口令
grub-md5-crypt 生成加密口令
或 openssl passwd -1
title TITLE:定義菜單項“標題” , 可出現多次
root (hd#,#): grub查找stage2及kernel文件所在設備分區;為grub“根”
kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:啟動的內核
initrd /PATH/TO/INITRAMFS_FILE: 內核匹配的ramfs文件
password [–md5] STRING: 啟動選定的內核或操作系統時進行認證
8. grub加密
? 加密密碼生成工具: grub-md5-crypt
eg: 生成密碼為“123456”的加密字符
在第一個title前添加password string
9. 破解root口令:
啟動系統時,設置其運行級別1,進入單用戶模式,即可修改密碼
10. 進入單用戶模式:
(1) 編輯grub菜單(選定要編輯的title,而后使用e命令);
(2) 在選定的kernel后附加
1, s, S或single都可以;
按“回車”確認,并退回到前一界面
(3) 在kernel所在行,鍵入“ b”命令
二、grub安裝(修復)
? 安裝grub:(救援模式下)
(1) grub-install 可以修復第一(MBR被破壞)、第二階段
安裝grub stage1和stage1_5到/dev/DISK磁盤上,并
復制GRUB相關文件到 DIR/boot目錄下
grub-install –root-directory=DIR /dev/DISK
(/boot/grub 整個文件夾丟失,可用此方法修復)
修復前,需要先chroot /mnt/sysimage
grub-install /dev/sda
注意:修復第一階段時,不可指定分區,指定設備即可
(2) 手動設定grub配置(注:此步驟不會生成grub.conf配置文件,需后續手動創建)
grub> root (hd#,#) #指定root分區
grub> setup (hd#) #修復 1.5 及 2階段
檢查并修復1.5,2 階段
注意: /boot/grub 下的stage* 文件,是各階段備份文件,用于修復grub的,若文件,grub setup 依賴于這些文件,
但是grub install 不依賴這些文件
三、grub 模擬損壞與修復
——————————————————————————————————–
1. 損壞第一階段 stage1: (破壞mbr (446字節))
stage1 破壞:
修復:
1 ) 救援模式下:
chroot /mnt/sysimage
grub-install /dev/sda
2) 若/boot/grub 中的各階段備份文件存在,可直接在grub命令行下setup修復
grub
grub>root (hd0,0) # 指定根
grub>setup (hd0)
——————————————————————————————————
2. 損壞 1.5階段 stage 1.5 :
dd if=/dev/zero of=/dev/sda bs=512 count=2 seek=1
修復:
1)救援模式下:
chroot /mnt/sysimage
grub-install /dev/sda
2) 若/boot/grub 中的各階段備份文件存在,可直接在grub命令行下setup修復
grub
grub>root (hd0,0) # 指定根
grub>setup (hd0)
——————————————————————————————————–
3. 破壞(刪除)/boot/vmlinux , initramfs
修復:
1)救援模式下,掛載iso系統文件
chroot
mkinitrd /boot/initramfs-`uname -r`.img `uname -r`
#修復 initramfs
從光盤中復制mvlinuz*文件至/boot
完成后再手動建立grub.conf即可完成
2)救援模式下,使用網絡獲取vmlinuz文件
(從其他 主機處獲取缺失文件)
chroot
mkinitrd /boot/initramfs-`uname -r`.img `uname -r`
scp host_ip:/boot/vmlinuz* /boot/
(從遠程主機中拷貝vmlinuz文件)
完成后再手動建立grub.conf即可完成
——————————————————————————————————–
4. 刪除 /boot :(刪除了/boot整個目錄)
修復:
救援模式下:
掛載光盤 mount /dev/cdrom /dir
重建/boot:
rpm -ivh /##/cdrom/Packages/kernel-### –force
|replacepkgs
#重建/boot中的各文件,但不包括grub.conf
修復grub:
chroot /mnt/sysimage
grub-install /dev/sda
重建grub.conf文件:
vi /boot/grub/grub.conf:
default=0
timeout=2
title mamadan
root (hd0,0)
kernel /vmlinuz-2.6.32-642.el6.x86_64 root=/dev/vg0/root
initrd /initramfs-2.6.32-642.el6.x86_64.img
——————————————————————————————————–
5. 刪除/etc/fstab 以及/boot:
修復:
救援模式下:
此時由于fstab丟失,無法掛載根:
救援模式shell下,使用 blkid 可以查看磁盤情況:
(無法區分哪個是根,需要將每個分區都掛載,以確定哪個是根)
1) 系統內存在使用lvm時,需要先激活lvm:
vgchange -ay
掛載各分區,嘗試確定根位置:
mkdir /mnt/sda1
mkdir /mnt/sda2
mkdir /mnt/sdb1
mkdir /mnt/sdb2
mount ………………..
略
2) 系統內僅使用普通分區時,直接掛載各分區來確認根位置
mkdir /mnt/sda1
mkdir /mnt/sda2
mkdir /mnt/sdb1
mkdir /mnt/sdb2
…………..
進入根對應分區,建立fstab文件,并重啟系統,重新進入救援模式,讓救援系統掛載根目錄
注意: 需要掛載 root ,usr ,var 三個分區,否則修復/boot目錄文件時,可能會
因無依賴文件而已報錯
掛載分區:
mkdir /mnt/sysroot
mount /dev/vg0/root /mnt/sysroot
修復fstab:
# vi /mnt/sysroot/etc/fstab
/dev/sda1 /boot ext4 defaults 1 1
/dev/vg0/root / ext4 defaults 1 2
/dev/vg0/usr /usr ext4 defaults 1 2
/dev/vg0/var /var ext4 defaults 1 2
重啟,再次讓救援系統嘗試掛載根目錄:
根成功被識別并掛載后,按照/boot 修復方法繼續修復即可
——————————————————————————————————–
原創文章,作者:ldt195175108,如若轉載,請注明出處:http://www.www58058.com/48234
圖片還有損壞的,怎么不解決?