You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Poco M3安卓设备/sys/fs/pstore为空无法使用问题修复咨询

Poco M3 设备/sys/fs/pstore目录为空修复方案

你已经完成pstore内核配置开启、模块加载、root权限配置、自动挂载、SELinux切为宽容模式排除权限拦截,目录仍为空的问题,可按以下步骤逐一排查修复:

1. 校验ramoops预留内存配置有效性

pstore本身不提供持久存储能力,依赖ramoops后端预留专属物理内存段存日志,90%以上的空目录问题都是这步配置缺失或错误导致:

  • 执行命令查看当前生效的ramoops参数:
cat /sys/module/ramoops/parameters/*
  • 正常配置下以下参数不能为0或空值:
    • mem_address:预留内存的物理起始地址
    • mem_size:预留内存总大小,最低建议设置为1MB(0x100000)
    • console_size:内核控制台日志存储分区大小,设为非0值才会保存崩溃前的dmesg
    • pmsg_size:用户态日志存储分区大小,按需设置
  • 如果上述参数存在0/空值,说明ramoops没有拿到可用的预留内存:
    你可以选择修改设备树(DTB)中的ramoops节点补全配置,也可以直接在内核启动cmdline中追加参数,参数示例如下,具体地址和大小需要匹配你设备的内存布局:
    ramoops.mem_address=0x9ff00000 ramoops.mem_size=0x100000 ramoops.console_size=0x40000 ramoops.pmsg_size=0x40000
    
    注意:Poco M3为高通平台,选内存地址时要避开调制解调器、ADSP、GPU、连续内存分配器已经占用的预留段,可以通过cat /proc/iomem查看当前内存占用情况,优先选DDR高位的空闲内存段。

2. 确认是否触发过日志写入条件

pstore不会主动存储系统正常运行时的全量日志,只有触发特定异常事件时才会把日志写入预留内存,下次启动后才会在/sys/fs/pstore下生成对应文件,未触发写入时目录本来就是空的:

  • 可触发pstore写入的常见场景:
    • 内核panic崩溃
    • 长按电源键10秒以上触发的硬重启(系统正常流程的软重启不一定触发写入)
  • 可以主动触发写入做验证:保存好当前设备运行的所有数据后,执行echo c > /proc/sysrq-trigger手动触发内核panic,等设备自动重启后再查看pstore目录。

3. 排查内存地址冲突问题

如果ramoops参数配置正常,主动触发panic重启后目录仍为空,基本是你设置的ramoops内存段和其他硬件/内核模块的预留内存重叠,写入的日志在启动过程中被覆写了:

  • 核对/proc/iomem的输出,确认你分配给ramoops的地址段,没有和modem、adsp、cdsp、gpu、contiguous mem这类标记为reserved的段重叠
  • 高通平台设备最稳妥的方式是把ramoops放在DDR内存的最末尾位置,比如6G内存版本的Poco M3物理内存最高地址为0x17FFFFFFF,分配1MB空间的话,把mem_address设为0x17FE00000基本不会出现冲突。

4. 其他少见问题排查

  • 检查内核配置,确认没有开启CONFIG_PSTORE_ZONE_INIT_ON_MOUNT选项,该选项会在pstore挂载时直接清空存储区的历史日志,如果系统启动时pstore挂载时机早于日志读取流程,会导致日志被直接擦除,关闭该选项即可
  • 如果使用第三方编译内核,确认没有定制补丁把pstore的日志挂载点重定向到其他路径,部分定制内核会把崩溃日志存到/vendor/fs/pstore这类自定义路径下。

内容的提问来源于stack exchange,提问作者Poperton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 10:24:12