Linux系统出现问题该如何解决

自举功能
*:具备引导能力 可以自举


1.硬盘引导阶段:

MBR主引导记录的恢复:

MBR:MBR的作用是为了记录/boot目标所在分区位置

磁盘的0磁道1扇区的前446字节。

模拟问题:dd if=/dev/zero of=/dev/xda bs=446 count=1

解决办法:

grub2-install  ##启动分区所在的硬盘

grub2-install  /dev/sda

手动引导
第一块硬盘的第一个分区
set


2.文件引导阶段:
1)引导文件丢失
/boot/grub2/grub.cfg  ##指定/boot分区位置,加载内核并且只读挂载根,启动系统初始化进程 grub2-mkconfig。
模拟问题:rm -fr /boot/grub2/grub.cfg

在这之前df查看根分区和/boot分区上挂载的文件系统名称

Linux系统出现问题该如何解决

解决办法:
当系统没有重新启动时:
grub2-mkconfig > /boot/grub2/grub.cfg  ##即可修复

当系统被重新启动:

Linux系统出现问题该如何解决

Linux系统出现问题该如何解决

grub > set root='hd0,msdos1'    ##此位置是不固定的,位置指定/boot所在分区
grub > linux16 /vmlinuz-3.10.0-123.el7.x86_64 ro root=/dev/sda1   ##根分区的设备名称
grub > initrd16 /initramfs-3.10.0-123.el7.x86_64.img
grub > boot

Linux系统出现问题该如何解决
以上操作可以使系统正常启动,但是是临时的,所以进入系统后还是需要执行:
grub2-mkconfig > /boot/grub2/grub.cfg

Linux系统出现问题该如何解决
2)内核文件丢失

模拟问题:rm -fr /boot/vmlinuz-3.10.0-123.el7.x86_64

Linux系统出现问题该如何解决

解决办法:

进入到挽救模式:

chroot /mnt/sysimage

mkdir /rhel7

mount  /dev/sr0  /rhel7

cd /rhel7/Packages

cp kernel-3.10.0-123.el7.x86_64.rpm /mnt

cd /mnt

rpm2cpio kernel-3.10.0-123.el7.x86_64.rpm | cpio -id

cd boot

cp vmlinuz-3.10.0-123.el7.x86_64 /boot

exit

exit

Linux系统出现问题该如何解决

3)系统初始化镜像文件丢失
模拟问题:rm -fr /boot/initramfs-3.10.0-514.el7.x86_64.img

解决办法:

当系统没有重启时:mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)

Linux系统出现问题该如何解决

mkinitrd 内核版本
uname -r 查看内核版本
有报错但不影响

当系统重启后:进入挽救模式

Linux系统出现问题该如何解决

Linux系统出现问题该如何解决

Linux系统出现问题该如何解决

chroot /mnt/sysimage

mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)

Linux系统出现问题该如何解决

4)当/boot分区被删除

模拟问题:rm -fr /boot/*

Linux系统出现问题该如何解决

解决办法:

进入挽救模式

chroot /mnt/sysimage

mkdir /boot

grub2-install  /dev/sda

mount /dev/cdrom /mnt

rpm -ivh /mnt/Packages/kernel-3.10.0-123.el7.x86_64.rpm --force

grub2-mkconfig > /boot/grub2/grub.cfg

 


5)启动级别被篡改

错误形成:systemctl set-default reboot.target

解决办法:

开机按上下键停止读秒

按“E”进入编辑模式

选择内核启动行

linux16 /vmliunz-xxxxxx ro xxxxxxxxxxxxxx

改为:

linux16 /vmliunz-xxxxxx ro xxxxxxxxxxxxxx  5

ctrl+x 启动系统


test5:运行环境有问题
bash破坏
cp /bin/bash /mnt/sysimage/bin
exit
exit