启动故障排错和修复

示例1

环境:centos6.10
故障:删除/sbin/init,删除系统第一个启动进程,导致无法启动 思路:首先要明白init是由软件包安装的,其次此软件包存在于光盘中,可以将软件包中此文件导出

方法如下: a)开机进入grub菜单,更改内核启动加载一个进程为init=/bin/bash b)进入bash后,由于是只读文件系统需要重新以读写方式挂载,否则后续拷贝文件会出错:mount -o remount,rw / c)挂载光盘,目的是为了找到里面的安装init的包:mount /dev/sr0 /mnt/ d)由于init是由upstart包安装的,执行如下操作拷贝其中的init文件 rpm2cpio /mnt/Packages/upstart-0.6.5-17.el6.x86_64.rpm |cpio -idv ./sbin/init
e)将系统进程文件放入根分区的sbin下即可:mv ./sbin/init /sbin/init

重启即可

示例2

环境:centos6.10 故障:删除boot分区和启动加载脚本 思路:由于内核和引导都是在boot分区中,删除了boot分区,系统无法正常启动,无法进入grub,并且grub.conf,启动菜单也没有了。并且没有挂载执行脚本,根和swap都无法自动挂载。必须进入光盘救援模式。重新挂载,找到根分区,并安装内核,生成grub并制作启动菜单grub.conf.

方法如下: A:挂载根分区 a)查看分区表信息:fdisk -l (可以看到各分区的容量) b)除了swap分区外,尝试挂载(通常根分区比boot分区大) mount /dev/sda2 /mnt/sysimage c) 尝试切根:chroot /mnt/sysimage ;ls 可以查看根下目录 d)重新制作fstab开机挂载文件如下: vi /mnt/sysimage/etc/fstab /dev/sda1 /boot defaults 0 0 /dev/sda2 / defaults 0 0 /dev/sda3 swap swap 0 0 e)重启即可看到各个分区的挂载情况,但是boot的内核和启动菜单并没有生成,所以无法正常启动。

B:生成内核和启动菜单 a)进入光盘救援模式 b)切根:chroot /mnt/sysimage c)挂载光盘:mount /dev/sr0 /mnt d)安装内核:yum reinstall -y kernel (由于是删除了内核并不是卸载所以要使用reinstall) e)修复grub:grub-install /dev/sda (过程可能有点慢) f)生成启动菜单grub.conf: vim /boo/grub/grub.conf default=0 timeout=3 title centos6.10 linux root (hd0,0) kernel /vmlinuz-2.6.32-754.el6.x86_64 root=/dev/sda2 rhgb quiet
initrd /initramfs-2.6.32-754.el6.x86_64.img

vmlinz和initramfs可以从命令行读入,方法是vim的匹配模式

:r!ls /boot/vmlinuz********(initramfs**********)

C:重启即可:reboot