文章目录
前言
不正确的操作会导致系统出现各种问题,在实际情况中,重装服务器显然是不现实的,因此我们需要了解系统启动原理并据此找到修复的方法。
一、磁盘引导与修复(使用光盘启动)
在启动程序时,磁头经过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)在虚拟机关闭模式下设置光盘为第一启动项,应用,从光盘进入系统,
1)在nodea的管理界面,点击灯泡按钮,添加新磁盘,选择镜像,作为光盘启动
2)使用光盘启动进入挽救模式(更改启动盘后Apply后,点击黑色倒三角按钮选择force off后更改启动盘生效,再点击播放按钮进行光盘启动,点击显示屏按钮进入显示界面)
3)选择挽救模式选择挽救模式,输入以下命令:
chroot /mnt/sysimage
grub2-install /dev/xxxxxx #重新安装grub2文件到系统硬盘上 /dev/vda是虚拟机nodea的系统磁盘是vda
(2)执行两次exit,关闭系统,并选择nodea硬盘为第一启动项,启动系统,发现系统可以正常启动
二、grub2 文件引导与修复(不用光盘启动)
文件存储路径:
/boot/grub2/grub.cfg | 总引导文件 |
---|---|
/boot/loader/entries/xxxxxxxxx.conf | 子引导文件 |
删除上述任意一个文件都会导致系统无法正常启动
查看挂载情况:虚拟机nodea的磁盘为vda,vda1挂载在/boot下,vda2挂载在/下
1、问题模拟1
rm -fr /boot/loader/entries/xxxxxxxxx.conf #删除子引导文件
2、引导及修复过程
修复(未重启系统):
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
引导(已经重启系统):
重启系统并执行如下指令
set root='hd0,msdos1'#0磁道1扇区
linux16 /vmlinuz-4.18.0-193.el8.x86_64 ro root=/dev/vda2#df命令查看vda2挂载在根上
initrd16 /initramfs-4.18.0-193.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#$(uname -r)表示内核版本号
3、问题模拟2
rm -fr /boot/grub2/grub.cfg #删除总引导文件
4、引导及修复过程
修复(未重启系统):
grub2-mkconfig > /boot/grub2/grub.cfg #创建cfg总引导文件
引导(已重启系统):
和问题1引导过程相同
引导完还要再修复:
grub2-mkconfig > /boot/grub2/grub.cfg #创建cfg总引导文件
引导完不要忘记修复,负责再次重启仍会报错
注意:上述问题出现时,如果没有重启系统,可直接用修复过程修复,如果重启系统可利用上述引导操作进入系统,之后同样需要进行修复,以保证之后可以正常进入系统
三、内核加载(使用光盘启动)
/boot/vmlinuz-$(uname -r)
加载内核作用:系统初始化硬件设备,只读挂在根目录下的设备
没重启直接修复,虚拟机重启了要光盘启动引导修复
模拟问题:
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-4.18.0-193.el8.x86_64.img #删除镜像文件,系统无法正常启动
(2)引导及修复
使用光盘启动
进入修复界面
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) #恢复初始化镜像文件,$(uname -r)=4.18.0-193.el8.x86_64表示内核版本
exit
exit
更换启动盘,启动nodea
五、系统启动级别(不用光盘启动项)
0 | 关机 |
---|---|
1 | 单用户 |
2 | 无图形网络模式 |
3 | 无图形网络模式 |
4 | 无图形网络模式 |
5 | 有图形网络模式 |
6 | 重启 |
问题模拟:
systemctl set-default reboot.target
引导及修复:
在开机选择界面按进入到引导文件编辑模式
在内核加载选项最后加入启动级别 5
ctrl+x
在nodea中执行,改为图形界面启动:
systemctl set-default graphical.target
六、超级用户密码忘记(不用光盘启动项)
恢复方法:
1.在开机选择界面按进入到引导文件编辑模式
2.在内核加载选项最后删除到 ro 选项
3.更改 ro---->rw
4.加入 rd.break 参数终止系统启动进入单用户模式
5.ctrl+x 启动
6.chroot /sysroot
7.echo lee| passwd --stdin root#lee是新密码,root是指对系统用户设置密码
8.touch /.autorelabel ##当/.autorelabel 文件存在 selinux 会重新初始化
exit
exit
七、实验rm-fr /boot/*
步骤:
选择光盘启动,进入挽救模式,#chroot /mnt/sysimage/
光盘vdc挂载在/media上是为了使用光盘镜像里的软件包
(2)换成nodea盘启动
(3)引导,把下面grub第二行换为 root=/dev/vda2,因为df可以查到根/挂载在vda2下面(这个挂载在那里需要根据实际情况去确定不唯一)
(4)进入nodea中还要修复
注意
1.首先要确定nodea的系统盘
vda为nodea的系统盘对应硬盘VirtIO Disk1
vdb对应硬盘VirtIO Disk2
光盘启动对应硬盘VirtIO Disk3
2.上面问题,如果产生问题时没有重启虚拟机,只需要修复即可,不用使用光盘启动。如果出错后重新启动虚拟机就需要引导再修复。
3.在vim /etc/sysconfig/selinux,把selinux设置为disabled,这样不用每个都扫描,修复的快。