在内核恐慌(OOPS)的情况下,我正在研究Linux上的不同日志记录机制。到目前为止,我在网上搜索,我已经能够得到以下信息:
有人可以在这方面了解以下内容吗?
我只是在寻找指针和高级答案,从某种意义上说,我可以采取进一步研究机制的方向。我很感激这方面的任何相关信息。
由于
答案 0 :(得分:5)
在下面找到您的一系列问题的答案。
旧的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_console / persistent_ram机制?
这个apanic驱动程序不是linux内核的一部分。它特定于android。它在最新版本的androids中已弃用。当内核opps发生时,原因可能是写入nand分区可能不是一个好主意。由于nand_write很慢并且写周期有限。这只是我的看法。但我不确定实际原因。
新ram_console / persistent_ram mechinsm带来哪些优势?
它也是android用于记录控制台消息的日志记录机制。这里记录消息进入RAM区域。在persistent_ram的情况下,日志消息进入RAM的持久存储区域(将被保留)。此驱动程序模块在proc目录中创建名为“last_kmsg”的文件。如果内核跳过并停止引导,则可以在下次引导时读取此消息。有关更多信息,请查看以下链接中给出的源代码。
ram_console / persistent_ram以什么方式在功能上与旧的apanic方法不同?
前者以ram为基础,后者以mtd为基础。
在最新的实验性android源码中,我找不到两者的来源。不知道原因。
希望我澄清你的疑问。
此致
Yuvaraj.A