双系统,重装windows后启动linux失败修复方法
一、背景
这几天将windows10 32位升级到64位后(其实是重装,增量升级应该不能实现,如果有方法请留言),使用easybcd添加linux启动项后选择linux启动项,进去就是黑屏,只有一个光标在闪,没有任何文字,第一次碰到这个情况,我慌了,虽然折腾双系统期间经历过各种蛋疼的问题,但是linux始终是能进去的,至少能进个grub rescue模式。蛋疼的修复尝试开始了。
二、正确的方法:
双系统重装windows后,如何找回linux启动项
三、错误的尝试 + 修复grub方法
1.使用easybcd添加linux启动项,找到linux安装盘,添加启动引导选项,重启,选择该选项,进入之后还是一片黑,没有任何字符提示。
2.多次尝试后依然失效。在windows界面使用硬盘安装linux方法(没带制作好的ubuntu引导的u盘),进入try ubuntu系统,在命令行内输入 以下命令:
sudo update-grub
sudo grub-install/dev/sda
重启系统,开机时能看到grub引导界面,那就成功了,如果还不能进入linux系统,继续看下面。蛋疼的是我只输入了第一个命令,没有运行第二个命令,启动之后还是只能进入黑屏。
但是有一个改变是能够看到grub> 的提示。本来以为大功告成了,因为这个界面熟之又熟,岂料又是本人的知识浅陋。
3.网上找了各种修复grub的方法。如:Grub
Rescue修复,年轻还是要多折腾
发现根本就不能执行,原来他们多了个rescue 字样,两种不同的模式。执行的命令肯定也完全不同。
而此时已经再也进不去windows系统,玩不了硬盘安装linux的把戏,也没有u盘可以使用,只能硬着头皮玩grub了。
4.找到各种grub模式下的修复方法,测试可行的方法:通过GRUB命令行来启动Linux操作系统。
以下是我的系统最终执行命令,但切勿照抄(当然抄了也不会有更严重的后果,还是启动不了而已),模仿即可:
grub> root (hd1,5)
grub> kernel (hd1,5)/vmlinuz ro root=/dev/hda
grub> initrd /boot/initrd-xxxxx.img
grub> boot
以上命令有空格的地方都加大了间隙,实际只要输入一个空格,没有空格的地方千万不能有空格!!
5.步骤详解。
a)要找到上面命令每个参数的值,可以使用tab键,第一个命令输入root (hd ->tab键,系统列出一系列电脑中的硬盘,选择linux所在的硬盘,譬如root (hd1, 再按tab键,列出该硬盘中的磁盘分区,选择linux所在的分区号,譬如 root (hd1,5)。至此,第一个命令已执行完毕,继续。
b) 在上一步基础上输入: kernel (hd1,5)/vmlinuz ro root=/dev/hda
其中root=/dev/hda hda是我需要安装grub的磁盘(我有两块硬盘,如果需要安装到另外一块硬盘上选择hdb,其他的以此类推)。
(hd1,5)/vmlinuz 是上一步骤中的linux安装盘中的vmlinuz文件。ro就是只读模式
c) 输入initrd /boot/initrd- 按tab键,找到最新的系统镜像 xxx.img
d) boot 开始引导系统,进入linux系统。如果还是启动不了重复以上步骤知道可以。
e) 还没大功告成,再次重启还是需要重复以上步骤,所以需要在进入linux后运行以下命令:
sudo update-grub
sudo grub-install/dev/sda
此文章是记录自己的错误修复之旅,主要介绍grub模式下的修复方式,正常只要照着 正确的方法 操作即可。