我已使用多个版本的 Linux、Windows 10 和 Chrome 操作系统重新启动了我的 Acer Aspire CloudBook。继续来回,因为都有问题。现在我只能启动 Linux Mint,无法从 USB 启动。原因 efi 分区已满。 Efivars 包含 96 个项目 (/sys/firmware/efi/efivars)。如何重置 efi 分区而不使系统变砖?
答案1
您可能有两个基本独立的问题:
- 一些过时的引导变量
/sys/firmware/efi/efivars
- 充满过时引导加载程序的 EFI 系统分区(简称 ESP)。
要以受控方式清理过时的 EFI 引导变量,请使用该efibootmgr
命令。
首先用于sudo efibootmgr -v
列出所有引导变量及其内容,并确定不需要的变量。引导项由BootXXXX
XXXX 为十六进制数字来标识。查看该BootCurrent
变量来识别系统当前启动的启动项。
然后,使用sudo efibootmgr -b XXXX -B
删除不再需要的启动项。
ESP 可能已经安装,/boot/efi
或者/boot
可能已卸载 - 不同的发行版以不同的方式处理 ESP。如果您有多个 ESP,您将能够通过其标识来识别它分区UUID。当您运行时sudo efibootmgr -v
,每个分区条目将包含一个长十六进制字符串,称为 UUID(或 GUID)。使用sudo blkid
、 或lsblk -o +PARTUUID
,您可以列出分区的 UUID,并在启动项中查找与 UUID 匹配的 ESP。
如果尚未安装,则安装它,然后将其作为常规文件系统访问并清理任何过时的引导加载程序。
ESP 有一个标准化的目录布局:在 ESP 的顶层,应该有一个名为 的目录EFI
,在它的下面,每个操作系统供应商都可以创建自己的目录来放置他们的引导加载程序/引导管理器。 Windows 的引导内容位于Microsoft
子目录中,每个 Linux 发行版通常都有一个与其名称匹配的目录,等等。只需删除不再安装的操作系统目录即可。
答案2
EFI系统只是一个文件系统。您必须决定哪些数据对您来说很重要。
Efivars 包含 UEFI 使用的变量并存储在 NVRam(可能是 EEPROM)中,但 96 个项目并不是一个异常大的数量。
您需要检查 EFI 系统分区并确定哪些文件是重要的。很可能您那里只有许多不同的发行版引导加载程序。通常,每个发行版名称都将是 ESP 的子目录,如果不再使用该发行版,您可以删除这些子文件夹。
如果您使用 EFI-Stub,那么内核的副本可能位于 ESP 中,也许您有许多旧的内核版本。如果您使用像 rEFInd 或 GRUB 这样的引导加载程序,它会将一些资源文件存储在 ESP 中,但通常只存储它真正需要的资源文件。
您也可以只有一个非常小的 ESP(低于 50mb),因此普通的引导加载程序和资源就可以填充它。