Linux引导过程及引导修复(误删/boot/的所有文件做法)
Linux引导过程及引导修复
注:问题模拟和恢复都可以在虚拟机里面做
磁盘引导
mbr =主引导记录=0磁道1扇区446
作用:记录grub2引导文件的位置,当mbr数据丢失系统会因为找不到启动分区而停止启动。
问题模拟:
-
dd if=/dev/zero of=/dev/vda bs=446 count=1
-
reboot后出现的情况
恢复方法:
-
先给主机断电,才可以修改该主机的启动方式为光盘启动,进入救援模式
(1) ,如果没有光盘可以手动添加光盘
(2)进入救援模式的步骤 -
chroot /mnt/sysimage #进入需要恢复的系统的挂载目录下
-
grub2-install /dev/vda #重新获得mrb文件
-
两次exit退出,切换该系统的启动模式为硬盘启动
grub2文件引导
文件:/boot/loader/entries/xxxxxxxxx.conf
作用:指定/boot位置,指定系统启动时加载文件
问题模拟:
-
rm -fr /boot/loader/entries/xxxxxxxx.conf
-
reboot后出现的问题
恢复方法:
- 手动引导就可以进入系统
- 重新下载这两个文件
内核加载
作用:系统初始化硬件设备
问题出现:
-
rm -fr /boot/vmlinuz-$(uname -r) #$(uname -r) 的意思是 先执行括号里面的命令 uname -r 意思是查找内核的版本号
-
reboot的结果
恢复方法:
-
切换到救援模式
-
进入 chroot /mnt/sysimage
-
mkdir /westosdir #建立一个westosdir目录
-
mount /dev/cdrom /westosdir #将光盘挂载到这个目录里面
-
cp /westosdir/Baseos/Packages/kernel-core-$(uname -r).rpm /mnt #将内核的安装包复制到/mnt目录里面
-
cd /mnt #进入/mnt
-
rpm2cpio kernel-core-$(uname -r).rpm |cpio -id #把这个安装包的文件解压出来到当前的目录
-
cp /mnt/lib/modules/$(uname -r)/vmlinuz /boot/vmlinuz-$(uname -r) #复制软件包里的内核初始化文件到/boot里面,复制过去的文件需要修改名称
-
两次exit退出,选择硬盘启动就好了
系统初始化镜像
文件:/boot/initramfs-4.18.0-80.el8.x86_64.img
作用:加载系统时钟,加载selinux,加载系统主机信息,加载/etc/fstab文件中磁盘挂在策略,加载磁盘配额,初始化系统程序开启开机启动服务,开启虚拟控制台,开启图形
问题出现:
- rm -fr /boot/initramfs-xxxxx.img
- reboot
恢复方法:
- 进入救援模式
- chroot /mnt/sysimage
- mkinitrd /boot/initramfs-$(uname -r) $(uname -r) #恢复系统初始化镜像文件
- 两次exit,改成硬盘启动
系统启动级别
问题出现:
- systemctl set-default reboot.target #设置用户的启动级别为0
- reboot之后系统一直在重启过程中
恢复方法:
-
在开机选择界面按,进入到引导文件编辑模式,在内核加载选项最后加入启动级别5,ctrl+x执行
-
进入系统之后,修改系统的开机启动级别,systemctl set-default graphical.target
超级用户密码忘记
解决方法
-
在开机选择界面按进入到引导文件编辑模式
-
在内核加载选项最后删除到ro选项
-
更改ro---->rw
-
加入rd.break参数终止系统启动进入单用户模式
-
ctrl+x启动
-
chroot /sysroot
-
echo 密码 | passwd --stdin root
-
touch /.autorelabel #当/.autorelabel文件存在selinux会重新初始化
-
两次exit重新启动,密码就被修改成功了
当/boot/ 下的所有文件都被删除了
问题出现:
- rm -fr /boot/*
- reboot出现的情况
恢复方法
-
进入救援模式
-
chroot /mnt/sysimage
-
cd /boot #进入/boot
-
mount /dev/cdrom /mnt #挂载光盘到/mnt
-
cp /mnt/BaseOS/Packages/kernel-core-4.18.0-80.el8.x86_64.rpm /boot #复制安装包到/boot
-
grub2-install /dev/vda #重新获取磁盘引导mbr
-
rpm -ivh kernel-core-4.18.0-80.el8.x86_64.rpm --force #重新下载安装包到当前目录
-
两次exit之后,切换硬盘启动,重启系统
-
grub2文件引导
-
grub2-mkconfig > /boot/grub2/grub.cfg #建立配置文件