gpt4 book ai didi

linux - Mips Linux : Logging Kernel Panic into mtd partition

转载 作者:太空狗 更新时间:2023-10-29 11:44:24 26 4
gpt4 key购买 nike

我们的基于 MIPS 的嵌入式设备在现场遇到内核 panic 。如何在 MTD 分区中记录内核崩溃跟踪?我们只需要将跟踪写入 MTD 还是可以覆盖 NFS?任何人都可以解释如何在远程框出现 panic 后获得有用的内核跟踪。

最佳答案

您可以在内核中打开 mtdoops 模块并将内核崩溃跟踪记录到 mtd 分区。我不认为我们可以通过 NFS 编写 panic 跟踪。但是,您可能想要探索 ramoops。

以下是配置内核以将内核 oops 捕获到 mtd 闪存的步骤。在内核 panic 之后捕获堆栈跟踪对于调试内核问题尤其是在现场发生的问题来说是非常宝贵的。在 mtdoops 模块初始化期间,mtd 分区变成一个循环缓冲区并预先删除。

  1. 内核标志 CONFIG_MTD_OOPS 配置内核以将 oops 堆栈跟踪写入 MTD 分区。此 MTD 开发分区信息可以硬编码在 mtdoops 模块中,也可以动态指定。该组件可以构建为内核的一部分或单独的模块。在构建内核之前,您需要确保您的 mtd 设备已经注册了一个 panic_write 处理程序。请记住,正常的 mtd 写处理程序是不够的,因为我们必须在内核崩溃后写入 mtd 内存。请运行 this如果 mtd 设备没有自己的紧急写入处理程序,则打补丁。

    当构建为内核的一部分时,CONFIG_MTD_OOPS=y,mtdoops 模块需要使用闪存分区信息 (mtddev) 进行修补。

--- ./drivers/mtd/mtdoops.c.orig 2014-11-17 12:06:59.000000000 +0000
+++ ./drivers/mtd/mtdoops.c 2014-11-17 12:07:36.000000000 +0000
@@ -44,7 +44,7 @@
MODULE_PARM_DESC(record_size,
"record size for MTD OOPS pages in bytes (default 4096)");

-static char mtddev[80];
+static char mtddev[80]="/dev/oops";
module_param_string(mtddev, mtddev, 80, 0400);
MODULE_PARM_DESC(mtddev,
"name or index number of the MTD device to use");

将其构建为模块时,CONFIG_MTD_OOPS=m,闪存分区信息在模块安装期间动态提供(insmod)。

insmod mtdoops.ko mtddev=/dev/oops

除了启用 MTP OOPS 标志外,还要配置 CONFIG_MAGIC_SYSRQ,以引发 panic 并测试此功能。

  1. 现在,我们需要创建一个 MTD 分区 (/dev/Oops) 来存储 panic 痕迹。 MTD 可以通过修改在 arch///.c 的内核源代码中定义的内存布局和分区信息来进行分区。此外,您需要注意,作为内核命令行的一部分传递的分区信息将覆盖 board.c 更改。
{
.name = "loader",
.size = 0x000E0000,
.offset = MTDPART_OFS_APPEND
},
{
.name = "kernel",
.size = 0x002A0000,
.offset = MTDPART_OFS_APPEND
},
{
.name = "oops",
.size = 0x000E0000,
.offset = MTDPART_OFS_APPEND
},
{
.name = "all",
.size = MTDPART_SIZ_FULL,
.offset = 0x00000000
},
  1. 构建内核,mtdoops.ko 将构建为根文件系统的一部分。安装文件系统并确保分区已创建。
cat /proc/mtd
dev: size erasesize name
mtd0: 000e0000 00020000 "loader"
mtd1: 002a0000 00020000 "kernel"
mtd3: 000e0000 00020000 "Oops"
mtd5: 08000000 00020000 "all"
  1. 现在,使用 Magic SysRq 键触发 panic 并观察 Oops 分区中的内核 panic 日志。

关于linux - Mips Linux : Logging Kernel Panic into mtd partition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27107625/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com