19 Star 187 Fork 90

baoke / Linux学完就忘系列

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
33.grub系统配置与使用.md 4.78 KB
一键复制 编辑 原始数据 按行查看 历史
baoke 提交于 2019-08-07 17:52 . 更新 33.grub系统配置与使用.md

回顾:

CentOS 6启动流程:
POST --> Boot Sequence(BIOS) --> Boot Loader (MBR) --> Kernel(ramdisk) --> rootfs --> switchroot --> /sbin/init --> (/etc/inittab,/etc/init/*.conf) --> 设置默认运行级别 --> 系统初始化脚本 --> 关闭或启动对应级别下的服务 --> 启动终端

GRUB(Boot Loader):

grub 0.x:grub legacy
grub 1.x:grub2

grub legacy:

stage1:mbr
stage1_5:mbr之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统;
stage2:磁盘分区(/boot/grub)

配置文件:/boot/grub/grub.conf <-- /etc/grub.conf(符号链接文件)

stage2及内核等通常放置于一个基本磁盘分区:
功用:
(1) 提供菜单、并提供交互式接口
e:编辑模式,用于编辑菜单;
c:命令模式,交互式接口;
(2) 加载用户选择的内核或操作系统
允许传递参数给内核
可隐藏此菜单
(3) 为菜单提供了保护机制
为编辑菜单进行认证
为启用内核或操作系统进行认证

grub如何识别设备:

(hd#,#):
hd#:磁盘编号,用数字表示,从0开始编号;
#:分区编号,用数字表示,从0开始编号;
(hd0,0):第一块硬盘的,第一个分区;

grub的命令行接口

启动CentOS时,有5秒等待,按任意键可以进入grab选项界面,按C键可以进入grab命令行

e键:

help:获取帮助列表;
help KEYWORD:详细帮助信息;
find (hd#,#)/PATH/TO/SOMEFILE:查找定位某文件是否存在;
root (hd#,#):把哪一个磁盘分区设定为根设备;
kernel /PATH/TO/KERNEL_FILE:设定本次启动时用到的内核文件;额外还可以添加许多内核支持使用的commandline参数;
例如:init=/path/to/init,selinux=0
initrd /PATH/TO/INITRAMFS_FILE:设定为选定的内核提供额外文件的ramdisk;
boot:引导启动选定的内核;

#查看grub的命令帮助
help
#查看具体命令find帮助
help find
#vmlinuz内核为内核压缩文件名开头,两次tab,可以查找是否有内核的压缩文件:vmlinuz-version-el#.arch
find (hd0,0)/vmlinuz
#设置第一块磁盘的第一个分区为根设备
root (hd0,0)
#设置完根设备后就可以使用/来访问了,两次tab,可以查找是否有内核的压缩文件:vmlinuz-version-el#.arch
find /vmlinuz

手动在grub命令行接口启动系统:

#设定根磁盘和分区
root (hd0,0)
#设置内核文件,指定根文件系统的设备(磁盘),quiet代表静默模式,不显示设置信息
kernel /vmlinuz-2.6.32-754.12.1.el6.x86_64 ro root=/dev/sda3 quiet
#指定内核补充性的ramdisk文件
initrd /initramfs-2.6.32-754.12.1.el6.x86_64.img
#启动
boot

如下图:

配置文件: /boot/grub/grub.conf <-- /etc/grub.conf(符号链接文件)

配置项:
default=#:设定默认启动的菜单项;菜单项(title)编号从0开始;
timeout=#:指定菜单项等待选项选择时长;
splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜单背景图片的文件路径;
hiddenmenu:隐藏菜单(有这个配置项后,默认系统启动时时没有菜单项选择的);
password [--md5] STRING:菜单编辑认证(进入启动菜单时需要键入密码,才能编辑菜单);
title TITLE:定义菜单项"标题"
   root (hd#,#):grub查找stage2及kernel文件所在的设备分区;为grub的"根";
   kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:启动的内核;
   initrd /PATH/TO/INITRAMFS_FILE:内核匹配的ramfs文件;
   password [--md5] STRING:启动选定的内核或操作系统时进行认证;

示例:grub.conf中添加菜单编辑认证和选定的内核或操作系统时进行认证

grub-md5-crypt命令:

vim /etc/grub.conf:

reboot重启后:

如果选择第二个选项:,会提示输入密码后才能登录系统;

进入单用户模式:

(1) 编辑grub菜单(选定要编辑的title,而后使用e命令);
(2) 在选定的kernel后按e键: 进入命令行,输入空格+1,s,S或single都可以;
(3) 在kernel所在行,键入"b"命令;

安装grub:

(1) grub-install
grub-install --root-directory=ROOT /dev/DISK

(2) grub
root (hd#,#)
setup (hd#)

实验1:新加硬盘,提供直接单独运行bash系统;

实验2:破坏本机grub stage1,而后在救援模式下修复之;

Shell
1
https://gitee.com/abcd1234567_1/linux.git
git@gitee.com:abcd1234567_1/linux.git
abcd1234567_1
linux
Linux学完就忘系列
master

搜索帮助