我正在使用phram和ramoops将最新的系统日志存储在保留的内存中,这样一旦我的计算机崩溃,我可以在重启后转储恐慌日志。 MTD驱动程序phram
和模块ramoops
用于自动将系统日志记录到内存中:
/# insmod /lib/modules/phram.ko phram=phram-oops,<addr>,<len>
/# ls -l /dev/mtdchar/param-oops
crw-r--r-- 1 root root 90, 24 Jul 20 16:34 phram-oops
直到最近我才重新使用此驱动程序来备份引导加载程序日志 - 在引导期间,phram-oops将u-boot日志备份到一个保留的内存区域;在Linux shell启动后,转储u-boot日志,清除phram-oops dd if=/dev/zero bs=65536 count=1 of=/dev/mtdchar/param-oops
,rmmod phram和insmod phram以及新的内存区域以进行恐慌日志。然后转储上次启动的系统日志。在此步骤之前,/dev/mtdchar/phram-oops
仍然正常工作:
/# ls -l /dev/mtdchar/phram-oops
crw-r--r-- 1 root root 90, 24 Jul 20 16:34 /dev/mtdchar/phram-oops
但是,运行dd if=/dev/zero bs=65536 count=1 of=/dev/mtdchar/phram-oops” again to clear the memory, driver
/ dev / mtdchar / phram-oops后成为文件!!!
/# ls -l /dev/mtdchar/phram-oops
-rw-r--r-- 1 root root 65536 Jul 20 16:34 /dev/mtdchar/phram-oops
因此,之前的日志仍保留在内存中,无法清除。有关驱动程序如何转向文件的任何想法?以及如何解决它?
答案 0 :(得分:1)
这个问题似乎是由hotplug引起的 - 它需要在rmmod phram
之后和insmod phram
之前使用新地址延迟一些。否则,设备驱动程序很可能未正确加载,因此dd
命令可以将其创建为普通文件。