如何在不调整分区大小的情况下释放/boot/efi中的空间?

我昨天升级到了20.04版本。我刚刚注意到在Ubuntu软件中有一个Dell Inc.系统固件的更新,但是我的系统没有足够的空间来运行这个更新。

enter image description here

有没有其他方法可以清理掉Ubuntu在这个位置上的东西,除了使用gparted(或类似工具)调整分区大小?
我想保留Windows分区。

enter image description here

使用ls -alt /boot/efi/EFI/ubuntu/命令。
total 4248
-rwxr-xr-x 1 root root     108 Mai  7 22:04 BOOTX64.CSV
-rwxr-xr-x 1 root root     117 Mai  7 22:04 grub.cfg
-rwxr-xr-x 1 root root 1677176 Mai  7 22:04 grubx64.efi
-rwxr-xr-x 1 root root 1269496 Mai  7 22:04 mmx64.efi
-rwxr-xr-x 1 root root 1334816 Mai  7 22:04 shimx64.efi
drwxr-xr-x 6 root root    1024 Feb 18 18:45 ..
drwxr-xr-x 3 root root    1024 Jan 15 19:26 .
drwxr-xr-x 2 root root    1024 Jan 15 19:26 fw
-rwxr-xr-x 1 root root   61833 Nov 13 19:46 fwupdx64.efi

在fw文件夹中

-rwxr-xr-x 1 root root 11500365 Jan 15 19:26 fwupd-33773727-8ee7-4d81-9fa0-57e8d889e1fa.cap
-rwxr-xr-x 1 root root    57218 Jan 15 19:26 fwupd-3b8c8162-188c-46a4-aec9-be43f1d65697.cap

在戴尔文件夹中
drwxr-xr-x 4 root root 1024 Feb 18 18:45 .
drwxr-xr-x 6 root root 1024 Feb 18 18:45 ..
drwxr-xr-x 2 root root 6144 Feb 18 18:45 logs
drwxr-xr-x 3 root root 1024 Dez 10 11:55 Bios
ls -alt /boot/efi/EFI/Dell/Bios/
total 3
drwxr-xr-x 4 root root 1024 Feb 18 18:45 ..
drwxr-xr-x 3 root root 1024 Dez 10 11:55 .
drwxr-xr-x 2 root root 1024 Dez 10 11:55 Recovery
ls -alt /boot/efi/EFI/Dell/Bios/Recovery/
total 21288
drwxr-xr-x 2 root root     1024 Dez 10 11:55 .
drwxr-xr-x 3 root root     1024 Dez 10 11:55 ..
-rwxr-xr-x 1 root root 10874905 Dez 10 11:55 BIOS_CUR.RCV
-rwxr-xr-x 1 root root 10920235 Jun  6  2019 BIOS_PRE.rcv

只是一些想法。fw目录里有什么?dell目录里有什么?那里面有没有看起来像是旧固件的东西,可以移动到其他位置? - PonJar
@PonJar 我已经更新了问题。据我所见,似乎没有任何可以删除的内容。 - Michael Millar
Stephen Daddona的答案可能使您能够安装更新,但我不认为系统会以那种方式启动。然而,可能是在更新之后,所需空间位于您的EFI分区容量范围内,因此可以恢复正常。尽管如此,这只是一种幻想。更新是否带来了任何有用的东西?或者以下链接中的第一个回答描述了如何获得更大的EFI分区的过程。似乎您需要腾出空间,删除旧的分区,并创建一个新的较大分区。https://superuser.com/questions/1230741/how-to-resize-the-efi-system-partition - PonJar
@PonJar 谢谢,看起来似乎需要使用 gparted 或类似的工具,如果需要的话我会这么做,但我希望能找到一个不需要那样做的解决方案。我想可能不太可能了。 - Michael Millar
1有点冒险。这台机器上有多少个硬盘/固态硬盘等存储设备?我有一台台式机,配备了两个存储设备。它们都有一个EFI分区。其中一个自从最初安装Windows后就没有改动过。另一个则包含了启动Linux所需的文件和启动Windows所需的副本。这个设备会首先启动,我可以选择Linux,而家人则可以选择Windows。除了简单复制Windows文件夹外,我从未触碰过原始EFI。因此,如果你有第二个设备,你可以创建一个更大的EFI,并且不会触碰原始EFI。也许这并不适用于你的情况,但我还是想提一下,以防万一。 - PonJar
@PonJar 我只有一块硬盘。不过还是谢谢你的关心。 - Michael Millar
3个回答

