重装win7后修复grub2

本文详细介绍了如何解决在使用Windows与Ubuntu双系统时,重装Windows导致无法选择系统而直接进入Windows的问题。通过使用grub4dos进入Linux环境,重新使用Grub覆盖MBR,从而恢复了正常的系统引导选择。教程包含具体步骤和关键命令,适用于Ubuntu 10.10及grub2版本。

一直在使用Windows与Ubuntu双系统(估计很多的linuxer都是这种情况)。前一段时间重装了Win7,然后启动后便会不选择系统而直接进入Windows。原因其实蛮好想的,就是因为Windows的引导程序覆盖了MBR,启动时不再使用grub引导。至于修复方法,下面是一些总结。

这个问题具体的解决方案很多,但总体的思路其实就两步:第一步、想尽一切办法进入linux;第二步、在linux环境下用grub重新覆盖MBR。

对于第一步,我采取的方法是使用grub4dos。

    首先下载grub4dos,这个随便一搜就有,估计很多人最初安装linux是就用到过。

    解压后把grub.exe,grldr复制到C盘的根目录。注意,win7的C盘中原有一个grldr,是一个隐藏着的系统文件。在复制时一定要将它备份好,以后还会用得到。网上的解决方案说还要复制menu.lst,其实这个不是必须的,没有它也可以解决问题。

    然后重启系统。因为使用了grub4dos的grldr,所以会由grub.exe来引导启动。引导时它会自动搜索menu.lst,找不到就会进入命令行模式。然后就要在grub4dos的命令行中启动linux。这个就比较容易了

    grub>root (hd0,x) (x表示/boot分区的编号)

    grub>kernel /vmlinuz-x.xx.xx-xx-generic root=/dev/sdaY (xx表示kernel的版本,可以用ls命令看一下/boot下面这个文件的名字是什么;而最后面的Y是/分区的编号。需要注意的是,采用(hdo,x)的表示方法时,编号是从0开始的;采取/dev/sdaY表示方法时,编号是从1开始的)

    grub>initrd /initrd-x.xx.xx-xx-generic (xx和上一条命令里的一样,都是kernel版本)

    grub>boot

    这时候应该就可以进入linux了。

第二步要用grub覆盖MBR

    这一步就更简单了。首先更新一下grub,使它可以识别win7

    sudo update-grub

    更新之后,输入命令覆盖MBR。具体的命令因grub版本而异。我用的系统为ubuntu10.10,使用grub2。它需要的命令只有一句话

    sudo grub-install /dev/sda

    如果提示安装成功,那就大功告成了。重启计算机,就又看到熟悉的grub选择界面了。

    对于grub1(ubuntu9.10之前的版本使用),需要先将/挂载到/mnt。如果有/boot分区,再将/boot挂载到 /mnt/boot。然后执行命令

    sudo grub-install --root-directory=/mnt /dev/sda

    grub1的方法我没有实际尝试过,仅仅列在这里而已。

Ubuntu 22重装系统后遇到grub相关问题,可参考以下方法解决: 若遇到重装Ubuntu后开机停在Grub命令行的情况,可总结解决思路来处理,但未提及具体思路内容 [^1]。 若因重装win10导致双系统grub消失,Ubuntu无法进入(Ubuntugrub引导损坏),可利用启动盘进入Ubuntu桌面,然后进一步修复还原回以前的双系统引导界面 [^2]。 若Ubuntu 18.04升级成20.04后全新安装20.04,重启后因找不到引导进入grub,若台式机有两块系统盘(一块装win10,一块装Ubuntu),可直接exit正常启动,若想避免每次手动exit,就需要修复grub引导,参考链接为https://zhuanlan.zhihu.com/p/59062434 [^3]。 若要重装grub,步骤如下: 1. 用USB启动盘进入Ubuntu系统,并用gparted查看分区。确认WindowsUbuntu的安装位置以及Ubuntu的分区情况,如Ubuntu有 /home、 /、 /boot三个分区分别挂载的位置 [^4]。 2. 将 /home、 /、 /boot分区均挂载在 /mnt上,示例命令如下: ```bash sudo mount /dev/sda10 /mnt sudo mount /dev/sda9 /mnt sudo mount /dev/sda7 /mnt ``` 3. 将 /mnt作为当前系统的根目录: ```bash chroot /mnt ``` 4. 查看当前系统的 /dev文件夹,若没有任何device,说明当前的chrooted system里面并没有主系统的基本配置文件,接下来将主系统的配置文件与当前系统bind起来: ```bash mount –bind /dev /mnt/dev mount –bind /proc /mnt/proc mount –bind /sys /mnt/sys mount –bind /usr/ /mnt/usr ``` 5. 安装grub: ```bash grub-install –target=i386-pc /dev/sda ``` 注意若系统装在 /dev/sda上面,这里用的是 /dev/sda ,–target=i386-pc这个option指的是只安装BIOS系统的grub [^4]。 6. 安装grub之后,需要产生一个配置文件: ```bash grub-mkconfig -o /boot/grub/grub.cfg ``` 7. 卸载把 /home、 /、 /boot分区从 /mnt上面卸载掉。 8. 最后重启就可以正常进入系统 [^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值