文章目录
前言
不正确的操作会导致系统出现各种问题,在实际情况中,重装服务器显然是不现实的,因此我们需要了解系统启动原理并据此找到修复的方法。
一、磁盘引导与修复
在启动程序时,磁头经过mbr程序的指引跳转到boot分区,开启系统启动程序,读取相应的配置文件,系统正常启动,因此当 mbr 数据丢失时,系统会因为找不到启动分区而停止启动。
mbr=主引导记录=0磁道1扇区446存储字节
作用:记录 grub2 引导文件的位置
1、问题模拟
dd if=/dev/zero of=/dev/xxx(系统磁盘) bs=446 count=1 ##清空系统/dev/sda 上的 mbr 数据
此时重启系统后会停滞导致无法正常启动
2、恢复方式
(1)在虚拟机关闭模式下设置光盘为第一启动项,应用,从光盘进入系统,选择挽救模式,输入以下命令:
chroot /mnt/sysimage
grub2-install /dev/xxxxxx #重新安装grub2文件到系统硬盘上
(2)执行两次exit,关闭系统,并选择硬盘为第一启动项,启动系统,发现系统可以正常启动
二、grub2 文件引导与修复
文件存储路径:
/boot/grub2/grub.cfg | 总引导文件 |
---|---|
/boot/loader/entries/xxxxxxxxx.conf | 子引导文件 |
删除上述任意一个文件都会导致系统无法正常启动
1、问题模拟1
rm -fr /boot/loader/entries/xxxxxxxxx.conf #删除子引导文件
2、引导及修复过程
引导:
重启系统并执行如下指令
set root='hd0,msdos1'
linux16 /vmlinuz-3.10.0-957.el7.x86_64 ro root=/dev/nvme0n1p2
initrd16 /initramfs-4.18.0-80.el8.x86_64.img
boot
修复:
完成上述引导过程后可正常进入系统,但是还需要修复,否则下次重启还是无法正常启动
cp /usr/lib/modules/4.18.0-193.el8.x86_64/bls.conf /boot/
kerne-install add 内核版本号 内核镜像
kernel-install add $(uname -r) /lib/modules/$(uname -r)/vmlinuz
2、问题模拟2
rm -fr /boot/grub2/grub.cfg #删除总引导文件
3、引导及修复过程
引导:和问题1引导过程相同
修复:
grub2-mkconfig > /boot/grub2/grub.cfg #创建cfg总引导文件
注意:上述问题出现时,如果没有重启系统,可直接用修复过程修复,如果重启系统可利用上述引导操作进入系统,之后同样需要进行修复,以保证之后可以正常进入系统
三、内核加载
加载内核作用:系统初始化硬件设备,只读挂在根目录下的设备
下面展示一些 内联代码片
。
模拟问题:
rm -fr /boot/vmlinuz-$(uname -r)
恢复∶
复制系统中usr下的内核文件到/boot中即可
在关闭模式下选择光盘为第一启动项,启动系统,进入到挽救模式,执行以下命令:
chroot /mnt/sysimage
cp /usr/lib/modules/$(uname -r)/vmlinuz /boot/vmlinuz-$(uname -r)
exit
exit
四、系统初始化镜像
文件:
/boot/initramfs-4.18.0-80.el8.x86_64.img
作用:
加载系统时钟
加载 selinux
加载系统主机信息
加载/etc/fstab 文件中磁盘挂在策略
加载磁盘配额
初始化系统程序开启开机启动服务
开启虚拟控制台
开启图形
(1)问题模拟
rm -fr /boot/initramfs-xxxxx.img #删除镜像文件,系统无法正常启动
(2)引导及修复
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) #恢复初始化镜像文件
五、系统启动级别
0 | 关机 |
---|---|
1 | 单用户 |
2 | 无图形网络模式 |
3 | 无图形网络模式 |
4 | 无图形网络模式 |
5 | 有图形网络模式 |
6 | 重启 |
问题模拟:
systemctl set-default reboot.target
引导及修复:
在开机选择界面按<e>进入到引导文件编辑模式
在内核加载选项最后加入启动级别 5
ctrl+x
systemctl set-default graphical.target
六、超级用户密码忘记
恢复方法:
1.在开机选择界面按<e>进入到引导文件编辑模式
2.在内核加载选项最后删除到 ro 选项
3.更改 ro---->rw
4.加入 rd.break 参数终止系统启动进入单用户模式
5.ctrl+x 启动
6.chroot /sysroot
7.echo lee| passwd --stdin root
8.touch /.autorelabel ##当/.autorelabel 文件存在 selinux 会重新初始化