文章目录
系统引导过程概述
通电——>bios初始化——>grub2磁盘引导阶段——>grub2文件引导阶段——>内核加载阶段——>系统初始化阶段——>系统启动阶段
一、通电
二、bios初始化
该阶段需要做的:
(1)、对硬件检测
(2)、初始化硬件时钟
该阶段如果出了问题,比如内存或硬盘没插好,bios会报警,发出“嘀嘀嘀”的声音
三、grub2磁盘引导
问:磁盘是什么?
答:磁盘,是计算机主要的存储介质,可以存储大量的二进制数据,并且断电后也能保持数据不丢失。早期计算机使用的磁盘是软磁盘(简称软盘),现在常用的是硬磁盘(简称硬盘)。主机的系统都是放在硬盘中的,硬盘中数据的保存都是分区保存的,读取方式是通过磁盘旋转让磁头来读取数据的。
问:什么是磁盘引导阶段?
当系统断电以后,磁头会回到一个默认的位置。再次通电以后,硬盘会接着转起来但是磁头不会自动跳到系统启动程序所在的位置(c盘),那么如何才能让磁头跳到c盘所在的磁道读取信息,所以需要在硬盘最起始读取的磁道上加载磁头下一步要读取哪些位置的程序,最起始读取的磁道上的那一段程序叫做系统的主引导记录(MBR),MBR所在的位置为0磁道1扇区的446个字节
注意:在linux系统中mbr的作用是跳到boot分区而不是c盘
总结:
MBR=主引导记录=0磁道1扇区446
MBR作用:记录grub2引导文件的位置
当MBR数据丢失后,系统会因为找不到启动分区而停止启动
模拟问题及解决方法
模拟问题:
系统磁盘/dev/nvme0n1
dd if=/dev/zero of=/dev/nvme0n1 bs=446 count=1 #清空系统dev/nvme0n1上的mbr数据
恢复方式:
1、用光盘进入系统挽救模式
<1>
<2>
<3>、选第二个,进入挽救模式
2、
chroot /mnt/sysimage #将根目录转换成真实的磁盘挂载环境
grub2-install /dev/xxxxxx #重新安装grub2到系统硬盘上
exit
exit #两次exit退出,系统重启
<1>
<2>
完成后记得将系统启动方式从光盘启动调回从硬盘启动
四、grub2文件引导
grub2文件引导阶段作用:系统启动时,按照文件中的记录自动加载内核和初始化镜像(指定启动分区的位置,指定系统启动时加载的文件名称)
grub2引导文件的位置:
rhel7:
/boot/grub2/grub.cfg
rhel8:两个文件
/boot/grub2/grub.cfg
/boot/loader/entries/xxxxxxxxx.conf
rhel8中:
模拟问题及解决方法
如果grub2引导文件不见了呢???
模拟问题:
rhel7:
rm -fr /boot/grub2/grub.cfg
rhel8:
rm -fr /boot/loader/entries/xxxxxxxxx.conf
rhel8中 :
恢复方式:
如果文件丢失后系统未重启,直接在shell中执行以下命令:
rhel7
grub2-mkconifg > /boot/grub2/grub.cfg
rhel8:
kerne-install add 内核版本号 内核镜像
kernel-install add $(uname -r) /lib/modules/$(uname -r)/vmlinuz
如果文件丢失后系统重启,那么就需要手动引导(rhel7和rhel8相同):
set root='hd0,msdos1'
linux16 /vmlinuz-4.18.0-80.el8.x86_64 ro root=/dev/nvme0n1p2
initrd16 /initramfs-4.18.0-80.el8.x86_64.img
boot
注意:如果忘记根分区,可以在挽救模式输入命令查看并恢复也行
rhel8中:
注意:手动引导完成后是不能让系统永久记录这次引导过程的,所以还需要用命令修复引导文件,具体修复方法如下:
五、内核加载
内核加载所需要读取的文件:
/boot/vmlinuz-$(uname -r)
加载内核的作用:
1、系统初始化硬件设备(对硬件进行初始化)
2、只读模式挂载根设备,为下一步系统初始化做准备,因为只有挂载后才能读取里面的数据,从而加载服务并对服务进行初始化
模拟问题及解决方法
模拟问题:
删掉加载内核所需的文件
rm -fr /boot/vmlinuz-$(uname -r)
重启系统发现文件丢失
解决方法:重装内核
步骤:
1、进入到挽救模式
2、
chroot /mnt/sysimage
mount /dev/cdrom /mnt #挂载镜像
cd /mnt/BaseOS/Packages #进入到安装包目录
rpm -ivh kernel-core-xxxxx.rpm --force #rhel8安装内核文件
rpm -ivh kernel-xxxxx.rpm --force #rhel7安装内核文件
六、系统初始化镜像
1、系统初始化镜像文件名字:/boot/initramfs-4.18.0-80.el8.x86_64.img
2、该文件作用:
加载系统时钟
加载selinux
加载系统主机信息
加载/etc/fstab文件中磁盘挂载策略
加载磁盘配额
初始化系统程序,开启开机启动服务
开启虚拟控制台
开启图形
模拟问题及解决方法
rhel7和rhel8中完全相同:
模拟问题:
rm -fr /boot/initramfs-xxxxx.img
解决方法:
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
注意:删除文件后如果未重启则直接在shell里运行恢复文件的命令,如果重启则需要进入到挽救模式然后执行该命令
七、系统启动级别
级别 | 含义 |
---|---|
0 | 关机 |
1 | 单用户 |
2 | 无图形网络模式 |
3 | 无图形网络模式 |
4 | 无图形网络模式 |
5 | 有图形网络模式 |
6 | 重启 |
模拟问题及解决方法
模拟问题:
systemctl set-default reboot.target
解决方法:
1、在开机选择界面按进入到引导文件编辑模式
2、在内核加载选项最后加入启动级别5,手动启动系统
ctrl+x退出
3、启动完成后,在shell中需要执行命令systemctl set-default graphical.target,否则系统再次重启时仍然会出现无限次重启的问题
八、忘记超级用户密码
解决办法
1.在开机选择界面按进入到引导文件编辑模式
2.在内核加载选项将无用的参数删除,从最后一直删除到ro,然后更改ro(只读)为rw(读写),加入rd.break参数终止系统启动,进入单用户模式,ctrl+x启动
3、
chroot /sysroot
echo wxy | passwd --stdin root
touch /.autorelabel
#当/.autorelabel文件存在selinux会重新初始化
在selinux关闭状态下不需要执行该条命令