GRUB
2017-07-09 本文已影响0人
JevonWei
Centos 6启动流程:
POST-->BootSequence(BIOS)-->Bootloader(MBR)-->kernel(ramdisk)-->rootfs(只读) --> /sbin/init --> (/etc/inittab,/etc/init/*.conf) --> 设置默认运行级别 --> 运行系统初始化脚本、完成系统初始化 --> 关闭对应下需要关闭的服务,启动需要启动的服务 --> 设置登录终端
GRUB(Boot Loader)
配置文件:/boot/grub/grub.conf <-- /etc/grub.conf
grub:GRand Unified Bootloader
grub 0.x: grub legacy
grub 1.x: grub2
grub legary:
stagel:mbr
stagel1_5:mbr之后的扇区,让stagel中的bootloader能识别stage2所在的分区上的文件系统
stage2:磁盘分区(/boot/grub/)
stage2及内核等通常放置于一个基本磁盘分区:
功用
(1):提供菜单,并提供交互式接口
a:内核参数 e:编辑模式,用于编辑菜单
c:命令模式,交互式接口
(2):加载用户选择的内核或操作系统
允许传递参数给内核
可隐藏此菜单
(3):为菜单提供了保护机制
为编辑菜单进行认证
为启动内核或操作系统进行认证
grub如何识别设备:
(hd#,#)
hd#:磁盘编号,用数字表示,从0开始编号
#:分区编号,用数字表示,从0开始编号
(hd0,0) 第一块磁盘的第一个分区
grub的命令行接口:
help:获取帮助列表
help KEYWORD:详细帮助信息
find (hd#,#)/PATH/FILENAME:在分区上查找FILENAME文件
eg find (hd0,0)/vmlinuz-2.6*
root (hd#,#) 指明hd#,#设备为/(根)设备
eg root(hd0.0)
find vmlinuz-2.6*
kernel /PATH/TO/KERNEL_FILE 设定本次启动时用到的内核文件;额外还可以添加许多内核支持使用的cmdline参数
eg:init=/path/to/init,selinux=0
initrd /PATH/TO/INITRAMFS_FILE:设定为选定的内核提供额外文件的ramdisk;
boot:引导启动选定的内核
手动在grub命令行接口启动系统:
grub> root (hd0,0)
grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE 以root身份只读启动内核文件
grub> initrd /initramfs-VERSION-RELEASE.img
grub> boot
配置文件:/etc/grub.conf
配置项:
default=#:设定默认启动的菜单项,落单项(title)编号从0开始
timeout=#:指定菜单项等待选项选择的时长;
splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜单背景图片文件路径;
hiddenmenu:隐藏菜单
password [--md5] STRING:菜单编辑md5认证
password --encrypted 口令 512口令密码加密
title TITLE:定义菜单项"标题",可出现多次;
root (hd#,#):grub查找stage2及kernel文件所在设备分区;为grub的"根"
kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS] ro root=/dev/sda2 启动的内核文件路径和/分区路径
initrd /PATH/TO/INITRAMFS_FILE:内核匹配的ramfs文件
password [--md5] STRING:启动选定的内核或操作系统时进行认证
关键字(内核参数):
rhgb 启动过程图形界面显示
quiet 显示内核启动过程
max_loop 100 生成100个loop设备
selinux=0 禁用SELinux策略
grub-md5-crypt命令:生成md5密码口令
grub-crypt 密码口令512加密算法
内核参数文档:/usr/share/doc/kernel-doc-2.6.32/Documentation/kernel-parameters.txt
进入单用户模式:
(1):编辑grub菜单(选定要编辑的title,而后使用e命令)
(2):在选定的kernel后附加
1,s,S或single都ok
(3):在kernel所在行,键入"b"命令
安装grub:
(1) grub-install
grub-install --root-directory=ROOT /dev/DISK 根据跟挂载分区设备安装/boot启动目录和grub,--root-directory=ROOT 指明grub存放跟路径目录,grub路径目录已存在,grub文件自动生成
(2) grub 局限性依赖于grub目录下的文件
grub> root (hd#,#) grub跟位于hd#磁盘#个分区
grub> setup (hd#) 将grub安装到hd#硬盘上
练习
1.新添硬盘,提供直接单独运行bash系统
2.破坏本机grub stage1,而后在救援模式下修复之
3.为grub设备保护功能