Gnu Grub 菜单无法识别我的 MS Windows 安装

Gnu Grub 菜单无法识别我的 MS Windows 安装

我之前安装的 Ubuntu 已设置双启动,这样我就可以使用 Windows XP 或 Ubuntu。这成功了。

我已经升级到 Ubuntu 14.4。新的 Gnu Grub 菜单在启动菜单上不显示我的 Windows XP 安装。因此我无法访问 Windows。

结果sudo fdisk -l

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 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: 0xa89aa89a

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *          63   976751999   488375968+   7  HPFS/NTFS/exFAT

Disk /dev/sdb: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders, total 625142448 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: 0x00062131

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        2048   195311615    97654784   83  Linux
/dev/sdb2       195311616   625137344   214912864+   7  HPFS/NTFS/exFAT

答案1

首先,我会运行sudo os-prober并查看它是否找到 Windows 安装。如果未安装,sudo apt-get install os-prober则运行它,如果找到 Windows,则运行它sudo update-grub,它应该会创建菜单项。

如果这不起作用,那么我会运行sudo fdisk -l(-l 代表列表)并查找您的硬盘。它看起来会像这样:

Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 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
Disklabel type: dos
Disk identifier: 0x000702fc

Device     Boot    Start      End  Sectors Size Id Type
/dev/sda1  *        2048 33554431 33552384  16G 83 Linux
/dev/sda2       33556478 41940991  8384514   4G  5 Extended
/dev/sda5       33556480 41940991  8384512   4G 82 Linux swap / Solaris
/dev/sda6       41940991 50950020  8250580  16G 0b FAT32

再次强调,这只是一个例子,您的看起来会有所不同,并且可能标记不同。我的系统上实际上没有 Windows XP 分区,所以我在这个例子中“伪造”了它。

为此,我假设我的 Windows XP 已安装,/dev/sda6这对于下一步很重要。

现在我们需要为 GRUB 创建自定义菜单项

打开终端并输入:

sudo gedit /etc/grub.d/40_custom

您可以用您最喜欢的编辑器替换 gedit,但需要以 sudo 身份运行才能编辑该文件。

将以下内容添加到 40_custom 文件的最末尾(如果该文件完全为空白,则说明您输入了错误的内容,或者您​​没有 grub2,并且这些说明对您不起作用...请仔细检查您是否有 /etc/grub.d 文件夹)

menuentry "Windows XP" {
set root=(hd0,6)
chainloader (hd0,6)+1
}

对此条目的解释...您需要更改hd0,6条目中的以匹配您的 Windows 分区。hd0 指的是 sda,如果您有多个硬盘驱动器,并且您的 Windows 分区位于 sdb 上,那么您需要使用 hd1,但对于您来说,我假设您在 sda 上,这是您通过之前运行的 fdisk 命令确定的。我的示例中的 ,6 是因为我们确定 Windows 安装在/dev/sda6 - sda(hd0)6

修改 40_custom 文件后,它看起来应该像这样

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

#echo 'Adding 40_custom menu entries' >&2

menuentry "Windows XP" {
set root=(hd0,6)
chainloader (hd0,6)+1
}

保存文件并运行sudo update-grub它应该为 Windows XP 添加一个菜单项...尝试重新启动并检查以确保它启动到 Windows 如果您做对了所有事情那么一切就绪了。

根据新信息,40_custom 文件应如下所示:

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

#echo 'Adding 40_custom menu entries' >&2

menuentry "Windows XP" {
set root=(hd0,1)
chainloader (hd0,1)+1
}

由于“无效签名”的问题,我们需要做更多的工作

您需要打开终端并输入查找sudo blkid并复制它。然后您需要使用以下内容编辑 40_custom:UUID/dev/sda1

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply  type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

#echo 'Adding 40_custom menu entries' >&2

menuentry "Windows XP" {
insmod ntfs 
set root=(hd0,msdos1)
search --no-floppy --fs-uuid --set 822CB74E2CB73BCB
chainloader +1
}

(根据评论中提供的信息进行编辑)

保存文件并sudo update-grub再次尝试。希望现在你不会得到无效签名

相关内容