如果您同时拥有Windows和Ubuntu操作系统,那么在这种情况下,在Ubuntu中:
1. 打开终端并进入power bash:sudo bash 2. 将Microsoft文件夹移动到另一个驱动器:mv /boot/efi/EFI/Microsoft /home 3. 运行升级并按需重启。现在它将有足够的空间,因为Microsoft文件夹大约为14 MB + 4. 让我们将Microsoft文件夹移回efi,运行sudo bash和mv /home/Microsoft /boot/efi/EFI 5. 点赞!

这样做安全吗?我的Microsoft文件夹现在有25MB,我想移动它,但我担心整个“FAT32可能会损坏”的问题。这是我的工作电脑,所以如果出现问题,我无法从头重新安装整个系统。 - rgin
我已经多次测试过了。两个操作系统都运行正常。 - ahmadalibaloch
1是的,我也可以独立确认它有效。在Ubuntu 20.04双启动Windows 11上尝试过。 - Mwiza
1谢谢您的回答。我可以确认这种方法。我成功通过将Microsoft字体移动到一个临时目录来释放空间。当然,在更新完成后,我把它们移回了原位。 - dyedfox

更新:

我按照这些步骤操作,这比手动移动字体更好的方法。

apt update && sudo apt upgrade -y
service fwupd start
fwupdmgr refresh
fwupdmgr update

请点赞!
原始评论:在我的情况下,我通过找到一些(可能)不重要的文件并将它们移动到位于/boot/efi之外的备份文件夹中来解决了这个问题。例如,boot-repair/log文件大约有3 MB,而一些/EFI/Microsoft/Boot文件夹中有一些我可能永远不会用到的语言文件夹。这样我就有足够的空间来进行更新。
唯一的问题是,在开机时它直接进入Windows,没有在BIOS屏幕后给我grub菜单。我在Windows中解决了这个问题,方法是以系统管理员身份打开命令提示符,然后运行以下命令:
bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi

但我相信你已经意识到了所有的警告,所以在此之前务必小心做好任何备份。


1我还通过移动一些EFI/Microsoft/Boot的语言和字体来修复它。我不建议这样做,因为由于FAT文件系统的所有权问题,将文件移回去很麻烦。但是除了Windows启动没有文字之外,其他都正常工作。 - JacksOnF1re
@JacksOnF1re 我找到了一个更好的方法来做这件事。我已经更新了答案。 - Michael Millar
1在我的情况下,这导致了与通过图形界面尝试更新固件时弹出的完全相同的错误:“/boot/efi没有足够的空间,需要33.6 MB,实际只有28.1 MB”。 - Francesco Cariaggi
@FrancescoCariaggi 你试过上面的第一条和第二条评论吗? - Michael Millar
更新的答案对我来说不起作用。仍然显示“空间不足”。 - Michele Piccolini
@MichelePiccolini 你可以尝试移动一些未使用的语言或Microsoft文件,然后进行更新(混合方法)。 - Michael Millar

移动那个目录中所有内容太小的部分到另一个分区或硬盘上有空间的目录中。然后将该目录挂载到原本太小的父目录中。

这个链接应该会有帮助 https://serverfault.com/questions/67038/how-do-i-mount-sub-directory-to-a-hard-drive-in-linux - user573739
我不确定这是一个永久解决方案。它应该允许您安装固件,但是可能需要在引导时位于EFI分区中,以便重新建立任何挂载。也许安装后可以用硬链接替换挂载点。希望其他人能提供建议。 - PonJar