我正在研究Linux上的不同日志记录机制,以防内核死机(OOPS)。到目前为止,我在网上搜索到的信息如下:
apanic是一种完成任务的旧机制。
ram-console/persistent-ram是一种新的机制。
在这方面,有人能告诉我以下几点吗?
旧的apanic机制是什么?在高层,它是如何工作的?

为什么不赞成使用apanic机制,而支持ram_控制台/持久性_ram机制?
新的ram_控制台/persistent_ram mechinsm带来了哪些优势。
ram-console/persistent-ram在功能上与旧的apanic方法有什么不同?
我只是在寻找指针和高水平的答案,从某种意义上说,这是一个方向,我可以采取进一步研究的机制。我希望得到这方面的任何相关信息。
谢谢

最佳答案

请在下面找到一系列问题的答案。
什么是旧的apanic机制,在高层,这是如何工作的?
它是android用来记录消息的一种机制。它将日志消息写入nand的mtd分区中的某个特定偏移量。内核模块将名为“apanic”的文件导出到“debugfs”。可以使用下面的命令将debugfs装载到某个目录中。”mount-t debugfs none/sys/kernel/debug“,这要求在Linux内核上启用debugfs配置。
有关更多信息,请访问下面链接中的源代码。
https://android.googlesource.com/kernel/msm.git/+/android-msm-2.6.35/drivers/misc/apanic.c
为什么不赞成使用apanic机制,而支持ram_控制台/持久性_ram机制?
这个apanic驱动程序不是linux内核的一部分。它是专门针对android的。它在最新版本的机器人中被弃用。原因可能是在内核opps发生时写入nand分区可能不是个好主意。因为nand_写入速度慢,而且写入周期有限。这只是我的看法。但我不确定真正的原因。
新的ram_控制台/persistent_ram mechinsm带来了哪些优势?
它也是android用来记录控制台消息的日志记录机制。在这里,日志信息进入ram区域。如果是持久内存,则日志消息将转到RAM的持久内存区域(将被保留)。此驱动程序模块在proc目录中创建一个名为“last_kmsg”的文件。如果内核OOPS并停止引导,则可以在下次引导时读取此消息。有关更多信息,请浏览下面链接中给出的源代码。
https://android.googlesource.com/kernel/common.git/+/android-3.4/drivers/staging/android/ram_console.c
ram-console/persistent-ram在功能上与旧的apanic方法有什么不同?
前者基于ram,后者基于mtd。
在最新的android实验源代码中,我并没有找到两者的源代码。不知道原因。
https://android.googlesource.com/kernel/common.git/+/experimental/android-3.10-rc5/drivers/staging/android/
希望我能澄清你的疑问。
当做,
Yuvaraj

09-27 17:29