手贱修改了grub导致开机无法进入系统

来源:互联网 发布:cctv5网络直播源 编辑:程序博客网 时间:2024/04/27 07:17

我的机器上早先装有windows 7, 后来由于项目需要就安装了fedora 15之后又升级到16.

安装完双系统以后,每次启动,都是先由grub进行引导,默认的启动系统是fedora,可供选择的界面停留5秒钟左右。 后来发现还是大部分时间在用windows 7,而且经常让我抓狂的是还没来得及选择系统就进入了fedora, 近日有空,于是准备修改grub配置文件来让windows默认启动。

Google了“win7 fedora双系统启动项设置” 各种结果良莠不齐, 悲剧地试了一个方法, 结果SB掉了 (在后面我会附一个正确的方法)


后果很严重, 启动的时候直接进入grub的命令行界面, 而且仅支持很有限的命令(虽然据说grub很好很强大)。肿么办涅? 经过很久的尝试终于从grub命令行成功boot fedora,然后又重新配置了grub的配置文件。 步骤如下

从grub命令行boot fedora

1. 找到boot所在的分区 (装linux的时候有人给boot一个单独的分区, 另外一些会把boot放在root目录下(/))

find /grub/stage1

在我的机器上返回(hd0,4) 意思是boot分区是在第一块磁盘的第5个分区(从0计数)


2. 指定linux内核以及根目录/所在的分区

kernel vmlinuz-version ro root=/dev/???


这里有几种情况

(1) /boot有单独分区

如果之前用grub的命令 root (hd0,4)指定了/boot所在的分区,那么grub会mount这个分区,命令就简化成

kernel /vmlinuz-version ro root=/dev/???

如果之前没有指定那么命令就是

kernel (hd0,4)/vmlinuz-version ro root=/dev/???

(2) /boot没有单独的分区 挂在根目录下 (假设根目录也是(hd0,4))

那么同样有两种情况对应的命令分别是

kernel /boot/vmlinuz-version ro root=/dev/???kernel (hd0,4)/boot/vmlinuz-version ro root=/dev/???

这里的version是内核的版本,一般在boot里会有好几个内核的版本(更新的缘故),所以在敲到vmlinuz之后tab一下可以任意选一个版本

root=/dev/???是linux所在分区在文件系统中的标识符,这个有点麻烦,即使我们知道root安装在磁盘的哪个分区比如(hd0,5) 我们也不知道它对应了文件系统的哪个标识符

我在这步卡了很久 最后灵光一现 为什么不去看下grub.conf文件 即使被我修改坏了,可能还有些有用的信息。

于是用cat命令看/grub/grub.conf(这是在grub的工作路径下看的,应该也可以在/boot分区看到) 结果看到了该标识符是sda7 搞定!!!!


3. 制定initrd文件 (我也不管这个命令干嘛了 貌似是制定内存映像文件)

这里我假设/boot有独立的分区并用root (hd0,4)设置好了/boot

initrd /initramfs-version

保证这边的version和上面内核的version选择一致即可


4. boot 直接敲入boot命令 坐等fedora启动


修改grub.conf文件

在/boot/grub/grub.conf, 用任意editor修改即可

文件中会有几个title对应了操作系统的不同版本 记住计数任然从0开始, 如果你觉得有些版本没用(比如recovery mode)那么删掉那几行也是可以的

我找到other所在的行 将其改成windows 7 并且把grub.conf开头的default设置成对应的数字


一切搞定!世界又变得美好了!




原创粉丝点击