Ubuntu v20 未检测到已安装的 systemd-boot

Ubuntu v20 未检测到已安装的 systemd-boot

[在 VMware VM 中运行 Ubuntu v20.04]

我的所有系统都运行systemd-boot,所有相关的 grub 包/文件都被清除了。当我运行今天的更新时,有一个新内核(v5.4.0-66)。但是,我取消了交易,因为我的系统正在尝试(重新)安装蛴螬. 将其添加到后/etc/apt/preferences.d

$ cat nogrub.pref
# To prevent repository packages from triggering the installation of GRUB

Package: grub*
Pin: release a=*
Pin-Priority: -10

我重新运行了更新,但现在系统提示我安装莉洛。所以我又添加了第二个首选项文件来/etc/apt/preferences.d阻止莉洛- 更新最终按预期进行。

这是 Ubuntu 的正常行为吗?我在我的 Mint 20 系统中看到了完全相同的情况。我应该采取其他措施来阻止这些其他引导加载程序尝试重新安装吗?为什么 Ubuntu 没有检测到引导加载程序已安装?

答案1

我会选择它,因为我不知道它是否已安装。如果我尝试找到它,那将是一件值得信赖的事情。

root@zeus-H370M:/home/zeus# apt show systemd-boot
N: Unable to locate package systemd-boot
N: Unable to locate package systemd-boot
E: No packages found
root@zeus-H370M:/home/zeus# apt show grub
Package: grub
State: not a real package (virtual)
N: Can't select candidate version from package grub as it has no candidate
N: Can't select versions from package 'grub' as it is purely virtual
N: No packages found
root@zeus-H370M:/home/zeus# apt show grub-pc
Package: grub-pc
Version: 2.04-1ubuntu26.9
Priority: optional
Section: admin
Source: grub2
Origin: Ubuntu

grub如果没有这些关于如何安装的详细信息,是否存在与和相冲突的行,lilo从而阻止它们安装。这些就是您需要查找的内容以解决此问题。几乎错过了这个相关包,尽管从描述中不清楚它是否提供命令,现在我也想到了文件搜索。

root@zeus-H370M:/home/zeus# apt-cache search systemd-boot
sicherboot - systemd-boot integration with UEFI secure boot support
systemd-bootchart - boot performance graphing tool

不,那里也没有运气,除非这是你使用的/usr/lib/systemd/boot/efi/systemd-bootx64.efi

root@zeus-H370M:/home/zeus# apt-file search systemd-boot
manpages-de: /usr/share/man/de/man7/systemd-boot.7.gz
manpages-de: /usr/share/man/de/man8/systemd-boot-check-no-failures.service.8.gz
systemd: /lib/systemd/system/sysinit.target.wants/systemd-boot-system-token.service
systemd: /lib/systemd/system/systemd-boot-check-no-failures.service
systemd: /lib/systemd/system/systemd-boot-system-token.service
systemd: /lib/systemd/systemd-boot-check-no-failures
systemd: /usr/lib/systemd/boot/efi/systemd-bootx64.efi
systemd: /usr/share/man/man7/systemd-boot.7.gz
systemd: /usr/share/man/man8/systemd-boot-check-no-failures.8.gz
systemd: /usr/share/man/man8/systemd-boot-check-no-failures.service.8.gz
systemd: /usr/share/man/man8/systemd-boot-system-token.service.8.gz
systemd-bootchart: /lib/systemd/system/systemd-bootchart.service
systemd-bootchart: /lib/systemd/systemd-bootchart
systemd-bootchart: /usr/share/doc/systemd-bootchart/README
systemd-bootchart: /usr/share/doc/systemd-bootchart/changelog.Debian.gz
systemd-bootchart: /usr/share/doc/systemd-bootchart/copyright
systemd-bootchart: /usr/share/man/man1/systemd-bootchart.1.gz

所以我仍然坚持我最初的结论,不知道它是否已安装。

这篇文章太长了,不适合发表评论,而且无论如何都应该在这里发表。我刚刚EFI为我的计算机做了一个条目,我显示了所有的命令,efiboormgr这就是为什么我指向那个 .efi 文件,怀疑你在做这样的事情,仅从中加载efi。打包系统并不知道这一点,除非你告诉它,否则它不知道你对系统所做的更改。你可以做一个假的 .deb 包,它什么都不做,只是自行安装,并且与 有一条冲突行,grub然后lilo那些就永远不会安装,或者像你现在所做的那样,显然将它们固定得太低,当内核更新时它们永远不会安装。然后,你做任何你需要做的事情来更新efi新内核的加载。这就是你在安装时采取这些操作的原因。

相关内容