大家都知道/boot很重要,里面存放着内核和BootLoader的引导文件,如果这个目录被删除了,那系统肯定起不来,下图就是删除后的启动状态(此次以centos6为例):
要修复/boot,就要修复里面最重要的几个文件:
- /boot/vmlinuz --内核文件
- /boot/initramfs --虚拟内存盘,
- /boot/grub/grub.conf --grub2 stage2的核心配置文件
有两种修复方式,都是进入救援模式,怎么进救援模式呢?如果是虚拟机的话,在第一个进度条那里快速按一下键盘上的ESC,进入启动选择界面,如下,在这里选择第3项,进入光盘引导,再选择第3项,进入Rescue模式。
先来看方式一:
(这里省了几个截图,一路点下去就是)此时系统默认的根为/boot所在分区,而原来的分区被挂载到了/mnt/sysimage下,所以第一步就是要切换根,挂载光盘,因为内核文件在安装系统时是直接从光盘中拷贝过来的,所以这个文件再从光盘中拷贝过来就是:
# chroot /mnt/sysimage
# mkdir -p /mnt/cdrom
# mount /dev/sr0 /mnt/cdrom
# cp /mnt/cdrom/isolinux/vmlinuz /boot/vmlinuz-`uname -r`
第二步,生成initramfs文件,
# mkinitrd /boot/initramfs-`uname -r`.img `uname -r`
贴个图(只需看其中关键的几行即可):
第三步,用grub-install生成/boot/grub下的文件:
# grub-install /dev/sda
此时检查一下/boot目录下,是否该有的文件都有了
好了,还差最后一个grub stage2的配置文件grub.conf,手动建一个,也可以从光盘中拷贝过来,我这里就拷贝一个,
# cp /mnt/cdrom/isolinux/grub.conf /boot/grub/
复制过来的文件是这样:
修改为如下,注意:这里需要指定根目录,如果不清楚根目录在哪个分区,可执行df查看
在这里插入图片描述](https://img-blog.csdnimg.cn/20190529114522522.png)
保存后退出,执行两次exit,回到线这个页面重启
Ok,正常进入桌面
再来看方法二,和方法一不同的地方就是vmlinuz、initramfs这两个文件是靠安装内核包自动生成的。具体请看下文:
- 进入Rescue模式,
- 挂载光盘(先不切根)
- 安装kernel
# rpm -ivh /mnt/cdrom/Packages/kernel-`uname -r`.rpm --root=/mnt/sysimage/ --force
可以查看一下是否生成文件:
- 切根,执行grub-install生成grub目录下的必要文件
- 手动添加/boot/grub/grub.conf
至此再重启即可。