安装 Windows 7 之后再安装 Ubuntu 11.04 处理方法

搞清楚是 Adobe 造的孽, 因此这个问题已经在 Launchpad 上面标记为危急级别 (https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/730225)。

如果你尚未安装 Ubuntu 11.04 Natty,现在请先缓一缓;如果已经是受害者了,请

1.进入 Ubuntu,运行 sudo dpkg-reconfigure grub-pc 稍后会让你选择 Grub 的安装目标。在这里取消对/dev/sda 的选择,无视警告,改为选择 Ubuntu 安装的分区,这样做可以在 Ubuntu 没有修复这个问题之前,在 grub 软件包升级的 时候避免再一次破坏 NTFS 分区。

2.找张 Win7 的安装盘,进入 PE 之后执行 chdksk c: /f 然后重启,再次进入 Ubuntu。

3.执行 sudo update-grub 这时候应该可以重新找到 Windows 的启动项,而且 Windows 应该能够正常进入了。

4.如果有必要,请使用 sudo dd if=/dev/sda of=/ubuntu.mbr bs=446 count=1 把 MBR 备份出来,复制到一个 Windows 认识的分区,然后到 Windows 下面添加启动项。这样 可以避免一旦重装 Windows 之后 Ubuntu 进不去的尴尬局面。

Bug Description
Binary package hint: grub
The new grub-install of natty alpha3 now detects and avoids FlexNet-occupied sectors, but it seems it somehow mishandles something and writes code into after sector 63, thus make the ntfs partition that starts there unbootable and unreadable.
I have tested with a memory stick /dev/sdc partitioned like this:
ubuntu@ubuntu:~$ sudo fdisk -lu /dev/sdc
Disk /dev/sdc: 16.2 GB, 16236085248 bytes
255 heads, 63 sectors/track, 1973 cylinders, total 31711104 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00063979
   Device Boot Start End Blocks Id System
/dev/sdc1 63 25671869 12835903+ 7 HPFS/NTFS
/dev/sdc2 25671870 31696244 3012187+ 83 Linux
/dev/sdc1 was not mounted.
/dev/sdc2 was mounted on /mnt.
Then I downloaded FlexNet signature at ?f=49&t=320155&start=30
unzipped flexnet.sector32.zip, and wrote into sector32:
sudo dd if=flexnet.sector32 of=/dev/sdc seek=32
ran grub-install, it detected and avoided that sector:
ubuntu@ubuntu:~$ sudo grub-install /dev/sdc --root-directory=/mnt
/usr/sbin/grub-setup: warn: Sector 32 is already in use by FlexNet; avoiding it. This software may cause boot or other problems in future. Please ask its authors not to store data in the boot track.
Installation finished. No error reported.
NTFS partition /dev/sdc1 was now trashed. By design, the last sector of ntfs is a backup of its boot sector, so I copied the last sector of /dev/sdc1 to its first sector and successfully recovered the file system:
ubuntu@ubuntu:~$ sudo dd if=/dev/sdc of=/dev/sdc count=1 seek=63 skip=25671869
I took a further look at the sectors and found that the first sector of the partition was not the only sector that was overwritten by grub, and was surprised that by recoverying only the first sector the whole file system seemed good.
By removing the FlexNet signature, grub-install never overwrite the NTFS sectors again.
ProblemType: Bug
DistroRelease: Ubuntu 11.04
Package: grub (not installed)
ProcVersionSignature: Ubuntu 2.6.38-5.32-generic 2.6.38-rc6
Uname: Linux 2.6.38-5-generic i686
NonfreeKernelModules: wl
Architecture: i386
Date: Sun Mar 6 17:43:14 2011
LiveMediaBuild: Ubuntu 11.04 "Natty Narwhal" - Alpha i386 (20110302)
ProcEnviron:
 LANGUAGE=en_US:en
 LANG=en_US.UTF-8
 SHELL=/bin/bash
SourcePackage: grub
UpgradeStatus: No upgrade log present (probably fresh install)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/24318.html