Linux GRUB
GRUB簡介
了解grub之前,需要理解linux的啟動流程,如果之前有對linux啟動流程不了解的可以看:http://xinzong.blog.51cto.com/10018904/1757337
GRUB(GRand Unified Bootloader)統一引導加載器,即啟動加載器。centos上的grub分為兩個版本,分別是:
centos 7默認采用grub2GRUB legacy(GRUB 0.1一般稱為grub1)
GRUB 2(grub1.0一般稱為grub2)
本文主要以grub legacy展開介紹
GRUB 菜單組成
GRUB菜單
介紹菜單之前,先帶大家了解一下grub legacy
grub legacy分為三個階段:
stage 1:mbr
stage1_5:mbr之后的扇區,作用是讓stage1中的bootloader能識別stage2所在分區上的文件系統
stage2:磁盤分區()/boot/grub/)stage2及內核等通常放置于一個基本磁盤分區。
stage2的功用:1、提供菜單、并提供交互式接口
e:編輯模式,用于編輯菜單
c:命令模式,交互式接口
2、加載用戶選擇的內核或操作系統
允許傳遞參數給內核
可隱藏此菜單
3、為菜單提供了保護機制
為編輯菜單進行認證
未啟用內核或操作系統進行認證
GRUB命令行接口
grub的命令行接口:
help: 獲取幫助列表
help KEYWORD: 詳細幫助信息
find (hd#,#)/PATH/TO/SOMEFILE:查找文件
root (hd#,#)
kernel /PATH/TO/KERNEL_FILE:設定本次啟動時用到的內核文件;額外還可以添加許多內核支持使用的cmdline參數;
例如:init=/path/to/init, selinux=0
initrd /PATH/TO/INITRAMFS_FILE: 設定為選定內核提供額外文件的ramdisk;
boot: 引導啟動選定的內核;
手動在grub命令行接口啟動系統:
grub> root (hd#,#)
grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE
grub> initrd /initramfs-VERSION-RELEASE.img
grub> boot
GRUB配置文件
配置文件:/boot/grub/grub.conf
配置項:
default=#: 設定默認啟動的菜單項;菜單項(title)編號從0開始;
timeout=#:指定菜單項等待選項選擇的時長;
splashimage=指明菜單背景圖片路徑(hd#,#)/PATH/TO/XPM_PIC_FILE)
hiddenmenu:隱藏菜單;
password [–md5] STRING: 菜單編輯認證;
title TITLE:定義菜單項“標題”, 可出現多次;root (hd#,#):grub查找stage2及kernel文件所在設備分區;為grub的“根”;
kernel:啟動的內核
initrd 內核匹配的ramfs文件;
password [–md5] STRING: 啟動選定的內核或操作系統時進行認證;
加密密碼可以使用:
grub-md5-crypt命令
GRUB安裝及修復
-
安裝修復:grub-install
實例
注意:–root-directory必須指定boot所在的上一級目錄
#mount /dev/sdb1 /mnt/boot
#grub-install --root-directory=/mnt /dev/sdb2
Probing devices to guess BIOS drives. This may take a long time.
/dev/mapper/vg_centos6-lv_root does not have any corresponding BIOS drive.
# ls /mnt/boot/
grub
# ls /mnt/boot/grub/
device.map ffs_stage1_5 minix_stage1_5 stage2 xfs_stage1_5
e2fs_stage1_5 iso9660_stage1_5 reiserfs_stage1_5 ufs2_stage1_5
fat_stage1_5 jfs_stage1_5 stage1 vstafs_stage1_5
-
安裝修復:grub命令
# grub
Probing devices to guess BIOS drives. This may take a long time.
GNU GRUB version 0.97 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename.]
grub> root (hd1,0)
root (hd1,0)
Filesystem type is ext2fs, partition type 0x83
grub> setup (hd1)
setup (hd1)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd1)"... 27 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd1) (hd1)1+27 p (hd1,0)/grub/stage2 /grub/grub.conf"... succeeded
Done.
GRUB單用戶及救援模式
單用戶模式(密碼破解)
進入單用戶模式:
(1) 編輯grub菜單(選定要編輯的title,而后使用e命令);
(2) 在選定的kernel后附加
1, s, S或single都可以;
(3) 在kernel所在行,鍵入“b”命令;
救援模式
grub修復
1、模擬破壞:(破壞前先備份)
dd if=/dev/sda of=/root/mbr.bak count=1 bs=512
dd if=/dev/zero of=/dev/sda count=1 bs=200
2、進入救援模式
1、插入光盤進入救援模式
-方式1:點擊Rescue installed system
方式2:按esc進入命令行
輸入 linux rescue
2、選擇語言,鍵盤類型
3、選擇是否使用語言
4、是否將當前系統的跟掛載至/mnt/sysimage下
Continue:繼續
5、選擇OK # 可以使用chroot /mnt/sysimage
6、選擇shell start shell
7、切換跟,修復grub
# chroot /mnt/sysimage
# grub-install --root-directory=/ /dev/sda
# exit
# reboot
8、重啟前拆除光盤
圖解
對于grub就寫到這里了,感覺寫的不錯可以給點個贊。
作者:Ace
QQ1257465991
Linux運維攻城獅一只
Q/A:如有問題請慷慨提出
原創文章,作者:Ace,如若轉載,請注明出處:http://www.www58058.com/15249