dmesg(display message 或 driver message)是 Linux 内核环形缓冲区(ring buffer)的日志输出,记录了系统启动过程、硬件状态、驱动加载、内核异常等信息。分析 dmesg 报错,一般可以按下面思路和步骤来。
dmesg
dmesg -w
dmesg --level=err,warn
常见级别:
emerg:系统不可用alert:必须立即处理crit:严重err:错误warn:警告info:信息debug:调试dmesg -T
显示人类可读时间,如:
[Mon Jan 1 10:00:00 2024] usb 1-1: device descriptor read/64, error -71
示例:
usb 1-1: device not accepting address
ata1: COMRESET failed
可能原因:
分析方法:
lsusb / lspci示例:
Out of memory: Kill process 1234 (java)
BUG: unable to handle page fault
可能原因:
分析方法:
free -h
cat /proc/meminfo
必要时用 memtester 或 memtest86+ 检测内存。
示例:
EXT4-fs error (device sda1): ...
XFS (sdb): log I/O error
可能原因:
分析方法:
dmesg | grep -i ext4
fsck /dev/sda1
示例:
eth0: link down
e1000e 0000:00:19.0: Detected Hardware Unit Hang
可能原因:
示例:
module verification failed
Unknown symbol in module
可能原因:
示例:
Kernel panic - not syncing
RIP: 0010:xxx
说明:
分析方法:
/var/crashdmesg | grep -i error
dmesg | grep -i fail
dmesg | grep -i usb
dmesg -T | grep -i "Jan 1 10:"
journalctl -k
/var/log/messages
/var/log/syslog
dmesg --level=err,warn -T
如果你愿意,可以把具体的 dmesg 报错内容贴出来(脱敏后),我可以帮你逐条分析是什么问题、该怎么处理。