不小心删除了我的EFI系统分区。 Linux Mint 和 Windows 双启动系统,但我想删除 Windows。删除 Windows 分区后,我的意思是删除 Windows 启动管理器分区。然而,我不小心删除了EFI分区。我的 BIOS 现在不显示任何启动选项。我有一个可以启动的 Mint 实时启动 USB。
有人可以指导如何创建另一个 efi 分区并让它再次加载 grub 吗?
答案1
如果您还没有覆盖旧的 EFI 分区,您可以简单地使用 SystemRescue 启动并用于testdisk
恢复分区。
答案2
如果您还没有尝试对磁盘进行更改,并且知道 EFI 分区的确切大小,那么您可以重新创建分区(不要格式化它),但在重新创建分区后,运行dosfsck /dev/disk/part<n>
(通常是分区 #1) 或运行fsck.vfat /dev/disk/part<n>
以查看它是否识别文件系统,我建议在尝试修复它之前以仅检查模式运行它(如果甚至需要修复):
fsck.vfat --help
Usage: fsck.vfat [OPTIONS] DEVICE
Check FAT filesystem on DEVICE for errors.
Options:
-a automatically repair the filesystem
-A toggle Atari variant of the FAT filesystem
-b make read-only boot sector check
-c N use DOS codepage N to decode short file names (default: 850)
-d PATH drop file with name PATH (can be given multiple times)
-f salvage unused chains to files
-F NUM specify FAT table NUM used for filesystem access
-l list path names
-n no-op, check non-interactively without changing
-p same as -a, for compat with other *fsck
-r interactively repair the filesystem (default)
-S disallow spaces in the middle of short file names
-t test for bad clusters
-u PATH try to undelete (non-directory) file that was named PATH (can be
given multiple times)
-U allow only uppercase characters in volume and boot label
-v verbose mode
-V perform a verification pass
--variant=TYPE handle variant TYPE of the filesystem
-w write changes to disk immediately
-y same as -a, for compat with other *fsck
--help print this message
最坏的情况是如果您无法恢复分区,则可以重新创建它。为了将来的参考,我从未尝试过这个,但如果您不知道确切的分区大小是多少,那么您可能可以通过查看卷标头来收集一些信息(dd 与分区开始位置的偏移量)分区存在,并在十六进制编辑器中查看它,但我从未尝试过此操作):
https://www.win.tue.nl/~aeb/linux/fs/fat/fat-1.html
要从头开始:重新格式化/重新安装 GRUB EFI 可执行文件,首先使用以下命令重新创建分区parted
例如:
sudo parted /dev/hda<n> mkpart primary fat32 1 256
会给你一个256MB的分区但您应该参考此内容以确保您正在使用精确的原始分区的大小(如果这是您要尝试的路线):
https://www.gnu.org/software/parted/manual/html_node/unit.html
下一步格式化它:
mkfs.vfat -F32 /dev/hda<n>
如果您需要执行整个 chroot 来安装引导加载程序:
- 挂载根
mount /dev/sda<n> /mnt
- 安装引导
mount /dev/sda<n> /mnt/boot
- 挂载efi
mount /dev/sda<n> /mnt/boot/efi
- 挂载开发者
mount -o rbind /dev/ /mnt/dev
- 挂载进程
mount -t proc proc /mnt/proc
- chroot
chroot /mnt/ /bin/bash
- grub-install
grub-install
或update-bootloader
取决于您的操作系统
在那之后:
umount /mnt/boot/efi
umount /mnt/boot
sync ; sync ; mount -o remount,ro /mnt
sync ; sync ; reboot -f