丢失grub.conf后系统重启进入grub>命令行界面
CentOS6下的解决办法
先将根指定为boot分区
grub> root (hd0,0)
#这里指定为第一块硬盘hd0的第一个分区0,根据你实际系统的分区指定
指定内核的位置和真正启动后根分区的位置
grub> kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=/dev/sda3
#指定内核的位置,基于上一步指定的根的位置,ro(readonly),root=/dev/sda3 指定系统实际的/分区
指明initramfs路径,启动系统时加载驱动
grub> initrd /initramfs-2.6.32-504.el6.x86_64.img
#指定initramfs的位置,系统有多个内核时,确认好对应的版本。
启动
grub> boot
#上述都确认后,输入boot命令启动。如无法正常启动,请再次检查上面步骤参数。
系统启动后,重新生成grub.conf
#这个没有找到命令,可以从其他机器拷贝一份,或者自己写一个。
#CentOS7中有命令可以自动生成!
CentOS7下的解决办法
查看有所有的磁盘分区
grub> ls
(hd0) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1) (fd0)
#硬盘hd0的第一个分区msdos1相当于sda1
确定boot分区
grub> ls (hd0,msdos1)/grub2
#我的sda1为boot分区,按情况修改。
#如果boot分区没有单独挂出来的话,可以指定/分区查看,如下:
grub> ls (hd0,msdos3)/boot/grub2
将boot分区指定为临时根分区
grub> set root=hd0,msdos1
#和centos6相比略有区别
指定内核的位置和真正启动后根分区的位置
grub> linux16 /vmlinuz-3.10.0-514.el7.x86_64 root=/dev/sda3
#linux16或者linuxefi命令指定内核的位置,基于上一步指定的根的位置
#root=/dev/sda3 指定系统实际的/分区
指明initramfs路径,启动系统时加载驱动
grub> initrd16 /initramfs-3.10.0-514.el7.x86_64.img
#使用initrd16或者initrdefi命令指定initramfs的位置,系统有多个内核时,确认好对应的版本。
启动
grub> boot
#上述都确认后,输入boot命令启动。如无法正常启动,请再次检查上面步骤参数。
系统启动后,重新生成grub.cfg
# grub2-mkconfig -o /boot/grub2/grub.cfg
注意:grub配置文件的位置和名字
CentOS6中为/boot/grub/grub.conf
CentOS7中为/boot/grub2/grub.cfg