我们如何离线了解 Debian 和 Arch 上的内核版本?
即来自安装在另一个分区上的其他正在运行的 Linux
答案1
如果您可以确定/boot/vmlinuz...
将使用哪个内核二进制文件(在 x86 上)来引导给定系统,file
则会告诉您它对应的内核版本:
$ file /boot/vmlinuz-4.18.0-305.19.1.el8_4.x86_64
/boot/vmlinuz-4.18.0-305.19.1.el8_4.x86_64: Linux kernel x86 boot executable bzImage, version 4.18.0-305.19.1.el8_4.x86_64 ([email protected]) #1 SMP Tue Sep 7 07, RO-rootFS, swap_dev 0x9, Normal VGA
$ file /boot/vmlinuz-5.10.0-9-amd64
/boot/vmlinuz-5.10.0-9-amd64: Linux kernel x86 boot executable bzImage, version 5.10.0-9-amd64 ([email protected]) #1 SMP Debian 5.10.70-1 (2021-09-30), RO-rootFS, swap_dev 0x6, Normal VGA
要访问相关文件,请挂载包含它们的文件系统(root 等/boot
)。
答案2
从技术上讲,这是不可能的,这不是一个有答案的问题 - 如果机器没有运行,则没有当前的内核版本。
您能做的最好的事情就是检查日志和配置以尝试找到哪个内核曾是机器上次启动时运行。这已经足够好了,而且可能也是你真正的意思。
一些可能需要检查的事情:
- 从机器上安装适当的分区并查看
/var/log/{kern,messages,syslog}*
,也许还有其他。 - 有些机器
dmesg
在启动/var/log/dmesg
或类似情况后立即记录输出。 journalctl
和--file
/或--root
选项可能允许您访问机器的 systemd 日志。- 检查机器的
/boot/grub/grub.cfg
. saved_entry
(如果存在)中的行(/boot/grub/grubenv
如果存在)将告诉您下次启动时默认的 grub 菜单选项是什么......这可能是最后启动的内核(或者可能不是,如果是新内核)自上次启动以来已安装并更新了 grub)
在所有情况下,我建议安装分区只读除非您确实需要对它们进行任何更改。
答案3
将“离线”Linux目录所在的分区挂载/boot
到“在线”Linux中,查看内容。
至少在 Debian 上,其中的vmlinuz
文件将内核版本作为文件名的一部分。您甚至可以使用这些文件查看该特定内核的内核配置config
。
答案4
对此没有直接的答案,就像其他人提到的那样,没有内核在运行。查明最后运行的内核的最佳方法是解析“Linux版本“ 或者 ”引导图像=“ 或者 ”命令行:“ 在/var/log/syslog
或 使用journalctl
.
其他方法是显示所有已安装的内核ls /lib/modules
并假设使用了最新版本。
有时ls -l /usr/src/linux
也可以是一个很好的指标。