UEFi或BIOS执行硬件初始化,运行POST加电自检,获取第一个可启动的设备;
读取并执行第一个启动设备内MBR中的boot Loader,进行引导装载,通过GRUB 1.5 stage中的内容进入boot分区,读取/boot/grub2/grub.cfg文件;
通过grub.cfg文件载入kernel和initramfs到内存中,在内存中kernel通过initramfs解压后生成的根目录,加载内核选项,完成内核初始化。启动第一个进程systemd,执行initrd.target下所有单元,启用核心功能,载入所需驱动程序,重新侦测周边硬件。最后,卸载initramfs的小型文件系统,挂载系统真正的根目录,开始后续的开机流程;
成功切换到根分区后,kernel会调用启动的第一个程序systemd,根据配置文件/etc/systemd/system/default.target,链接到默认运行的操作环境,一般是/usr/lib/systemd/system/目录下,multi-user.target 或 graphical.target 二者之一;
假定这里选择的默认运行环境是multi-user.target,接着下来systemd会去激活启动multi-usre.target所依赖到的服务;
Systemd执行local-fs.target和swap.target,挂载本机/etc/fstab文件中定义的文件系统和相关的内存交换空间;Systemd执行sysinit.target,侦测加载硬件,载入所需核心模块,进行系统环境初始化;Systemd执行basic.target,载入周边硬件驱动程序,设置防火墙和SELinux等相关任务,准备系统环境;Systemd启动multi-user.target下的服务,主要是启动下面两个目录下的服务;
/usr/lib/systemd/system/multi-user.target.wants//etc/systemd/system/multi-user.target.wants/Systemd执行multi-user.target下的/etc/rc.d/rc.local
Systemd执行multi-user.target下的getty.target及相关的登陆服务;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CYrNr7QO-1606139809510)(http://banyuan.zuiyoujie.com/blog/180519/JejLjdmCDH.png?imageslim)]
将光标移动到linux16开始的行,在行尾添加内核参数rd.break,然后按Ctrl+x启动系统;[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZdPmWA9t-1606139809512)(http://banyuan.zuiyoujie.com/blog/180519/gIAAj8JFAh.png?imageslim)]
以读写的方式重新挂载一下根分区,然后切根修改密码,在根目录下创建.autorelabel文件,exit退出后使用reboot重启正常登录。
Note: 如果系统没有禁用SELinux,touch /.autorelabel这一步是必不可少的,如果缺少了这个文件会导致系统黑屏无法启动。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0dMJKie2-1606139809514)(http://banyuan.zuiyoujie.com/blog/180519/45c7ebH75F.png?imageslim)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nLEw648x-1606139809516)(http://banyuan.zuiyoujie.com/blog/180519/JejLjdmCDH.png?imageslim)]
将光标移动到linux16开始的行,在行尾添加内核参数rw init=/sysroot/bin/bash,然后按Ctrl+x启动系统;[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CJh2tAaA-1606139809519)(http://banyuan.zuiyoujie.com/blog/180519/hL23ihi1iJ.png?imageslim)]
启动后会进入一个如下图的字符界面,切根后更改密码,根目录下创建.autorelabel文件,exit退出后使用reboot重启正常登录。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y54BYTEe-1606139809521)(http://banyuan.zuiyoujie.com/blog/180519/eh9l7CeIia.png?imageslim)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZLKgUE5M-1606139809523)(http://banyuan.zuiyoujie.com/blog/180520/9JDl7hhm5E.png?imageslim)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HsrRSzJ1-1606139809525)(http://banyuan.zuiyoujie.com/blog/180520/316l4E82im.png?imageslim)]
输入1选择Continue,两下回车进入救援模式的shell界面;[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GSmrH5Ae-1606139809526)(http://banyuan.zuiyoujie.com/blog/180520/50ij7G7b2k.png?imageslim)]
找不到可引导的启动设备,报错如下图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3qJRcdTI-1606139809527)(http://banyuan.zuiyoujie.com/blog/180520/AmcL3eKkIc.png?imageslim)]
使用grub2-install重新安装GRUB2 stage 1-2的内容,需要注意这是在没有切根的情况下进行安装的,需要使用--root-directory选项指定根分区路径;grub2-install命令执行过程中会依赖/usr/lib/grub/目录中的文件,若救援的光盘系统中/usr/lib/grub/目录下没有自带,则需要chroot后使用grub2-install /dev/sda进行修复。
BIOS环境下修复grub2
# grub2-install /dev/sdaUEFI环境下修复grub2
# grub2-install使用grub2-mkconfig命令生成grub.cfg配置文件,修复完成退出重启;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SFsMECsZ-1606139809528)(http://banyuan.zuiyoujie.com/blog/180520/glLFa03gcH.png?imageslim)]
无法通过grub.cfg文件加载内核进行启动,报错如下图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZnqZLRw3-1606139809530)(http://banyuan.zuiyoujie.com/blog/180520/LiG3adG87A.png?imageslim)]
加载xfs文件系统模块;
设置根分区对应磁盘的位置,这里的根分区指的是boot分区,而非真正的根分区,(hd0,1)表示第一块磁盘的第一个分区;
指明内核文件的路径,指明真正根分区对应的磁盘分区名称,启动时禁用SELinux,防止SELinux打标签影响启动速度;
指明initramfs文件的路径,输入boot回车启动;
系统正常启动后,进入系统重新生成grub.cfg文件,否则下次重启还会出现这个故障。
**补充:**grub.cfg文件可以通过命令直接生成,不需要再手工进行编写,grub2-mkconfig命令会利用/etc/grub.d/目录中的模板和/etc/default/grub文件中的设置自动生成。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q7AM92lP-1606139809531)(http://banyuan.zuiyoujie.com/blog/180520/Kgmf9eGj0F.png?imageslim)]
缺少启动的相关文件,报错见下图;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LO1EBnCS-1606139809532)(http://banyuan.zuiyoujie.com/blog/180520/82Ic23F189.png?imageslim)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-errvM99t-1606139809533)(http://banyuan.zuiyoujie.com/blog/180520/l4ALlI4ci5.png?imageslim)]
在/etc/fstab文件有以下三种情况的错误时,系统会先尝试自动修复,若修复失败则进入emergency shell模式,提示用户修复。
文件中设备的UUID错误或者不存在;
文件中的挂载点不存在(systemd会先尝试创建,不成功则进入emergency shell);
文件中的挂载选项不正确;
emergency shell模式:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u9IhwrI5-1606139809534)(http://banyuan.zuiyoujie.com/blog/180528/kI3G3E1hl9.png?imageslim)]
输入root口令,进入系统修复/etc/fstab文件,此时的系统是没有网络的,修复完成后重启即可;