自从我将 grub 更新到 grub 2 后,我就不再有启动 Windows 的选项了(不幸的是,这对于我工作时需要使用的专有 MSIE 浏览器插件有时是必要的)。
相关/boot/grub/menu.lst
部分:
### END DEBIAN AUTOMAGIC KERNELS LIST
# This is a divider, added to separate the menu items below from the Debian
# ones.
title Other operating systems:
root
# This entry automatically added by the Debian installer for a non-linux OS
# on /dev/hda1
title Windows NT/2000/XP
root (hd0,0)
savedefault
makeactive
chainloader +1
然而,这种情况不再出现。我确实有一些条目,/boot/grub/grub.cfg
如:
menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-amd64' --class debian --class gnu-linux --class gnu --class os {
insmod part_msdos
insmod ext2
set root='(hd1,msdos1)'
search --no-floppy --fs-uuid --set e638c434-4884-412f-a141-2c194f881fae
echo 'Loading Linux 2.6.32-5-amd64 ...'
linux /boot/vmlinuz-2.6.32-5-amd64 root=UUID=e638c434-4884-412f-a141-2c194f881fae ro quiet
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-2.6.32-5-amd64
}
我是否必须更改该文件?如果是,Windows 启动的正确语法是什么?如果不是,可能是什么问题?
答案1
这是基于 Ubuntu 的,但它也适用于 Debian 的 grub2 包:
/boot/grub/grub.cfg
每次运行时/usr/sbin/update-grub2
或在内核更新后调用时都会被覆盖。 grub2 应该已经自动检测到 windows 安装/etc/grub.d/30_os-prober
并通过它添加到启动菜单中。但是应该在/etc/grub.d/40_custom
更新:
您可以尝试通过添加以下内容手动添加 Windows Loader /etc/grub.d/40_custom
:
menuentry "Windows on /dev/hda1" {
insmod ntfs
set root='(hd0,1)'
search --no-floppy --fs-uuid --set YOURUUID
chainloader +1
}
“YOURUID”是唯一唯一标识符您的 Windows 分区。您可以通过执行 来获取它ls -l /dev/disk/by-uuid/ | grep hda1
。编辑文件后,执行“sudo update-grub2”以生成新的 grub.cfg。
这取决于os-prober
,可能未安装,在这种情况下请执行以下操作:
sudo apt-get install os-prober
...然后再次运行sudo update-grub2
。
答案2
Wrikken 的解决方案对我也很有用。我正在以易于遵循的指示重复它。
步骤1
sudo apt-get install os-prober
可以使用以下方法测试:
sudo os-prober
对我来说,其输出如下:
/dev/sda1:Microsoft Windows XP Professional:Windows:chain
第2步
sudo update-grub2