在 Debian 系统中,dmesg 本身只是一个查看内核环形缓冲区(kernel ring buffer)的工具,它并不能“开启调试”,真正决定调试信息多少的是内核的日志级别(loglevel)和内核调试选项。
下面分几种常见场景说明。
cat /proc/sys/kernel/printk
输出示例:
4 4 1 7
含义:
当前级别 默认级别 最小级别 引导级别
sudo dmesg -n 7
# 或
echo 7 | sudo tee /proc/sys/kernel/printk
级别说明:
sudo dmesg -w
# 或
sudo dmesg -W
编辑:
sudo nano /etc/default/grub
找到:
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
改为(示例):
GRUB_CMDLINE_LINUX_DEFAULT="quiet loglevel=7"
如果是调试早期启动问题:
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=7"
更新 GRUB:
sudo update-grub
重启:
sudo reboot
# 打开某个模块的调试
sudo echo "module usbcore +p" > /sys/kernel/debug/dynamic_debug/control
查看:
sudo dmesg -w
某些驱动支持:
echo 1 | sudo tee /sys/module/<driver>/parameters/debug
如果你是自己编译 Debian 内核:
make menuconfig
启用:
Kernel hacking
Kernel debuggingDebug printkDynamic debugging然后:
make deb-pkg
sudo dmesg
或:
sudo usermod -aG adm $USER
journalctl -k -f
dmesg 只是看日志,调试靠内核 loglevel 和内核配置
如果你能说明:
我可以给你更精确的命令。