grub: GRand Unified Bootloader
grub0.x: grub legacy
grub1.x: grub2
grub legacy:
stage1:mbr
stage1_5: mbr之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统;
stage2:磁盘分区(/boot/grub/)
配置文件:
/boot/grub/grub.conf <-- /etc/grub.conf
GRUB 功能
(1) 提供菜单、并提供交互式接口
e: 编辑模式,用于编辑菜单;
c: 命令模式,交互式接口;
(2) 加载用户选择的内核或操作系统
允许传递参数给内核
可隐藏此菜单
(3) 为菜单提供了保护机制
为编辑菜单进行认证
为启用内核或操作系统进行认证
boot目录单独分区:
boot挂载至根,访问boot中的文件:/boot/vmlinuz
boot单独分区:访问boot中的文件:/vmlinuz
注意:boot是否单独分区,决定着访问boot中的文件路径不同。
GRUB中如何识别设备
(hd#,#)
hd#: 磁盘编号,用数字表示;从0开始编号,表示第几块硬盘;
#: 分区编号,用数字表示; 从0开始编号;表示硬盘上的第几块分区;
(hd0,0):第一块硬盘的第一个分区
grub的命令行接口
help: 获取帮助列表
help KEYWORD: 详细帮助信息
find (hd#,#)/PATH/TO/SOMEFILE: 查找磁盘文件上是否有某个文件
root (hd#,#) 设定某个磁盘文件作为根设备
kernel /PATH/TO/KERNEL_FILE: 设定本次启动时用到的内核文件;额外还可以添加许多内核支持使用的命令行参数;
例如:init=/bin/bash, selinux=0 //将bash作为第一个启动进程(而不是init);关闭Selinux
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
配置文件:/boot/grub/grub.conf
配置项:
default=#: 设定默认启动的菜单项;落单项(title)编号从0开始;
timeout=#:指定菜单项等待选项选择的时长;
splashp_w_picpath=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜单背景图片文件路径;
hiddenmenu:隐藏菜单;
password [--md5] STRING: GRUB菜单编辑认证;不使用--md5,只要放明文串就行了;
加密存放:
#grub-md5-crypt命令,复制生成的字符串至STRING
title TITLE:定义菜单项“标题”, 可出现多次;
root (hd#,#):grub查找stage2及kernel文件所在设备分区;为grub的“根”;
kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:启动的内核
initrd /PATH/TO/INITRAMFS_FILE: 内核匹配的ramfs文件;
password [--md5] STRING: 启动选定的内核或操作系统时进行认证;
进入单用户模式:
(1) 编辑grub菜单(选定要编辑的title,而后使用e命令);
(2) 在选定的kernel后附加1, s, S或single都可以;
(3) 在kernel所在行,键入“b”命令;
安装GRUB
GRUB损坏,但系统未关机:
(1)grub-install
grub-install --root-directory=ROOT/dev/DISK //--root-directory=ROOT指定boot的父目录; /dev/DISK指定本地硬盘
(2)grub
grub>root (hd#,#)
grub>setup (hd#)
GRUB损坏,系统关机:
插入系统安装光盘,进入救援模式;使用grub-install修复。
转载于:https://blog.51cto.com/linriwu/1907476