Linux 硬件信息与内核模块命令速查
更新时间:2026-08-28。本文是 Linux 命令速查主题第⑫族:硬件信息与内核模块,约 25 个命令。这族回答两类问题——"这台机器到底是什么配置"(采购验收、故障定损、兼容性确认)和"怎么让内核认新硬件、按我的意图调"(装驱动、调频率、绑中断)。它不直接提升性能,但几乎所有性能问题最后都要回来问一句:硬件本身是好的吗?系统信息见 进程与系统命令,存储运维见 磁盘与存储。
一、整机与主板信息
dmidecode 读的是主板上的 DMI(Desktop Management Interface,桌面管理接口)/SMBIOS 表——BIOS 在启动时把硬件清单写进这块内存区域。它的价值在于不需要进 BIOS、不需要停机,就能看到序列号、型号、内存插槽分布。做资产盘点或确认"这台机器还能插几根内存"时,比拆机箱快得多。
| 命令 | 作用 | 常用示例 |
|---|---|---|
dmidecode | 读取 DMI/SMBIOS 硬件信息,含型号、序列号、BIOS 版本、内存插槽布局 | dmidecode -t system(整机型号与序列号);dmidecode -t memory(内存条详情);dmidecode -t bios;dmidecode -t 16(内存插槽总数与容量上限) |
lshw | 汇总全部硬件配置的树状报告,覆盖面最广,一条命令出完整清单 | lshw -short(精简列表);lshw -class disk(只看磁盘);lshw -html > hw.html(生成网页报告) |
hwinfo | 另一套硬件探测工具(SUSE 系常见),对部分设备识别比 lshw 更细 | hwinfo --short;hwinfo --disk;hwinfo --cpu |
inxi | 一行命令输出可读的硬件摘要,社区求助时贴配置最方便 | inxi -Fxz(全量摘要,自动隐藏序列号);inxi -C(只看 CPU) |
neofetch | 美化输出的系统与硬件概览,常用于截图展示环境信息 | neofetch |
查"内存还能不能加"的正确姿势:
dmidecode -t 16看插槽总数与单条上限,dmidecode -t 17看每根槽位插没插、多大、什么频率。这比free有用——后者只告诉你现在有多少,不告诉你还能装多少。注意dmidecode需要 root。
二、总线与外设
| 命令 | 作用 | 常用示例 |
|---|---|---|
lspci | 列出 PCI/PCIe 总线上的所有设备(网卡、显卡、RAID 卡、NVMe 控制器等) | lspci;lspci -v(详细信息);lspci -vv(更详细);lspci -k(显示设备正在用的内核驱动,排驱动问题首选);`lspci |
lsusb | 列出 USB 总线设备,查外接设备是否被识别、识别成什么 | lsusb;lsusb -v(详细);lsusb -t(树状拓扑,看挂在哪级 Hub 上) |
edid-decode | 解析显示器 EDID 数据,排查分辨率/刷新率异常(多见于服务器接显示器的场景) | edid-decode /sys/class/drm/card0-HDMI-A-1/edid |
blkdiscard | 对块设备下发 TRIM/DISCARD,通知 SSD 哪些块可回收,用于 SSD 重置或性能测试前擦盘 | blkdiscard /dev/sdb(会清空整盘数据);blkdiscard -s /dev/sdb(安全擦除) |
lspci -k是排查"网卡认了但起不来"的关键一步——它会显示 "Kernel driver in use: ixgbe" 或 "Kernel modules: ixgbe"。如果显示没有驱动在用,说明模块没加载或黑名单了;如果驱动是vfio-pci,说明设备被透传给虚拟机了。
三、内核模块管理
内核模块(LKM,Loadable Kernel Module,可加载内核模块)是按需插入内核的代码片段,绝大多数驱动都是以模块形式存在的。这族命令管理模块的加载、卸载与参数——装完新网卡、升级驱动、屏蔽问题模块都要用到它们。
| 命令 | 作用 | 常用示例 |
|---|---|---|
lsmod | 列出当前已加载的内核模块及其依赖关系与引用计数 | lsmod;`lsmod |
modinfo | 显示模块文件的详细信息:作者、描述、支持的参数、依赖、别名 | modinfo ixgbe;modinfo -p ixgbe(只看可调参数);modinfo -F version e1000e |
modprobe | 智能加载/卸载模块(会自动处理依赖),日常一律用它而非 insmod | modprobe ixgbe(加载);modprobe -r ixgbe(卸载,含依赖);modprobe ixgbe InterruptThrottleRate=1(带参数加载) |
insmod | 加载指定模块文件,不处理依赖,一般只在调试自编译模块时用 | insmod ./mymod.ko |
rmmod | 卸载模块,不处理依赖;模块被占用(引用计数非 0)时会失败 | rmmod mymod |
depmod | 生成模块依赖关系文件 modules.dep,安装新模块后需要执行 | depmod -a(全部重建);depmod -A(只处理变更,更快) |
模块参数的持久化写法:在
/etc/modprobe.d/*.conf里写options ixgbe InterruptThrottleRate=1,而不是每次手动modprobe。要彻底禁用某个模块(比如屏蔽 nouveau 显卡驱动)写blacklist nouveau,然后depmod -a并重建 initramfs。
四、CPU 频率与电源
CPU 会在 P-state(性能状态,调频率电压)与 C-state(空闲状态,关掉部分电路省电)之间动态切换。这本来是好事,但对延迟敏感的服务(高频交易、实时音视频)来说,正是这些切换带来了尾延迟抖动——看起来平均延迟不错,P99 却莫名其妙地高。
| 命令 | 作用 | 常用示例 |
|---|---|---|
cpupower | 查看与设置 CPU 调频策略,是控制 P-state 的官方工具 | cpupower frequency-info(当前策略与可用频率);cpupower frequency-set -g performance(锁高性能);cpupower idle-info(看 C-state);cpupower monitor(实时监控频率与 C-state 占比) |
powertop | 分析系统功耗与唤醒源,笔记本续航调优与服务器省电都用它 | powertop(交互界面);powertop --calibrate(先校准再测,数据更准);powertop --auto-tune(自动应用省电建议) |
tuned-adm | 切换系统调优配置档(throughput-performance、latency-performance 等),一行命令套用一套调优组合 | tuned-adm list(列出可用档);tuned-adm active(当前档);tuned-adm profile latency-performance(低延迟档);tuned-adm off(关闭) |
追求低延迟时,
tuned-adm profile latency-performance是最省事的起点——它会一次性把 CPU 调频策略、C-state 深度、调度器参数配好。想手工做就cpupower frequency-set -g performance配合内核参数intel_idle.max_cstate=1。调优前后务必用 turbostat 确认频率真的稳住了。
五、中断与设备
IRQ(Interrupt Request,中断请求)是硬件通知 CPU 有数据要处理的机制。网卡收包、磁盘完成 I/O 都走中断。中断在多核间的分配不均,会让某一个核被打满而其他核空闲——这是多队列网卡时代最常见的隐性瓶颈之一。
| 命令 | 作用 | 常用示例 |
|---|---|---|
irqbalance | 自动把硬件中断均衡分配到多个 CPU 核心,多核机器默认应开启 | systemctl status irqbalance(查状态);irqbalance --oneshot(跑一次后退出);irqbalance --debug |
lsdev | 汇总列出系统设备占用的中断号、DMA 通道与 I/O 端口 | lsdev |
sensors | 读取温度、电压、风扇转速传感器,排查过热降频 | sensors(列出全部);sensors-detect(首次使用先探测芯片);watch -n 2 sensors(持续监控) |
看中断是否均衡:
cat /proc/interrupts里各 IRQ 在不同 CPU 列上的计数。如果某个网卡队列的中断全压在 CPU0,就要检查irqbalance是否在跑,或手工设置smp_affinity。温度异常会触发降频,表现为"跑一会儿就变慢"——用sensors配合turbostat一起看。
六、时间硬件与存储底层
| 命令 | 作用 | 常用示例 |
|---|---|---|
hwclock | 读取与设置硬件时钟(RTC,Real-Time Clock,主板电池供电的时钟),与 date 管的系统时钟是两套 | hwclock --show(看硬件时钟);hwclock --systohc(系统时间写入硬件);hwclock --hctosys(硬件时间同步到系统);hwclock --debug |
hdparm | 查看与设置 SATA/IDE 磁盘参数,测缓存与磁盘读取速度 | hdparm -I /dev/sda(看磁盘能力集);hdparm -Tt /dev/sda(测缓存与磁盘读取速度);hdparm -W /dev/sda(查写缓存开关) |
sdparm | 访问 SCSI 设备(含 SAS 盘、部分 USB 存储)的模式页参数,比 hdparm 更底层 | sdparm -a /dev/sdb(列出全部参数);sdparm --get=WCE /dev/sdb(查写缓存) |
系统时间与硬件时钟是两个独立的钟:开机时内核从 RTC 读一次,之后靠系统时钟自己走,两者会漂移。重启后时间跳变通常就是漂移导致,用
hwclock --systohc校准。正式环境应配 NTP/chrony 持续同步,而不是靠手工校准。
一句话总结
硬件与内核速查:先看配置用 dmidecode/lshw/lspci -k(顺带确认驱动),管驱动用 modprobe/modinfo/modprobe.d,压延迟用 cpupower/tuned-adm,查过热降频用 sensors,均衡中断用 irqbalance,硬盘能力用 hdparm——25 个命令覆盖"认清机器、装好驱动、调到顺手"的完整链路。