GRUB(Boot Loader):
grub:Grand Unified Bootloader
grub 0.x:grub legacy
grub 1.x:grub2
grub legacy:
stage1:mbr
stage1_5:位于mbr之后的扇区,让stage1中的BootLoader能识别stage2所在分区的文件系统;
stage2:磁盘分区/boot/grub
功能:
提供菜单,并提供交互式接口
e:编辑模式,用于编辑菜单
c:命令模式,交互式接口(具体解释在下面)
在这一步可以指定BootLoader位置和要启动的kernel、initrd(具体解释在下面)
grub> root=(hd0,0)
grub> kernel /vmlinuz-version ro root=/dev/PATH
grub> initrd /initramfs-version.img
grub> boot
加载用户选择的内核或文件系统
允许传递参数给内核
可隐藏菜单
为菜单提供了保护机制
为编辑菜单进行认证→管理员可以编辑菜单(此处的管理员跟系统中的不是一回事)
为启动内核或文件系统进行认证→指定的用户可以启动内核
配置文件:/boot/grub/grub.conf <-- /etc/grub.conf
配置项:
default=#:设定默认启动的菜单项;菜单项(title)编号从0开始;
timeout=#:设置菜单项选项被选择的超时时间;
splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:设定菜单背景图片;
hiddenmenu:隐藏菜单;
passwd [--md5] STRING:菜单编辑认证;如果设置则需要输入正确密码之后才可编辑菜单项;
title TITLE:定义菜单项的标题(可出现多次);
root (hd#,#):grub查找stage2及kernel文件所在的设备分区(grub的"根");
kernel /PATH/TO/VMLINUZ_FILE [TARAMETERS]:启动系统时用到的内核;
initrd /PATH/TO/INITRAMFS_FILE:与内核匹配的ramdisk;
passwd [--md5] STRING:启动选定的内核或操作系统时进行认证;
grub-md5-crypt命令:
生成上面passwd需要的密码串;
当系统启动时,首先会加载位于mbr中的BootLoader从而加载stage1,接着会读取随后扇区中的stage1_5,然后就可以驱动stage2所在的文件系统了(还包含kernel,ramdisk等);
stage2及kernel等通常会放置于一个基本磁盘分区中;因为grub一般是不支持LVM、software raid等,从而无法被stage1_5所识别;
grub如何识别设备:
(hd#,#)
hd#:表示磁盘编号,用数字表示
#:分区编号,用数字表示
grub的命令行接口
help:获取帮助
help [COMMAND] :查看某个命令的详细信息
find (hd#,#) /PATH/TO/filename:寻找分区中的指定文件
find (hd0,0)/vmlinuz-version
root (hd#,#) :指定跟
kernel:/PATH/TO/KERNEL_FILE:设定本次启动用到的内核文件;
额外还可以添加许多内核支持使用的cmdline参数;
init=/path/to/init
selinux=0
initrd:/PATH/TO/INITRAMFS_FILE:未选定的内核提供的initramfs文件;
boot:引导启动选定的内核;
进入单用户模式:
编辑grub菜单(选定要编辑的title,然后使用e命令);
在选定的kernel后附加:1、s、S、或single都可以;
在kernel所在行键入b命令;
安装grub:
(1)grub-install
grub-install --root-directory=ROOT /dev/DISK
(2)grub
root (hd#,#) 系统所在分区
setup (hd#) 磁盘设备
注:根据马哥视频做的学习笔记,如有错误,欢迎指正;侵删