Linux系统修复
- 硬盘引导阶段
模拟问题:dd if=/dev/zero of=/dev/vda bs=446 count=1 开机主引导记录被破坏
解决 : 使用光盘启动,进入rescue模式(需要Force off结束虚拟机启动程序)
chroot /mnt/sysimage 切换根目录从挽救环境至系统真实环境
grub2-install /dev/vda 启动分区所在硬盘
exit 退出真实环境
exit 退出挽救环境
取消光盘启动模式,进行重启
- 文件引导阶段
引导文件丢失
模拟问题;rm-fr /boot/grub2/grub.cfg 开机引导文件丢失
当系统没有重新启动时
grub2-mkconfig > /boot/grub2/grub.cfg 导入开机启动文件
当系统重启启动时
grub > set root ='hd0,msdos1' 引导更改第一个磁盘的第一个分区
grub > linux16 /boot/vmlinuz-3.10.0-123.el7.x86_64 root=/dev/vda1 引导内核文件至驱动设备
grub > initrd16 /boot/initramfs-3.10.0-123.el7.x86_64.img 引导初始化镜像文件
grub > boot
grub2-mkconfig > /boot/grub2/grub.cfg 重启之后,导入开机启动文件
- 内核文件丢失
模拟问题:rm -rf /boot/vmlinuz-3.10.0-123.el7.x86_64 内核文件丢失
进入rescue模式(硬盘启动)
chroot /mnt/sysimage
mkdir /rhel7
mount /dev/sr0 /rhel7 挂载光驱
cd /rhel7/Packages
cp kernel-3.10.0-123.el7.x86_64.rpm /mnt 复制安装包相关文件到/mnt
cd /mnt
rpm2cpio kernel-3.10.0-123.el7.x86_64.rpm |cpio -id 拆解安装包找到内核相关文件
cd /mnt/boot
cp vmlinuz-3.10.0-123.el7.x86_64 /boot 拷贝内核文件到/boot
exit
exit
取消光盘启动模式,进行重启
- 初始化镜像文件丢失
模拟问题:rm -rf /boot/initramfs-3.10.0-123.el7.x86_64.img
当系统未重启时
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) 添加初始化镜像文件
当系统重启后
进入rescue模式
chroot /mnt/sysimage
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
exit
exit
取消光盘启动模式,进行重启
- 当/boot分区被删除掉
进入rescue模式
chroot /mnt/sysimage
mkdir /boot
grub2-install /dev/vda 启动分区所在硬盘
mount /dev/sr0 /mnt 挂载光驱到/mnt
rpm -ivh /mnt/Packages/kernel-3.10.0-123.el7.x86_64.rpm --force 强制拆解安装内核安装包(会覆盖之前文件残留)
grub2-mkconfig > /boot/grub2/grub.cfg 导入开机启动文件
- 当开机启动级别被篡改
模拟问题
systemctl set-default reboot.target
解决办法:
开机按上下键停止读秒
按e编辑
选择内核启动行
linux16 /vmlinuz-xxxxx ro xxxxx 改为:linux16 /vmlinuz-xxxxx rw rd.break
ctrl+x 进入挽救环境
chroot sysroot
rm -rf /etc/systemd/system/default.target 删除被篡改的软连接
ln -s /lib/systemd/system/graphical.target /etc/systemd/system/default.target 创建新的软连接
exit
exit
取消光盘启动模式,进行重启