当前位置: 代码迷 >> 综合 >> 重装windows后修复ubuntu(grub2)启动
  详细解决方案

重装windows后修复ubuntu(grub2)启动

热度:43   发布时间:2024-01-13 06:42:07.0

更新:由于windows出错,重装,安装ghost版总失败,后安装安装版,成功,修复grub启动。结果windows盘自动挂载失败,发现原因是盘符变更,fstab使用盘符挂载,进入后更改fstab成功,后发现ubuntu不稳定,偶然间发现swap区没有挂载。查看原因,结果swap分区无法识别。多方寻求未果,直接格式化swap分区,发现swap分区的uuid也改变了。并且多出了几个错误分区,好在windows,ubuntu都不报错,只是用磁盘工具才能看到,不影响使用,改动swap的uuid,重启挂载成功。可能下次安装系统还会干扰吧。分析原因,可能安装windows时,windows占用一小部分swap分区从而导致分区表出错。只是猜测,毕竟安装windows时费了一些周折,改了很多东西,具体是谁导致的不能确定。有待更新。

 

 

不用光驱,不用u盘的方法ubuntu版本9.10以上:去http://forum.ubuntu.org.cn/viewtopic.php?f=139&t=245472&start=0下载附件,将 grub2 、g2ldr 和 g2ldr.mbr 解压到C盘根目录;再在 boot.ini 里添加一行

代码:
c:/g2ldr.mbr="g2ldr.mbr"

即 可。(最好在 window 里操作,因为 window 要求的换行符和 linux 不太一样。)

如果C盘没有 boot.ini 文件,就手动创建一个,内容如下:

代码:
[boot loader]
timeout=9
default=C:/g2ldr.mbr
[operating systems]
C:/g2ldr.mbr="g2ldr.mbr"

进入ubuntu以后使用下面的命令行,重建Grub:

sudo grub-install /dev/sda,将grub写入mbr,就和以前一样了。

 

 

附其他方法:双系统修复Ubuntu 9.10 GRUB 2引导的方法



Ubuntu 9.10的GRUB引导不在使用GRUB 1了,改用GRUB 2(其实是beta版本)。重装Windows系统后,用原来的Live CD方法无法再修复了。只能用下面的两个方法了。

方法1.有GRUB启动的光盘或U盘修复

如果手上有GRUB启动的工具盘,用工具盘启动,在GRUB菜单上按c进入命令行状态,

在grub>提示符下输入


grub>find /boot/grub/core.img (有/boot分区的用find /grub/core.img)

(hdx,y) (显示查找到的分区号)

grub>root (hdx,y)

grub>kernel /boot/grub/core.img (/boot分区的用 kernel /grub/core.img)

grub>boot

执行boot后能转入GRUB 2菜单,启动Ubuntu 后,再在Ubuntu 终端下执行

sudo grub-install /dev/sda (或sdb,sdc等,根据第几硬盘而定)修复GRUB。

注意:如果Ubuntu 的启动分区使用 ext4格式,要有支持ext4格式的grub才能修复。

方法2:使用liveCD修复grub   (推荐)

用Ubuntu 9.10的Live CD试用Ubuntu启动后,打开终端

假如你的Ubuntu 的 / 分区是sda9,又假如 /boot分区是 sda6,在终端下输入

sudo -i

mount /dev/sda7 /mnt

mount /dev/sda6 /mnt/boot (如果没 /boot 单独分区这步跳过)

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

和前面一样,要装入第二硬盘的把sda改为sdb。

我的文件系统为ext4,貌似U盘pe 的GRUB不支持,保险起见用Live CD修复的,修复后却无法引导Windows了。可以用下面的方法解决:

进入Ubuntu 系统,打开终端,

重建GRUB列表            sudo update-grub

重新写入第一分区mbr           sudo grub-install /dev/sda

如果想修改启动顺序,可以修改/boot/grub目录下的grub.cfg文件。这里注意此文件不可写的,可以先运行一下命令

sudo chmod +w /boot/grub/grub.cfg

然后再运行sudo gedit /boot/grub/grub.cfg,就可以修改了,类似于GRUB 1的menu.lst修改。

其 他方法:

方法1:使用Ubuntu 9.10 LiveCD

首先,请从Ubuntu网站下载Ubuntu.在这里,我们假设Ubuntu的安装分区是/dev/sdc3,/boot分区是/dev /sdc2。
现在,使用LiveCD启动计算机,打开“应用程序”-》“附件”-》“终端”,输入下面的命令,以root身份登录,并执行下面的操作:

程序代码
sudo -i
mount /dev/sdc3 /mnt
mount /dev/sdc2 /mnt/boot
grub-install –root-directory=/mnt/ /dev/sdc

如果你没有’grub.cfg’文件,请重新创建,内容如下:

程序代码
mount –bind /proc /mnt/proc
mount –bind /dev /mnt/dev
mount –bind /sys /mnt/sys
chroot /mnt update-grub
umount /mnt/sys
umount /mnt/dev
umount /mnt/proc
exit

方法2:使用Grub for Dos

首先下载Grub for Dos

对于XP操作系统:
把Grub文件拷贝到C盘根目录,并编辑c:/boot.ini文件(需要去掉隐藏、只读、系统属性),并加上一行:

c:/grldr=”grub4dos”

对于Windows 7/Vista用户:
同样拷贝文件到C盘根目录,建立boot.ini文件,内容如下并保存:
[boot loader]
timeout=0
default=c:/grldr.mbr
[operating systems]
C:/grldr.mbr=”Grub4Dos”

现在在C盘根目录建立文件(XP、Vista、Windows 7 均适用),内容如下:

timeout 0
default 0
title grub2
find –set-root /boot/grub/core.img
kernel /boot/grub/core.img
boot

现在重新启动,选择Grub4Dos启动,进入Ubuntu。
登录Ubuntu,以后使用下面的命令行,重建Grub:

sudo grub-install /dev/sda

  相关解决方案