CentOS7下的解决办法
- 查看有所有的磁盘分区:grub> ls
(hd0) (hd0,gpt0) (hd0,gpt1) (hd0,gpt2) (hd1)
#硬盘hd0的第一个分区gpt1相当于sda1
- 确定boot分区: grub> ls (hd0,x)/ 或者 ls (hd0,x)/grub2 或者grub> ls (hd0,x)/boot/grub2
##x为盘数目,一个一个的查找直到找到镜像
- 将boot分区指定为临时根分区
grub> set root=hd0,gpt2
- 指定内核的位置和真正启动后根分区的位置
grub> linux /vmlinuz-4.14.0-115.el7a.x86_64 root=/dev/sda3
#linux16或者linuxefi命令指定内核的位置,基于上一步指定的根的位置
#root=/dev/sda3 指定系统实际的/分区
- 指明initramfs路径,启动系统时加载驱动
grub> initrd /initramfs-4.14.0-115.el7a.x86_64.img
#使用initrd16或者initrdefi命令指定initramfs的位置,系统有多个内核时,确认好对应的版本。
- 启动
grub> boot
#上述都确认后,输入boot命令启动。如无法正常启动,请再次检查上面步骤参数。
- 系统启动后,重新生成grub.cfg
也可以利用find / -name "grub.cfg" ##查找相应的路径
# grub2-mkconfig -o /boot/grub2/grub.cfg
#cat /boot/grub2/grub.cfg |grep menuentry #查看启动项的内核数
注意:grub配置文件的位置和名字
CentOS6中为/boot/grub/grub.conf
CentOS7中为/boot/grub2/grub.cfg