journalctl -b -k 是查看 bios/uefi 与内核握手痕迹最实用的方式,它显示当前启动中内核解析的 acpi、dmi、efi、smbios 等固件传递的关键信息,而非原始 bios 日志。

journalctl -b -k 是查看 BIOS 相关启动握手记录最接近、也最实用的方式,但需要明确一点:journalctl 本身不直接记录 BIOS 层面的原始握手(如 POST 代码、UEFI 协议交互),它只能显示内核从固件(BIOS/UEFI)接收到并解析后的信息,比如内存检测结果、ACPI 表加载、SMBIOS 数据、PCI 设备枚举、时钟源初始化等——这些正是 BIOS/UEFI 与内核“握手”的关键痕迹。
以下是具体操作和解读要点:
查看本次启动中 BIOS/UEFI 传递给内核的关键信息
执行命令:
journalctl -b -k
-
-b:限定为当前启动会话(避免混入旧日志) -
-k:等价于--dmesg,只显示内核环缓冲区(kernel ring buffer)日志,即dmesg输出内容,但格式更规范、带时间戳和元数据
该命令输出中重点关注以下几类行:
-
DMI:开头的行(如DMI: Dell Inc. XPS 13 9310...)→ 来自 SMBIOS 表,由 BIOS 提供的硬件厂商/型号/序列号 -
ACPI:开头的行(如ACPI: EC: EC started、ACPI: SSDT ...)→ BIOS 加载并移交的高级配置与电源接口表 -
Hypervisor detected或Secure boot enabled→ UEFI 安全启动、虚拟化支持等固件级能力声明 -
e820:或efi:内存映射信息(如e820: map [mem 0x0000000000000000-0x000000000009ffff] usable)→ BIOS 报告的物理内存布局 -
PCI:设备扫描日志(如pci 0000:00:00.0: [1022:1450] type 00 class 0x060000)→ BIOS 已完成 PCI 总线枚举并告知内核
✅ 小技巧:加
| grep -i "acpi\|dmi\|efi\|smbios\|firmware"快速过滤关键线索journalctl -b -k | grep -i "acpi\|dmi\|efi\|smbios\|firmware"
查看上一次或更早启动的 BIOS 相关日志(需持久化启用)
默认 journal 只保留本次启动日志。若要查上次开机的 BIOS 握手记录(例如对比两次启动差异):
-
确保日志持久化已开启:
sudo mkdir -p /var/log/journal sudo systemctl restart systemd-journald
(检查
/etc/systemd/journald.conf中Storage=persistent是否生效) -
查看上次启动的内核日志:
journalctl -b -1 -k
-b -1表示上一次完整启动;可配合--list-boots先确认可用启动索引。
补充说明:为什么没有真正的“BIOS 握手原始日志”?
- BIOS/UEFI 运行在实模式或保护模式早期,无操作系统环境,不产生标准日志流
- 它通过固化在 ROM 中的代码执行硬件初始化,并将结构化数据(如 ACPI 表、SMBIOS 表、内存映射)写入内存特定区域,再跳转至 bootloader
- Linux 内核在启动初期主动读取这些区域,并将解析结果记入
dmesg—— 这就是journalctl -k能看到的全部
所以,journalctl -b -k 就是你能拿到的、最权威的“BIOS 与 Linux 内核握手证据链”。它不是 BIOS 控制台输出的复刻,而是内核视角下对固件意图的忠实转译。
不复杂但容易忽略











