我删除了 /boot/efi(当尝试安装 archlinux 时)。
有一个硬盘,750GB,/dev/sda)。分区如下
/dev/sda1 ntfs 315MB
/dev/sda2 EFIboot 105MB <=== 已被删除
/dev/sda3 ? 135MB
/dev/sda4 ntfs 626GB <======= Windows 8
/dev/sda5 ntfs
/dev/sda6 biosgrub 1MB?
/dev/sda7 lvm 110GB <======== 用于 Linux
/dev/sda8 交换 13GB
Windows 8 仍安装在 /dev/sda4 上
如何重新创建/修复 /boot/efi (/dev/sda2)?
答案1
启动 Windows 8 安装或恢复 DVD/USB - 运行启动修复(自动修复),这将在 EFI 系统分区上重新创建 Windows 启动文件(在 EFI 模式下启动 DVD/USB!)。
在 EFI 模式下重新安装 Linux !!!(在 EFI 模式下启动 Linux DVD/USB!)
也许只需在 EFI 模式下重新安装 GRUB 就足够了(不知道这是否适用于 BIOS 模式下的初始 Linux 安装,可能可以)
(第一次在 BIOS 模式下启动时安装 Linux - 因此在 sda6 分区中有“bios grub”,这是混合启动所需的 = 从 GPT 磁盘进行 BIOS 启动)
答案2
这就是我解决问题的方法。
- 重新安装 Linux(保留所有分区)。
- 已启动进入 Linux。
- 挂载了 Windows ntfs 分区(mount -t ntfs /dev/sda4 /media/C)。(安装了 apt-get install ntfs-3g,但这只需要写入 ntfs。))
- 搜索全部/media/c 中的 .efi 文件(find -name '.efi' /media/c)(有很多匹配项,大多数位于 c:/windows/boot/efi 和 c:/windows/panther/rollback/efi)
- 将整个文件夹 c:/windows/panther/rollback/efi/microsoft 复制到 /boot/efi/EFI/microsoft
在 /boot/grub/grub.cfg 中添加
菜单项'win8' { 设置 root='hd2,gpt2' 链式加载器 /EFI/Microsoft/Boot/bootmgfw.efi 启动 }
我猜测/在谷歌中搜索到 bootmgfw.efi 是正确的 .efi。
- 重新启动并在 grub 菜单中选择 win8。
作为替代解决方案,我还安装了重新查找在配置文件 /boot/efi/EFI/refind/refind.conf 中我启用了(取消注释)这些设置(我认为只需要第 4 点):
- windows_recovery_files LRS_ESP:/EFI/Microsoft/Boot/bootmgr.efi
- uefi_deep_legacy_scan 真
- also_scan_dirs 启动,ESP2:EFI/linux/kernels
添加菜单项
菜单项“Windows 8”{ 加载程序 \EFI\Microsoft\Boot\bootx64.efi 已禁用 }