一.grub
1.grub legacy
1.在BIOS读取相关的有引导加载器的设备之后,接下来就要去启动的设备中的MBR读取Boot Loader,由其提供一个菜单,加载内核。
2.grub流程:
1)stage1:运行boot loader主程序,这个程序需要被安装在MBR中,即0扇区的446bytes中,
2)stage1_5:位于mbr之后的山区,让stage1中的bootloader能识别stage2所在分区的文件系统
3)stage2:通过bootloader加载所有配置文件及相关的环境参数信息
[root@kasumi rc5.d]# cd
[root@kasumi ~]# ls /boot/grub/
device.map ffs_stage1_5 jfs_stage1_5 reiserfs_stage1_5 stage2 xfs_stage1_5
e2fs_stage1_5 grub.conf menu.lst splash.xpm.gz ufs2_stage1_5
fat_stage1_5 iso9660_stage1_5 minix_stage1_5 stage1 vstafs_stage1_5
grub配置文件
1./boot/grub/grub.conf
2./etc/grub.conf
ps:若根分区未使用逻辑卷,boot可以放在根分区上。一般将boot放在不同分区上是为了实现根分区实现复杂化。因为boot一般并不大,并不会装载lvm,软raid等复杂的驱动程序,所以stage2及内核通常放在基本磁盘分区上。
3.grub功能:
1)提供菜单,并提供交互式接口
e:编辑模式,用于编辑菜单
c:命令模式,交互式接口
2)加载用户选择的内核或操作系统
1.允许传递参数给内核
2.可隐藏此菜单
3)为菜单提供了保护机制
1.为编辑菜单进行认证
2.未启用内核或操作系统进行认证
4.识别相关设备:(hd#,#)
1)hd#:磁盘编号,用数字表示,从0开始编号
2)#:分区编号,用数字表示,从0开始编号
3)(hd0,0):表示第一块磁盘上的第一个分区
5.grub的命令行接口:
1.help:获取帮助列表
2.help KEYWORD:详细帮助信息
3.find:查找相关文件(hd#,#)/path/file
4.root:设置根目录(hd#,#)
5.kernel /path/to/kernel_file:设定本次启动时用到的内核文件,额外可以添加许多内核支持使用的cmdline参数
1)例如:init=/path/to/init,selinux=0
6.initrd /path/to/initramfs_file:设定为选定的内核提供额外文件的ramdisk
7.boot:引导启动选定的内核
6.手动在grub命令行接口启动系统:
1)进入grub菜单
2)进入命令行接口
3)输入相关命令
1.设定临时根目录为Boot:root (hd0,0)
2.选定指定启动内核:kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=/dev/sda2
3. 设定为选定内核提供额外文件的ramdisk:initrd initramfs-2.6.32-696.el6.x86_64.img
4. 启动选定内核:boot
ps:kernel命令中root=/dev/DEVICE,要根据实际根目录做出调整
7.grub配置文件:/boot/grub/grub.conf
配置项
1.default=#:设定默认启动的菜单项,其编号从0开始
2.timeout=#:指定菜单项等待选项选择的时长
3.splashimage=(hd#,#)PATH/TO/XPM_PIC_FILE:指明grub菜单背景图片文件路径
4.hiddenmenu:隐藏菜单
5.password [--md5] STRING:菜单编辑认证
6.title:定义菜单项标题,可配置多个
1)root (hd#,#):grub查找stage2及kernel文件所在设备分区,为grub的根
2)kernel /path/to/kernel_file [内核参数]:启动的内核
3)initrd /path/to/kernel_file:内核匹配的ramfs文件
4)password [--md5] STRING:启动选定的内核或操作系统时进行认证
[root@kasumi ~]# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda2
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS 6 (2.6.32-696.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=f0cd8153-0a1b-4816-a703-4264ed1b4c20 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-696