咱们继续 /sys 目录,这次分享的是 /sys/firmware 目录~在 Linux 里,/sys/firmware 目录专门负责对接系统固件,是我们查看和管理固件信息的关键入口。像 UEFI、设备树(Device Tree)这类固件相关内容,都能在这个目录下找到。搞懂它,对我们管理系统启动、排查和调试固件问题,都有很大帮助。以下是 /sys/firmware 目录中常见的子目录和文件的详细介绍:描述: 这个目录包含与 UEFI 固件相关的信息。UEFI 是现代计算机的固件接口,取代了传统的 BIOS。- /sys/firmware/efi/systab:UEFI 系统表地址,内核用于和 UEFI 交互。
- /sys/firmware/efi/efivars/:UEFI 变量存储目录(最重要)。存放启动项、安全启动、固件参数等 UEFI 变量,efibootmgr 命令就是读写这个目录。
- /sys/firmware/efi/config_table:UEFI 配置表信息。
# 查看是否为 UEFI 启动(有目录则是)ls /sys/firmware/efi# 查看 UEFI 变量ls /sys/firmware/efi/efivars/
2. /sys/firmware/devicetree描述: 此目录包含设备树(Device Tree)相关的信息。设备树是一种数据结构,用于描述硬件设备的配置,特别是在嵌入式系统中。/sys/firmware/devicetree/base/:设备树根节点,包含所有硬件描述。- 子节点:cpu、memory、uart、gpio 等硬件信息。
# 查看设备型号cat /sys/firmware/devicetree/base/model# 查看内存配置ls /sys/firmware/devicetree/base/memory
描述: 该目录包含与 ACPI(高级配置和电源接口)相关的信息。ACPI 是一种用于电源管理和硬件配置的标准。- /sys/firmware/acpi/tables/:存放系统所有 ACPI 表(DSDT、SSDT 等),硬件兼容性调试必备。
- /sys/firmware/acpi/interrupts/:ACPI 中断信息。
- /sys/firmware/acpi/power_resource/:电源资源管理。
作用:排查服务器无法休眠、电源管理异常、硬件识别失败时,必查这个目录。ls /sys/firmware/acpi/cat /sys/firmware/acpi/tables/* # 查看所有 ACPI 表
4. /sys/firmware/dmi(硬件信息,x86 桌面 / 服务器)DMI(桌面管理接口)是固件记录硬件出厂信息的模块,我们常用的 dmidecode 命令,就是读取这个目录的数据。- /sys/firmware/dmi/tables/smbios_entry_point:SMBIOS 入口点。
- /sys/firmware/dmi/entries/:按类型分类的 DMI 条目。
作用:无需安装工具,直接读取硬件出厂信息,适合自动化脚本。- /sys/firmware/meminit:内核启动时内存初始化相关信息。
- /sys/firmware/qemu_fw_cfg:QEMU 虚拟机固件配置接口,虚拟机专用。
- /sys/firmware/opal:IBM Power 平台专用固件接口。
- 通过 /sys/firmware/efi/efivars 目录,可以管理 EFI 变量,这对于定制系统启动过程、配置安全启动等非常重要。
- 在嵌入式系统中,设备树提供了一种描述和配置硬件的平台无关的方法,使得 Linux 内核能够更灵活地支持多种硬件。
- ACPI 相关的信息可以帮助系统管理员和开发者优化电源使用,监控系统的电源状态,确保高效的电源管理。
- 可以通过查看固件和设备树信息来调试硬件问题、启动失败等故障,为开发和维护提供支持。
- 使用 efivars 目录中的变量,可以改变系统的启动顺序或启用/禁用安全启动等功能。
- 通过设备树信息,可以确认系统是否正确识别了所有硬件组件,并且能够配置它们。
- 监控 ACPI 表和状态,可以帮助管理员了解系统的电源使用情况,并进行相应的优化。
固件信息固化在硬件 / 固件中,修改 /sys/firmware 不会改变底层配置,还可能导致内核异常。不要在 x86 机器找 devicetree,也不要在 ARM 板卡找 efi。开机异常、电源管理失效、硬件识别失败,优先查看 /sys/firmware 下的日志和表信息。该目录默认开放读权限,普通用户也能查看信息,无需 sudo。