我有一台 Surface Pro。我已将恢复分区从 Surface Pro 移到 USB 闪存驱动器上。我还在闪存驱动器上安装了 GRUB2,并使用 Ubuntu Live/Persistent(我先备份了 Surface Pro 恢复内容!!)。我正在尝试获取 GRUB2 配置,以便我从硬盘驱动器启动,启动 Surface Pro 的 Windows 8 恢复,以及所有 Ubuntu 内容。
我让所有 Linux grub 都正常工作,只是在让 Windows 8 grub 正常工作时遇到了麻烦。我尝试过使用 chainloader,但不太清楚具体怎么做。EFI 似乎改变了我对 Grub 的所有认知。另外,我不知道如何为 grub 获取 USB 和 Surface SSD 的正确名称。
这里这是 USB 上的文件结构的屏幕截图
这里这是 grub 命令行中‘ls’输出的屏幕截图(抱歉,用我的手机拍摄的)。
以下是我目前的 GRUB2 配置:
if loadfont /boot/grub/font.pf2 ; then
set gfxmode=auto
insmod efi_gop
insmod efi_uga
insmod gfxterm
terminal_output gfxterm
fi
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
menuentry "Boot from Harddrive" { // this one does not work
set root=(hd0,1)
chainloader (hd0,1)
}
menuentry "Ubuntu 13.04 Persistent" {
set gfxpayload=keep
linux /casper/vmlinuz.efi persistent file=/cdrom/preseed/ubuntu.seed boot=casper quiet splash --
initrd /casper/initrd.lz
}
menuentry "Ubuntu 13.04 Live" {
set gfxpayload=keep
linux /casper/vmlinuz.efi file=/cdrom/preseed/ubuntu.seed boot=casper quiet splash --
initrd /casper/initrd.lz
}
menuentry "Install Ubuntu 13.04" {
set gfxpayload=keep
linux /casper/vmlinuz.efi file=/cdrom/preseed/ubuntu.seed boot=casper only-ubiquity quiet splash --
initrd /casper/initrd.lz
}
menuentry "File Integrity Check" {
set gfxpayload=keep
linux /casper/vmlinuz.efi boot=casper integrity-check quiet splash --
initrd /casper/initrd.lz
}
menuentry "Memory Test" {
set gfxpayload=keep
linux /casper/mt86plus
}
现在,如果您问我为什么要这样做,主要是为了尝试更多地了解 GRUB 并理解它,而且,如果我让它工作了,我将有一个可以随时用于 Ubuntu 的 USB,它仍然可以兼作我的 Surface 的恢复。如果一切顺利,我甚至正在考虑在我的 Surface 上安装 Ubuntu 以实现双启动。
答案1
这引导修复工具可能能够修复该问题。如果您想手动执行此操作,则需要创建一个条目来/etc/grub.d/40_custom
启动 Windows。类似下面的操作通常有效,但您需要调整分区号等细节:
menuentry "Windows" {
insmod part_gpt
insmod chain
set root='(hd0,gpt1)'
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
另外,请注意 GRUB非常配置起来很麻烦;在一台计算机上运行良好的功能在另一台计算机上却经常会失败。因此,我无法保证上述条目对您有用。
另一个选择是从 GRUB 切换到另一个 EFI 启动管理器。对于 Linux 和 Windows 的双启动,rEFInd 和 gummiboot 是最容易配置的。请注意,如果您在启用安全启动的情况下启动,gummiboot 无法与 shim 配合使用,并且 Ubuntu 使用的 shim 版本无法与这两个启动管理器配合使用,因此您需要升级到 shim 0.2 或更高版本,或者用 PreLoader 替换 shim。