首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >需要清理Efivars,但是怎么做?

需要清理Efivars,但是怎么做?
EN

Unix & Linux用户
提问于 2018-05-28 17:19:40
回答 2查看 4K关注 0票数 1

我已经用多个版本的Linux、Windows 10和Chrome重新启动了我的宏碁Aspire CloudBook。因为每个人都有问题,所以要不停地来回走。现在我只能从USB引导Linux,什么也不能启动。efi分区满的原因。Efivars包含96个项目(/sys/固件/efi/efivars)。如何在没有分块系统的情况下重置efi分区?

EN

回答 2

Unix & Linux用户

发布于 2020-05-30 06:58:54

您可能有两个主要独立的问题:

  • /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 blkidlsblk -o +PARTUUID,您可以列出分区的UUID,并在引导条目中找到与UUID匹配的ESP。

如果尚未挂载,则将其挂载,然后将其作为常规文件系统访问,并清除任何过时的引导加载程序。

ESP有一个标准化的目录布局:在ESP的顶层,应该有一个名为EFI的目录,在它下面,每个OS供应商都可以创建自己的目录,将它们的引导加载程序/引导管理器放入其中。Windows的引导内容在Microsoft子目录中,每个Linux发行版通常都有一个与其名称匹配的目录,依此类推。只需删除您不再安装的OSs的目录即可。

票数 2
EN

Unix & Linux用户

发布于 2018-05-28 19:49:27

EFI系统只是一个文件系统。你必须决定哪些数据对你很重要。

Efivars包含UEFI使用并存储在NVRam (可能是EEPROM)中的变量,但是96项并不是异常大的数量。

您需要检查EFI系统分区,并决定哪些文件是重要的。很可能您只是有许多不同的发行版引导加载器在那里。通常,每个发行版名称都是ESP的子目录,如果发行版不再使用,您可以删除这些子文件夹。

如果您正在使用EFI,那么内核的复制可能在ESP中,也许您有许多旧的内核版本。如果您使用像rEFInd或GRUB这样的引导加载程序,它会将一些资源文件存储在ESP中,但通常只存储它真正需要的文件。

您还可以拥有一个非常小的ESP (sub-50mb),所以正常的引导加载程序和资源只是在填充它。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/446517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档