GRUB引导加载程序在Ubuntu 20的apt升级后安装失败。

在Ubuntu 20.04上运行apt upgrade后,无论选择哪个选项都会返回以下错误。这是一个Windows双启动系统。我有备份,并且正在使用timeshift。我正在学习,但对此还是相当新手。
希望有人能帮助我弄清楚接下来该怎么做。我应该继续而不安装grub吗?
nvme0n1p1:整个扩展分区
nvme0n1p6:挂载在/boot/efi
nvme0n1p9:文件系统根目录
nvme0n1p8:/home

enter image description here

enter image description here

Gparted:

enter image description here

sudo fdisk -l
    Device         Boot     Start        End    Sectors   Size Id Type
    /dev/nvme0n1p1           2046 1953523711 1953521666 931.5G  5 Extended
    /dev/nvme0n1p5           2048   31250431   31248384  14.9G 82 Linux swap / Solar
    /dev/nvme0n1p6 *    222244864  248848383   26603520  12.7G ef EFI (FAT-12/16/32)
    /dev/nvme0n1p7      248850432  269154303   20303872   9.7G 83 Linux
    /dev/nvme0n1p8      269156352 1953523711 1684367360 803.2G 83 Linux
    /dev/nvme0n1p9       31252480  222242815  190990336  91.1G 83 Linux

Device             Start        End   Sectors   Size Type
/dev/nvme1n1p1      2048     534527    532480   260M EFI System
/dev/nvme1n1p2    534528     567295     32768    16M Microsoft reserved
/dev/nvme1n1p3    567296  998166527 997599232 475.7G Microsoft basic data
/dev/nvme1n1p4 998166528 1000214527   2048000  1000M Windows recovery environmen


1你能在你的实时会话中下载并运行GParted,并展示结果吗? - Raffles
1你的安装是UEFI还是BIOS。通常使用MBR与BIOS,而UEFI使用GPT,但Ubuntu(错误地)允许你在UEFI中使用MBR。如果是BIOS,请参考:https://askubuntu.com/questions/503417/how-to-prevent-ubuntu-from-overwriting-grub-bootloader-after-update/503446#503446 Grub会记住重新安装的位置。如果是UEFI,你应该在fstab中挂载EFI系统分区(ESP),Grub会使用它。你需要重新安装正确版本的Grub,对于BIOS是grub-pc,对于UEFI是grub-efi-amd64,并确保有正确的分区设置。你始终将Grub安装到驱动器而不是分区。 - oldfred
老弗雷德,谢谢,虽然我有点难以理解。测试 -d /sys/firmware/efi && echo efi || echo bios 返回 'efi',所以我需要安装 grub-efi-amd64 吗?我在这里看到一个可能的解决方案 https://help.ubuntu.com/community/Boot-Repair。请像我不知道自己在做什么一样与我交流,你就不会太离谱。 - mmann1123
1你提到的引导修复在我之前的双系统中起作用了。你在实时环境中使用它。你的分区看起来很好。 - Raffles
1请你把 sudo fdisk -l 的结果发布一下。 - Ashish
好的,我不知道它应该如何工作,但为什么你没有一个单独的Linux分区用于/boot呢?我以为Grub必须安装在一个Linux分区(ext4),并且这个分区必须被挂载为/boot。然后EFI分区将被挂载为/boot/efi,但我认为Grub必须安装在/boot上。我不确定这是否适用于一般情况,但对于我的双系统引导(和你一样,都是Ubuntu 20.04),这肯定是正确的。 - Niccco
2个回答

由于您安装了Windows,可能已经覆盖了引导加载程序。 尝试运行grub-install /dev/sdX,其中/dev/sdX是您的引导分区所在的驱动器。

如果您能够启动Ubuntu,则运行sudo os-prober,然后运行sudo update-grub。这应该解决问题。在执行上述操作后,请发布结果。

如果您无法启动,则从USB或CD中运行一个实时启动会话,并运行上述命令。

如需更多帮助,请访问this


@mmann1123 请告诉我哪个解决方案对你有帮助。 - Abhay Patil

抱歉,我目前无法发表评论。
你可以尝试按照我在这里所解释的方法修复grub。