为什么`pstore`不能与Samsung S10 5G一起使用?

时间:2019-11-19 09:35:35

标签: linux-kernel root android-source kernel-module samsung-mobile

我有通过Magisk给出的instructions使用root的Samsung S10 5G。我正在尝试修改system.img以在ROM的AP文件中修补SELinux策略。当我使用Odin将AP文件与其他文件一起刷新时,它会因引导循环而失败。为了调试原因,我使用了pstore,其在设备上的配置如下:

  1. init.rc中,pstore如下安装在/sys/fs/pstore上:
314:    # pstore/ramoops previous console log
315:    mount pstore pstore /sys/fs/pstore nodev noexec nosuid
316:    chown system log /sys/fs/pstore/console-ramoops
317:    chmod 0440 /sys/fs/pstore/console-ramoops
318:    chown system log /sys/fs/pstore/console-ramoops-0
319:    chmod 0440 /sys/fs/pstore/console-ramoops-0
320:    chown system log /sys/fs/pstore/pmsg-ramoops-0
321:    chmod 0440 /sys/fs/pstore/pmsg-ramoops-0
  1. 内核配置选项如下:
$ cat config | grep PSTORE
CONFIG_PSTORE=y
CONFIG_PSTORE_ZLIB_COMPRESS=y
# CONFIG_PSTORE_LZO_COMPRESS is not set
# CONFIG_PSTORE_LZ4_COMPRESS is not set
CONFIG_PSTORE_CONSOLE=y
CONFIG_PSTORE_PMSG=y
CONFIG_PSTORE_PMSG_SSPLOG=y
CONFIG_PSTORE_RAM=y
  1. Rampoops配置如下:
./sys/module/ramoops/parameters/console_size            262144
./sys/module/ramoops/parameters/dump_oops               1
./sys/module/ramoops/parameters/ecc                     0
./sys/module/ramoops/parameters/ftrace_size             262144
./sys/module/ramoops/parameters/mem_address             3241148416
./sys/module/ramoops/parameters/mem_size                1048576
./sys/module/ramoops/parameters/mem_type                0
./sys/module/ramoops/parameters/pmsg_size               262144
./sys/module/ramoops/parameters/record_size             262144

现在,我正在学习本教程:Reading kernel logs

,但是/sys/fs/pstore目录中没有日志。当我在另一台设备(OnePlus 6T)上尝试了相同的步骤后,便可以看到日志。

此外,我还尝试按照以下说明检查日志,以了解ROM闪烁的真正原因:

  1. 导致启动循环的Flash ROM。
  2. 具有root访问权限的Flash ROM。
  3. 检查/sys/fs/pstore目录中的日志。

这也不起作用。

与检查/sys/fs/pstore目录一起,我也尝试过使用mount -t pstore - /dev/pstore将pstore挂载在其他位置,但是没有日志。

我需要一个帮忙

  • 有什么方法可以调试pstore问题?
  • 还有其他查找内核日志的方法吗?

1 个答案:

答案 0 :(得分:0)

我看到很多人在使用 pstore 时遇到了同样的问题。检查您是否有以下输出:

#cat /sys/module/pstore/parameters/backend
(null)

后端参数是“要使用的 Pstore 后端”(source)

Pstore only supports one backend at a time. If multiple
backends are available, the preferred backend may be
set by passing the pstore.backend= argument to the kernel at
boot time.

来自 https://www.kernel.org/doc/Documentation/ABI/testing/pstore

如果可用,请尝试 pstore_blk、mtdpstore、mmcpstore、phram 或 android ram 控制台。

你的命令行是什么?

你是否加载了 reed_solomon 模块? ramoops需要它

Pstore_console 可能需要 CONFIG_VT 才能工作。

工作命令行是“ramoops.mem_address=0x11ff000000 ramoops.mem_size=0x1000000 pstore.backend=ramoops”,对于blk后端是“pstore_blk.blkdev=179:7 pstore_blk.oops_size=64”

如果你想要 pstore/blk 记住,需要在 mmc/sdcc/sdhci 驱动程序中支持 panic_write。这在安卓手机上很常见。例如,您不能在 android 手机上使用工作帧缓冲区控制台。您有 MSM FB 驱动程序,但不支持 fbcon。

如需更多帮助,请参阅 https://github.com/gmpy/articles/blob/master/pstore/Test-Pstore-Block.md

并检查 https://www.openwall.com/lists/kernel-hardening/2019/10/10/3