Linux入门(14)——系统启动修复
1. Linux系统启动流程
- 通电
- BIOS初始化
按照BIOS所设定的系统启动流程,根据引导次序(Boot Sequence)自上而下的寻找对应存储设备上操作系统的MBR,如果MBR存在,则会读取MBR中的bootloader,并初始化硬件时钟。
- 磁盘引导
MBR(bootloader)会根据MBR所指引的活动分区上寻找系统分区中的 bootloader,bootloader称为是一段程序,占据446字节。RHEL系统中bootloader为grub2引导文件。
- grub2引导
根据MBR找到grub2之后,指向/boot位置,进一步准备加载系统启动所必需的文件。
- 内核加载(kernel)
探索硬件及加载硬件驱动程序,并以读写的方式挂载根文件系统。
- 系统初始化镜像(init进程)
加载系统时钟、selinux、系统主机信息、/etc/fstab文件中磁盘策略、磁盘配额、初始化系统程序开启开机启动服务、开启虚拟控制台、开启图形等根据系统运行级别启动应用。位置:/boot/initramfs-4.18.0-80.el8.x86_64.img
- 系统运行级别
标识 | 含义 |
---|---|
0 | 关机 |
1 | 单用户 |
2 | 无图形网络模式 |
3 | 无图形网络模式 |
4 | 无图形网络模式 |
5 | 有图形网络模式 |
6 | 重启 |
2. 系统启动修复
- 磁盘MBR分区丢失
[root@rhclient Desktop]# dd if=/dev/zero of=/dev/vda bs=446 count=1
# 清空MBR分区
从光驱启动系统,进入救援模式:
# chroot /mnt/sysimage #切换环境至硬盘系统
# grub2-install /dev/vda #重新安装grub2到系统硬盘上
- 引导文件丢失
- /boot/loader/entries/xxx.conf 丢失
[root@rhclient Desktop]# cp /usr/lib/modules/4.18.0-193.el8.x86_64/bls.conf /boot/
[root@rhclient Desktop]# kernel-install add $(uname -r) /boot/vmlinuz-4.18.0-193.el8.x86_64
- /boot/grub2/grub.cfg 丢失
[root@rhclient Desktop]# grub2-mkconfig > /boot/grub2/grub.cfg
若无法进入系统需要启动手动引导:
grub> set root='hd0,msdos1'
grub> linux16 /vmlinuz-4.18.0-193.el8.x86_64 ro root=/dev/vda1
grub> initrd16 /initramfs-4.18.0-80.el8.x86_64.img
grub> boot
- vmlinuz文件丢失
[root@rhclient Desktop]# cp /usr/lib/modules/$(uname -r)/vmlinuz /boot/vmlinuz-$(uname -r)
或进入救援模式
[root@rhclient Desktop]# chroot /mnt/sysimage
[root@rhclient Desktop]# cp /usr/lib/modules/$(uname -r)/vmlinuz /boot/vmlinuz-$(uname -r)
- init镜像文件丢失
[root@rhclient Desktop]# mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
或进入救援模式
# chroot /mnt/sysimage
# mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
- /boot 分区完全丢失
进入救援模式,分别安装引导以及生成引导配置文件。挂载光驱至/mnt/,在光驱系统软件仓库中为硬盘系统重新安装内核程序。
# chroot /mnt/sysimage
# grub2-install /dev/sda
# grub2-mkconfig > /boot/grub2/grub.cfg
# mount /dev/cdrom /mnt/
# cd /mnt/BaseOS/Packages/
# rpm -ivh kernel-core-xxxx.rpm --force
- 系统运行级别错误
在开机界面按e进入编辑菜单,在内核加载选项最后加入启动级别5,进入系统重新设定运行级别。
[root@rhclient Desktop]# systemctl set-default graphical.target
- 超级用户密码丢失
在开机界面按e进入编辑菜单,将内核加载选项中删除ro及之后的内容,增加rw rd.break。启动系统,运行:
# chroot /sysroot
# echo PASSWORD | passwd --stdin root
# touch /.autorelabel
3. 练习
-
MBR丢失
主硬盘为nvme0n1
进入救援模式,安装引导。
-
grub引导丢失
手动引导
进入系统,安装grub.cfg
-
/boot 分区丢失
安装内核后依然无法启动,重装系统初始化镜像与内核加载程序
推断为首次进入救援模式时,安装内核未使用强制安装,系统检验到原内核程序的残留文件,因而判断内核完好,未进行安装步骤。重新强制安装内核,生成引导。成功进入系统。 -
root用户密码丢失
在引导界面 进入编辑
启动,重设密码