grub 功能和组成
bootloader: 引导加载器,引导程序
- Windows: ntloader,仅是启动OS
- Linux:功能丰富,提供菜单,允许用户选择要启动系统或不同的内核版本;把用户选定的内核装载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核
Linux的bootloader
- LILO:LInux LOader,早期的bootloader,功能单一
- GRUB: GRand Unified Bootloader, CentOS 5,6 GRUB 0.97: GRUB Legacy, CentOS 7 以后使用GRUB2.02
GRUB 启动阶段
- primary boot loader :
1st stage:MBR的前446个字节
1.5 stage:MBR 之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统
- secondary boot loader :2nd stage,分区文件/boot/grub/
Centos6 grub安装
grub损坏,Linux就不能正常启动
需进入救援模式重新安装grub
安装grub的两种方法:
1、grub-install 安装grub stage1和stage1_5到/dev/DISK磁盘上,并复制GRUB相关文件到 DIR/boot 目录下
grub-install --root-directory=DIR /dev/DISK
1方法,救援模式下,进入光盘启动
执行以下命令,可修复grub,不包括grub.conf配置文件,此文件损坏,只能手动编写
# chroot /mnt/sysimage # grub-install /dev/sda # sync # exit # exit
2、
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: 引导启动选定的内核
grub legacy识别硬盘设备
(hd#,#) hd#: 磁盘编号,用数字表示;从0开始编号 #: 分区编号,用数字表示; 从0开始编号 示例: (hd0,0) 第一块硬盘,第一个分区
手动在grub命令行接口启动系统
grub> root (hd#,#) grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE grub> initrd /initramfs-VERSION-RELEASE.img grub> boot
grub legacy配置文件:/boot/grub/grub.conf
手动编写,参照红色标记
default=#: #设定默认启动的菜单项;落单项(title)编号从0开始
timeout=#: #指定菜单项等待选项选择的时长
splashimage=(hd#,#)/PATH/XPM_FILE:#菜单背景图片文件路径
password [--md5| --encrypt] STRING: #启动菜单编辑认证
hiddenmenu:#隐藏菜单
title TITLE:#定义菜单项“标题”, 可出现多次
root (hd#,#):#查找stage2及kernel文件所在设备分区;为grub的根
kernel /PATH/TO/VMLINUZ_FILE ro root=/dev/divce:#启动的内核
initrd /PATH/TO/INITRAMFS_FILE: #内核匹配的ramfs文件
password [--md5|--encrypted ] STRING: #启动选定的内核或操作系统时进行认证
grub加密生成grub口令
grub-md5-crypt grub-crypt
破解root口令:
编辑grub菜单(选定要编辑的title,而后使用a 或 e 命令) 在选定的kernel后附加1, s, S,single 都可以进入单用户模式 在kernel所在行,键入“b”命令
原创文章,作者:254126420,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/274875.html