dmesg(全称 display message 或 driver message)是 Linux 系统里查看内核启动信息和运行时状态的老牌工具。想诊断硬件和驱动问题?它基本是第一道防线。真正会用的人,往往能从中快速定位设备识别错误、资源冲突或者驱动加载失败的线索。下面聊聊具体怎么分析这些检测信息。

先打开终端,输入
dmesg然后回车。你会看到一长串内核消息实时滚动——别慌,用上下箭头键就能慢慢翻看。初次接触的话,可能觉得信息量太大,所以通常我们会用grep来过滤。筛选硬件相关消息其实很简单:比如想查 USB 设备,就敲
dmesg | grep -i usb。注意-i参数是不区分大小写,方便匹配各种写法。想要查显卡?换成vga或者drm关键字就行。如果希望实时盯着新出现的硬件检测信息,可以配合
watch命令。举个例子:watch -n 1 "dmesg | grep -i usb",每隔一秒刷新一次,插拔设备时特别有用。现场分析之后,往往需要把日志存下来慢慢研究。用
dmesg > dmesg_output.txt就能把所有内核消息导出到文件。之后用cat、less或者编辑器打开都行。拿到 dmesg 输出后,重点看这几个方面:
- 设备识别和初始化:检查是否有设备 ID、供应商 ID 被正确读出,比如
usb 1-1: New USB device found, idVendor=xxxx这种行。 - 错误和警告:重点关注
error、fail、warning字段——驱动加载失败、设备故障通常都会在这里报。 - 资源分配:看看设备是否成功拿到了内存地址、中断请求(IRQ)等资源。如果出现
resource conflict,说明硬件之间在抢资源。 - 性能问题:DMA 传输错误、设备冲突这类消息往往会导致系统卡顿或掉速,值得留意。
- 设备识别和初始化:检查是否有设备 ID、供应商 ID 被正确读出,比如
掌握这几个技巧之后,再回头翻 dmesg 日志就不会一头雾水了。硬件故障排查往往就是从这些零碎的内核消息里找到突破口——多试几次,自然就熟练了。