我在 Ubuntu 22.04 LTS 上,这是撰写此问题时的 Ubuntu 最新版本。我目前在内核上5.15.0-27-generic
。我只使用默认(通用)内核。
问题
重启后,我发现 Grub 菜单是空的。5.15.0-27-generic
没有列出任何已安装的内核(当前:1,)。
我能够通过使用可启动 USB 并恢复备份来修复我的系统/boot/grub/grub.cfg
。
我的发现
我进行了故障排除并发现:
- 在每个内核安装或删除结束时
/usr/sbin/update-grub
运行。 update-grub
运行脚本生成/etc/grub.d/
文件/boot/grub/grub.cfg
。脚本按字母数字顺序执行。- 脚本这里的关键词是:
- 作为一个有效的 shell 脚本
- 从...开始
#! /bin/sh
- 具有执行位(
chmod +x
)
- 我发现该文件
/etc/grub.d/10_linux
确实不是有一个可执行位(这是意外的),因此被忽略update-grub
。这是负责将 Linux 内核添加到 Grub 菜单的脚本。
解决我的问题的方法是再次chmod +x /etc/grub.d/10_linux
运行update-grub
。
我的问题
哪个软件包、更新或任何其他东西删除了执行位/etc/grub.d/10_linux
?我绝对没有自己这样做。我想避免这种情况再次发生。
欢迎向我提问其他问题。我会添加所需信息。让我们一起进行建设性的协作以解决问题。如果需要,我甚至会向上游提交问题报告。
命令输出
$ ls -l /boot/
total 78772
-rw-r--r-- 1 root root 260489 apr 14 06:46 config-5.15.0-27-generic
drwxr-xr-x 2 root root 4096 jan 30 12:46 efi
drwxr-xr-x 6 root root 4096 jul 31 18:04 grub
-rw-r--r-- 1 root root 63078554 jul 30 14:03 initrd.img-5.15.0-27-generic
-rw------- 1 root root 6241791 apr 14 06:46 System.map-5.15.0-27-generic
-rw------- 1 root root 11064224 apr 14 06:47 vmlinuz-5.15.0-27-generic
$ ls -l /etc/grub.d/
total 156
drwxr-xr-x 3 root root 4096 jul 31 20:27 .
drwxr-xr-x 169 root root 12288 jul 30 14:04 ..
-rwxr-xr-x 1 root root 10627 sep 2 2021 00_header
-rwxr-xr-x 1 root root 6260 apr 15 23:50 05_debian_theme
-rwxr-xr-x 1 root root 18683 apr 15 23:50 10_linux
-rwxr-xr-x 1 root root 43031 sep 2 2021 10_linux_zfs
-rwxr-xr-x 1 root root 14180 apr 15 23:50 20_linux_xen
-rwxr-xr-x 1 root root 13369 apr 15 23:50 30_os-prober
-rwxr-xr-x 1 root root 1372 apr 15 23:50 30_uefi-firmware
-rwxr-xr-x 1 root root 700 feb 21 01:12 35_fwupd
-rwxr-xr-x 1 root root 214 sep 2 2021 40_custom
-rwxr-xr-x 1 root root 215 apr 15 23:50 41_custom
drwxr-xr-x 4 root root 4096 jan 30 14:02 backup
-rw-r--r-- 1 root root 483 sep 2 2021 README