启动Linux系统时,需要先通电,接着系统会自动进行bios初始化,对硬件进行检测并初始化硬件时钟,之后就进入了 Linux系统引导过程。Linux系统引导过程的具体内容和引导修复方法将在下文中进行详细介绍。由于我们在引导修复时需要利用光盘进入系统,所以需要事先为虚拟机westosa添加一个挂载了系统镜像的光驱:
ps:添加光驱时虚拟机必须关机
Linux系统磁盘上0磁道1扇区内的446字节数据存储的是Linux系统的主引导记录mbr,mbr会告诉系统下一步应该读取哪个分区的数据,其中了记录grub2引导文件的位置,当mbr数据丢失系统会因为找不到启动分区而停止启动。
查看启动分区所在硬盘
[root@westosa ~]# fdisk -l
清空系统启动磁盘/dev/sda上的mbr数据
ps:大小只能是446
[root@westosa ~]# dd if=/dev/zero of=/dev/vda bs=446 count=1
1+0 records in
1+0 records out
446 bytes copied, 4.6178e-05 s, 9.7 MB/s
[root@westosa ~]# reboot
重启系统,系统找不到启动分区,无法启动,问题出现!
打开虚拟机
修改selinux文件为disabled否则会影响系统的启动速度!
系统文件引导过程中需要用到以下两类引导文件:
一个主引导文件:/boot/grub2/grub.cfg
两个子引导文件:/boot/loader/entries/xxxxxxxxx.conf
主引导文件指定启动分区/boot位置,子引导文件指定系统启动时加载的文件名称,这两类文件丢失时系统无法启动。ps:文件损坏时,系统无法启动才需要手动指定操作,如果没有重启系统,直接重新生成引导文件即可!
删除主引导文件,重启系统时
发现系统无法重启,需要手动引导!
启动系统成功!!
进入系统,重新生成主引导文件,引导恢复完成!
[root@westosa Desktop]# grub2-mkconfig > /boot/grub2/grub.cfg
Generating grub configuration file ...
done
[root@westosa Desktop]# cd /boot/grub2/
[root@westosa grub2]# ls
device.map fonts grub.cfg grubenv i386-pc
[root@westosa grub2]# reboot
重启系统成功!
[root@westosa Desktop]# cd /boot/loader/entries/
[root@westosa entries]# ls
00ed87f1fef746369334a619c0a5db43-0-rescue.conf
00ed87f1fef746369334a619c0a5db43-4.18.0-193.el8.x86_64.conf
[root@westosa entries]# rm -fr *
此时启动系统失败!
步骤与上相同!!进入系统重新生成内核引导文件!
[root@westosa Desktop]# uname -r
4.18.0-193.el8.x86_64
[root@westosa Desktop]# kernel-install add 4.18.0-193.el8.x86_64 /lib/modules/4.18.0-193.el8.x86_64/vmlinuz
文件生成后,查看子引导文件已经存在!
再次重启系统,引导恢复成功!
系统启动过程中通过加载/boot/vmlinuz-$(uname -r)这一内核初始化硬件设备,内核丢失后,系统报错无法重新启动。
删除系统内核
如果及时发现,还没有重启系统,直接复制光驱系统中usr下的内核文件到/boot中即可完成恢复
复制方法有两种:
[root@westosa boot]# uname -r
4.18.0-193.el8.x86_64
[root@westosa boot]# cd
[root@westosa ~]#
[root@westosa ~]# cp /lib/modules/4.18.0-193.el8.x86_64/vmlinuz /boot/vmlinuz-4.18.0-193.el8.x86_64
[root@westosa ~]# cd /boot/
[root@westosa boot]# ls
config-4.18.0-193.el8.x86_64
efi
grub2
initramfs-0-rescue-00ed87f1fef746369334a619c0a5db43.img
initramfs-4.18.0-193.el8.x86_64.img
initramfs-4.18.0-193.el8.x86_64kdump.img
loader
System.map-4.18.0-193.el8.x86_64
vmlinuz-0-rescue-00ed87f1fef746369334a619c0a5db43
vmlinuz-4.18.0-193.el8.x86_64
[root@westosa boot]# rm -fr vmlinuz-4.18.0-193.el8.x86_64
[root@westosa boot]# cp /lib/modules/4.18.0-193.el8.x86_64/vmlinuz /boot/vmlinuz-$(uname -r)
[root@westosa boot]# ls
config-4.18.0-193.el8.x86_64
efi
grub2
initramfs-0-rescue-00ed87f1fef746369334a619c0a5db43.img
initramfs-4.18.0-193.el8.x86_64.img
initramfs-4.18.0-193.el8.x86_64kdump.img
loader
System.map-4.18.0-193.el8.x86_64
vmlinuz-0-rescue-00ed87f1fef746369334a619c0a5db43
vmlinuz-4.18.0-193.el8.x86_64
复制完成,则恢复成功!
如果删除内核后重启系统了,则需要引导恢复!
删除内核且重启系统了
[root@westosa boot]# ls
config-4.18.0-193.el8.x86_64
efi
grub2
initramfs-0-rescue-00ed87f1fef746369334a619c0a5db43.img
initramfs-4.18.0-193.el8.x86_64.img
initramfs-4.18.0-193.el8.x86_64kdump.img
loader
System.map-4.18.0-193.el8.x86_64
vmlinuz-0-rescue-00ed87f1fef746369334a619c0a5db43
vmlinuz-4.18.0-193.el8.x86_64
[root@westosa boot]# rm -fr vmlinuz-4.18.0-193.el8.x86_64
[root@westosa boot]# reboot
[点击并拖拽以移动]
可见系统无法重启,则先关闭虚拟机,利用光驱启动系统!
进入挽救模式!
chroot /mnt/sysimage
切换到真实系统环境的shell下,复制内核文件到/boot
然后退出系统,关闭虚拟机,利用硬盘启动系统!
开启虚拟机,引导恢复成功!
系统启动过程中需要利用系统初始化镜像 /boot/initramfs-4.18.0-80.el8.x86_64.img来实现以下功能:加载系统时钟;加载selinux;加载系统主机信息;加载/etc/fstab文件中磁盘挂载策略;加载磁盘配额;初始化系统程序开启开机启动服务;开启虚拟控制台;开启图形等等。系统初始化镜像丢失后,系统报错无法重新启动。
删除系统初始化镜像
[root@westosa Desktop]# cd /boot/
[root@westosa boot]# ls
config-4.18.0-193.el8.x86_64
efi
grub2
initramfs-0-rescue-00ed87f1fef746369334a619c0a5db43.img
initramfs-4.18.0-193.el8.x86_64.img
initramfs-4.18.0-193.el8.x86_64kdump.img
loader
System.map-4.18.0-193.el8.x86_64
vmlinuz-0-rescue-00ed87f1fef746369334a619c0a5db43
vmlinuz-4.18.0-193.el8.x86_64
[root@westosa boot]# rm -fr initramfs-4.18.0-193.el8.x86_64.img
[root@westosa boot]#
如果删除后,没有重启系统,使用mkinitrd命令恢复镜像即可!
[root@westosa boot]# mkinitrd /boot/initramfs-4.18.0-193.el8.x86_64.img
No kernel found in /boot
usage: mkinitrd [--version] [--help] [-v] [-f] [--preload ]
[--image-version] [--with=]
[--nocompress]
(ex: mkinitrd /boot/initramfs-4.18.0-193.el8.x86_64.img 4.18.0-193.el8.x86_64)
Creating: target|kernel|dracut args|basicmodules
[root@westosa boot]# ls
config-4.18.0-193.el8.x86_64
efi
grub2
initramfs-0-rescue-00ed87f1fef746369334a619c0a5db43.img
initramfs-4.18.0-193.el8.x86_64.img
initramfs-4.18.0-193.el8.x86_64kdump.img
loader
System.map-4.18.0-193.el8.x86_64
vmlinuz-0-rescue-00ed87f1fef746369334a619c0a5db43
vmlinuz-4.18.0-193.el8.x86_64
删除系统初始化镜像后,如果重启了系统,就需要引导恢复!
[root@westosa boot]# ls
config-4.18.0-193.el8.x86_64
efi
grub2
initramfs-0-rescue-00ed87f1fef746369334a619c0a5db43.img
initramfs-4.18.0-193.el8.x86_64.img
initramfs-4.18.0-193.el8.x86_64kdump.img
loader
System.map-4.18.0-193.el8.x86_64
vmlinuz-0-rescue-00ed87f1fef746369334a619c0a5db43
vmlinuz-4.18.0-193.el8.x86_64
[root@westosa boot]# rm -fr initramfs-4.18.0-193.el8.x86_64.img
[root@westosa boot]# reboot
和之前一样,关闭虚拟机,利用光驱启动系统并进入挽救模式!
进入真实shell环境,恢复镜像!
退出系统,关闭虚拟机,利用硬盘启动系统,引导恢复成功!
统默认启动级别为5,即有图形网络模式,当系统默认启动级别改变时,系统有可能无法正常启动。
系统启动级别分别为:
级别号 | 含义 |
---|---|
0 | 关机 |
1 | 单用户 |
2 | 无图形网络模式 |
3 | 无图形网络模式 |
4 | 无图形网络模式 |
5 | 有图形网络模式 |
6 | 重启 |
设定系统默认启动级别为6,重启虚拟机,系统会一直处于重启状态,无法开启虚拟机
[root@westosa Desktop]# systemctl set-default reboot.target
Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target → /usr/lib/systemd/system/reboot.target.
[root@westosa Desktop]# reboot
[root@westosa Desktop]# systemctl set-default graphical.target
Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target → /usr/lib/systemd/system/graphical.target.
[root@westosa Desktop]# reboot
再次重启,系统正常启动!
当忘记超级用户密码时,系统无法登录