我试图更好地了解 Linux,特别是驱动程序注册等,因此我试图跟踪插入模块和驱动程序时会发生什么。根据我的理解,模块插入和删除等内核事件记录在 /var/log/messages 中,但我发现根据模块的不同结果不一致。例如,如果我加载 usb-storage 模块,内核会将进程记录到 /var/log/messages,如下所示:
[root@lily frank]# modprobe -v usb-storage
insmod /lib/modules/2.6.32-573.26.1.el6.i686/kernel/drivers/usb/storage/usb-storage.ko
[root@lily dev]# cat /var/log/messages | tail
Jun 16 10:03:29 lily kernel: Initializing USB Mass Storage driver...
Jun 16 10:03:29 lily kernel: usbcore: registered new interface driver usb-storage
Jun 16 10:03:29 lily kernel: USB Mass Storage support registered.
但是,当我对其他一些模块尝试相同的操作时,内核不会记录该操作,如下使用 fcoe 驱动程序所示:
[root@lily dev]# modprobe -v fcoe
insmod /lib/modules/2.6.32-573.26.1.el6.i686/kernel/drivers/scsi/scsi_tgt.ko
insmod /lib/modules/2.6.32-573.26.1.el6.i686/kernel/drivers/scsi/scsi_transport_fc.ko
insmod /lib/modules/2.6.32-573.26.1.el6.i686/kernel/drivers/scsi/libfc/libfc.ko
insmod /lib/modules/2.6.32-573.26.1.el6.i686/kernel/drivers/scsi/fcoe/libfcoe.ko
insmod /lib/modules/2.6.32-573.26.1.el6.i686/kernel/drivers/scsi/fcoe/fcoe.ko
[root@lily dev]# cat /var/log/messages | tail
Jun 16 10:03:29 lily kernel: Initializing USB Mass Storage driver...
Jun 16 10:03:29 lily kernel: usbcore: registered new interface driver usb-storage
Jun 16 10:03:29 lily kernel: USB Mass Storage support registered.
正如您所看到的,自从记录了 USB 存储模块的插入以来,内核没有在 /var/log/messages 中记录任何内容。我发现它没有记录很多模块的插入。
有人可以告诉我这种行为的原因吗?这与日志级别或其他什么有关吗?
答案1
内核不会以集中的方式记录模块操作,每个模块可以记录它想要的任何内容(使用printk()
)。 USB模块日志“正在初始化 USB 大容量存储驱动程序...”ETC。;但 FCoE 驱动程序仅在发生错误时记录消息 - 如果一切加载正确,它们将保持沉默。许多模块都是这样工作的;趋势是尽量减少记录的消息数量,尤其是在一切正常的情况下。