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#) 磁盘设备注:根据马哥视频做的学习笔记,如有错误,欢迎指正;侵删