使用 USB 上的 GRUB2 进行 Ubuntu 和 Windows 8 恢复

使用 USB 上的 GRUB2 进行 Ubuntu 和 Windows 8 恢复

我有一台 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。

相关内容