openKylin作为面向桌面和服务器场景的国产Linux发行版,经常需要在信创终端上做硬件兼容性验证或故障排查。hwinfo是一个专业的硬件探测工具,它不只读取PCI设备列表,还会综合sysfs、SMBIOS、udev等数据源,输出CPU、主板、内存、硬盘、显卡、网络接口等丰富信息。本文将结合openKylin的软件包管理方式,演示从安装到生成硬件报告的操作过程,并解释关键字段的排查价值。

一、在openKylin中安装hwinfo
openKylin的软件仓库默认包含hwinfo,因此安装过程非常直接。先更新本地软件包索引,再执行安装命令。需要管理员权限,普通用户可通过sudo获得临时授权。
sudo apt update sudo apt install hwinfo
安装完成后,执行hwinfo --version可以查看版本。hwinfo依赖libhd库,安装时apt会自动处理依赖关系。如果在精简版系统或离线源中找不到该包,也可以从openKylin官方源启用对应组件后再次尝试。对于无法联网的环境,建议提前下载deb包及其依赖并制作本地源。
部分最小化安装的openKylin系统可能只带了基础的lspci和lsusb,这些工具虽然能列出设备ID,但缺少驱动绑定、缓存大小等细节。hwinfo会把udev和内核模块信息合并进输出,因此在维护场景中用途更大。
二、hwinfo基础用法与输出结构
直接运行hwinfo会扫描全部硬件并输出大量信息,内容可能超过数千行,不利于阅读。更推荐先用hwinfo --short查看摘要,它会按硬件类别列出关键型号。
hwinfo --short
输出示例通常包含cpu、keyboard、mouse、monitor、graphics card、storage、network interface等分区。每一行会显示设备类别和型号,例如cpu条目会给出处理器型号与当前频率,disk条目会显示硬盘名称和容量。通过这份摘要可以快速确认系统识别到了哪些硬件。
hwinfo的完整输出采用层级结构,每个设备以唯一ID开头,后面跟随Hardware Class、Model、Vendor、Driver等字段。比如一个网卡条目会同时给出内核驱动名称、总线地址和MAC地址。这种结构比单一命令的输出更适合归档和脚本解析。使用hwinfo --all --log /var/log/hwinfo.log可以将完整扫描结果写入日志文件,避免终端滚动过快。
三、针对不同硬件的探测命令
hwinfo支持按硬件类别筛选,常用类别包括cpu、memory、disk、network、gfxcard、bios、monitor等。命令格式是hwinfo --类别名,例如查看CPU信息:
hwinfo --cpu hwinfo --memory hwinfo --disk
CPU信息中比较有价值的字段是Model、Vendor、Clock、Cache和Cores。某些国产处理器平台下,hwinfo还能显示具体的架构标识和微代码版本。内存信息中Size表示单条容量,Speed表示频率,Form Factor显示是DIMM还是SO-DIMM,Locator表示插槽位置。通过这些字段可以判断内存是否运行在标称频率,以及是否还有空闲插槽。
磁盘信息会列出/dev/sda、/dev/nvme0n1等设备及其分区、容量、接口类型。网络部分则显示每个接口的Model、Driver和HW Address。显卡部分可以帮助判断开源驱动或闭源驱动是否正常加载。需要查看主板BIOS版本时,执行hwinfo --bios即可。若输出中某一类别为空,通常说明内核未识别到对应设备,需要检查驱动或连接。
四、生成硬件报告并做自动化
运维人员经常需要批量采集终端硬件信息,手工执行多次命令效率较低。可以把hwinfo命令封装进脚本,统一输出为文本文件。以下脚本会生成摘要并保存到/home目录,同时抓取网络接口的关键字段。
#!/bin/bash OUTPUT=/home/user/hardware-report.txt echo "=== openKylin 硬件报告 ===" > "$OUTPUT" echo "[CPU]" >> "$OUTPUT" hwinfo --cpu | grep -E "Model|Vendor|Clock|Cores" >> "$OUTPUT" echo "[Memory]" >> "$OUTPUT" hwinfo --memory | grep -E "Model|Vendor|Size|Speed" >> "$OUTPUT" echo "[Network]" >> "$OUTPUT" hwinfo --network | grep -E "Model|Driver|HW Address" >> "$OUTPUT" echo "报告已生成: $OUTPUT"
注意代码中的大于号表示shell重定向,执行时不要遗漏。保存为hw-report.sh后,使用chmod +x hw-report.sh赋予执行权限,再运行./hw-report.sh。该脚本会自动追加命令输出到报告文件,适合在多台机器上统一执行。
如果需要定时采集,可以结合crontab或systemd timer。在信创项目中,还可以把硬件报告统一上传到配置管理平台,与资产台账做比对,快速发现配置变更。hwinfo的输出字段稳定,比人工填表更可靠。
五、hwinfo与lspci、dmidecode的对比及注意事项
Linux下硬件探测工具不止hwinfo一种,lspci侧重PCI和PCIe设备,lsusb侧重USB设备,dmidecode读取SMBIOS表。它们各有侧重,hwinfo的优势在于整合了udev、sysfs和内核驱动信息,并直接给出Hardware Class等友好分类。例如同样查看网卡,lspci只显示控制器芯片型号和vendor ID,而hwinfo还能显示内核驱动是否绑定以及MAC地址。
hwinfo在扫描某些设备时需要root权限,否则可能无法读取DMI信息或硬盘序列号。因此安装后建议通过sudo运行,或在root shell中执行。全量扫描耗时可能较长,尤其在连接大量外设时会增加响应时间。现场排查时可先运行hwinfo --short快速定位,需要细节再指定类别。
在国产CPU和ARM架构的openKylin终端上,部分SMBIOS数据可能不完整,此时hwinfo会尽量从设备树或ACPI中补充信息。如果发现Model字段显示为未知,可以结合dmesg和lspci -vvv进一步分析。另一方面,hwinfo并不做性能测试,它的职责是如实呈现静态硬件信息,因此不能替代benchmark工具。
掌握了hwinfo的基本用法后,openKylin系统的硬件核查、驱动确认和故障报告都会更加高效。建议在运维脚本中固定使用--short和指定类别参数,避免全量扫描带来的噪音。