Linux的系统引导修复方案
1.Linux的引导过程
2.mbr引导记录的修复
- 模拟问题
dd if=/dev/zero of=/dev/vda bs=446 count=1
重启虚拟机:发现启动不了
- 解决问题
step1 设定光驱启动
virt-manager ##在其中选择要设定的虚拟机,设定光驱启动后,reboot
注意:设定光驱启动前把虚拟机断电
step2 进入挽救模式
troubelshooting- - ->>>Rescue- - ->>>按1- - ->>>按回车
step3 输入:
chroot /mnt/sysimage
grub2-install /dev/vda ##启动分区所在硬盘
step4 设置硬盘启动
3.引导文件丢失的解决方案
- 模拟问题
rm -rf /boot/grub2/grub.cfg ##删除引导文件
删除后重启系统时,系统就无法启动
- 解决问题
#当系统没有重新启动时:
grub2-mkconfig > /boot/grub2/grub.cfg
#当系统被重新启动时:
注意:重启后修复的前提是要知道根分区在哪里,boot和根是否分开,如果不知道这些信息则无法修复
重启后:
输入:
grub > set root='hd0,msdos1' ##此位置不固定,位置指定/boot分区
grub > linux16 /vmlinuz-3.10.0-514.el7.x86_64 ro root=/dev/vdb3 ##根分区的设备名称
grub > initrd16 /initramfs-3.10.0-514.el7.x86_64.img
grub > boot
注意:以上操作可以使系统正常启动,但是是临时的,所以进入系统后还需要执行
grub2-mkconfig > /boot/grub2/grub.cfg
4.内核丢失的解决方案
- 模拟问题
rm -fr /boot/vmlinuz-3.10.0-514.el7.x86_64 ##由于安装系统版本不同,vmlinux后面的可能会不同,可以用tab键补齐
- 解决问题
step1 设定光驱启动
step2 进入挽救模式
step 3 输入:
chroot /mnt/sysimage
mount /dev/cdrom /media
cd /media/Packages
cp kernel-3.10.0-514.el7.x86_64.rpm /mnt
cd /mnt
rpm2cpio kernel-3.10.0-514.el7.x86_64.rpm | cpio -id
cd boot
cp vmlinuz-3.10.0-514.el7.x86_64 /boot
exit
exit
完成以上操作后force off强制关闭它,然后设置硬盘启动模式启动即可
5.系统初始化镜像丢失的修复方案
- 模拟问题
rm -fr /boot/initramfs-3.10.0-514.el7.x86_64.img
- 解决问题
#当系统没有重启时:
直接输入以下命令即可
mkinitrd /boot/initramfs-$(uname-r).img $(uname -r)
uname -r ##是查看主机内核的命令
#当系统被重启:
step1 通过光驱启动
step2 进入挽救模式
chroot /mnt/sysimage
mkinitrd /boot/initramfs-$(uname-r).img $(uname -r)
exit
exit
再设置通过硬盘启动即可
6.系统启动级别的修复方案
- 模拟问题
systemctl set-default reboot.target
- 解决问题
step1 通过硬盘启动
step2 开机按上下键停止读秒- - ->>>按E进入编辑模式- - ->>>选择内核启动行- - ->>>将linux16 /vmlinuz-xxxx ro xxxx 改为:
linux16 /vmlinuz-xxxx ro xxxx 5
step3 启动系统 ctrl+x
step4 进入系统中重新设定启动级别
systemctl set-default graphical.target
7.root用户密码破解
- 问题:
忘记root用户密码时
- 解决问题
step1 通过硬盘启动
step2 开机按上下键停止读秒- - ->>>按E进入编辑模式- - ->>>选择内核启动行- - ->>>将linux16 /vmlinuz-xxxx ro xxxx 改为:
linux16 /vmlinuz-xxxx rw rd.break ##在内核启动完成后终止系统初始化程序的执行
step3 启动系统 ctrl+x
step4 设置密码
chroot /sysroot
echo westos | passwd --stdin root ##设定root用户密码为westos
touch /.autorelabel ##重新初始化linux,当selinux未开启时不需要操作
exit
exit