我之前安装的 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
再次尝试。希望现在你不会得到无效签名