海光平台debian11的系统,打开pstore功能和验证功能

在海光3490平台(x86_64架构)的Debian 11系统上启用pstore,核心是配置 `ramoops` 模块。它会在内存中预留一块"自留地",用来在系统崩溃时保存"临终遗言"。

下面是具体的操作步骤:

📝 第一步:检查内核支持

在开始前,先确认当前内核已经编译了必要的pstore模块。

```bash

检查关键的内核配置选项

cat /boot/config-$(uname -r) | grep -E "CONFIG_PSTORE|CONFIG_RAMOOPS"

```

正常情况下,你应该看到以下输出,这表明基础支持已经就绪:

```

CONFIG_PSTORE=y

CONFIG_PSTORE_CONSOLE=y

CONFIG_PSTORE_RAM=y

CONFIG_RAMOOPS=y

```

**如果这些选项是 `=m`**,说明是作为模块编译的,你需要用 `modprobe pstore ramoops` 命令来加载它们。

Debian 11的官方内核通常已包含这些选项,如果你的输出缺少某些项,则可能需要重新编译内核。

⚙️ 第二步:配置 `ramoops` 内存区域

这是最关键的一步,需要告诉内核预留哪块内存给pstore使用。有两种方法:

**方法一:通过内核启动参数配置 (推荐)**

这种方式最灵活,无需重启进入BIOS。你需要编辑GRUB配置文件,在`GRUB_CMDLINE_LINUX`中添加参数。

  1. **编辑GRUB配置**:

```bash

sudo vi /etc/default/grub

```

找到 `GRUB_CMDLINE_LINUX` 这一行,在引号内添加如下参数:

```

ramoops.mem_address=0x30000000 ramoops.mem_size=0x200000

```

* `ramoops.mem_address=0x30000000`:指定预留内存的**起始物理地址**(例如从 `0x30000000` 开始)。你需要根据海光平台的实际内存映射来选择一个空闲地址。

* `ramoops.mem_size=0x200000`:指定预留内存的**大小**(此处为十六进制,`0x200000` = 2MB)。2MB是一个不错的起始值,你可以根据需求调整。

  1. **更新GRUB配置**:

```bash

sudo update-grub

```

**方法二:通过BIOS设置**

如果你的海光平台服务器BIOS提供了相关选项,也可以在那里进行配置。这通常需要在开机时进入BIOS设置界面,找到类似"Memory Reservation"或"RAMOOPS"的选项,然后设置起始地址和大小。这个方法因不同服务器厂商的BIOS而异。

💾 第三步:挂载 pstore 文件系统

pstore文件系统通常挂载在 `/sys/fs/pstore`,系统通常会自动挂载。你可以用以下命令检查:

```bash

mount | grep pstore

```

如果没有输出,说明未挂载,需要手动挂载:

```bash

sudo mount -t pstore pstore /sys/fs/pstore

```

为了方便,可以将挂载命令添加到 `/etc/fstab` 以实现开机自动挂载:

```

pstore /sys/fs/pstore pstore defaults 0 0

```

🚀 第四步:加载模块 (如果内核选项为 `=m`)

如果你之前检查时发现 `CONFIG_PSTORE_RAM=y` 或 `CONFIG_RAMOOPS=y` 是 `=m`,则需要手动加载模块:

```bash

sudo modprobe pstore

sudo modprobe ramoops

```

✅ 第五步:验证和测试

完成以上配置后,**重启系统**让配置生效。

  1. **检查目录**:重启后,查看 `/sys/fs/pstore/` 目录。

```bash

ls -l /sys/fs/pstore/

```

正常情况下,应该看到 `console-ramoops` 或 `dmesg-ramoops-0` 等文件。

  1. **模拟崩溃测试 (可选)**:

**请务必在测试或非生产环境下进行!**

你可以通过触发一个内核恐慌来测试pstore是否工作:

```bash

sudo echo c > /proc/sysrq-trigger

```

系统会立即崩溃重启。重启后,再次检查 `/sys/fs/pstore/` 目录,应该会有新的日志文件生成。

📖 第六步:读取和分析日志

当系统发生异常重启后,你可以通过以下命令来查看保存的日志:

```bash

查看控制台日志

cat /sys/fs/pstore/console-ramoops

查看内核日志

cat /sys/fs/pstore/dmesg-ramoops-0

```

⚠️ 注意事项

* **内存地址**:`ramoops.mem_address` 必须是一个有效的、未被系统使用的物理内存地址。如果设置不当,可能导致系统无法启动。你可以通过 `dmesg | grep "e820"` 查看内核发现的内存映射来选择一个合适的地址。

* **内存大小**:`ramoops.mem_size` 不宜过大,通常几MB就足够,以免浪费宝贵的内存资源。

* **断电丢失**:`ramoops` 基于RAM,系统**完全断电**后日志会丢失。它主要应对的是系统崩溃后**立即重启**(如看门狗复位)的场景。

* **权限问题**:查看日志可能需要 `root` 权限。

相关推荐
星恒讯工业路由器7 小时前
新一代通信网:从“连接万物”到“智联万物”的关键跃迁
网络·物联网·智能路由器·工业路由器·工业物联网·5g-a·新一代通信网
暴力求解9 小时前
Linux网络---传输层协议TCP(二)
linux·服务器·开发语言·网络·tcp/ip
石头猫灯9 小时前
WordPress wp2shell 漏洞链完整拆解流程
网络·数据结构·安全·web安全
网安蟹佬霸10 小时前
OSINT开源情报收集实战:从信息搜集到资产测绘(2026最新万字保姆级指南)
前端·网络·安全·web安全·网络安全·开源
80s77711 小时前
动态ip和静态ip有什么区别
服务器·网络·tcp/ip
鲁邦通物联网11 小时前
出海物联网设备的全球化网络接入与合规脱敏架构:基于 Node-RED 与 C++ 零拷贝的边缘系统设计
网络·物联网·系统架构·边缘计算·边缘计算网关·5g数采·工业级边缘计算网关
星恒讯工业路由器11 小时前
家庭无线组网方式全解析:从单路由到FTTR,哪种适合你?
网络·物联网·智能路由器·路由器·家庭组网·ac+ap·mesh组网
05664612 小时前
agent学习——流式响应与文本切分
网络·python·学习
mqiqe12 小时前
AgentScope Java 2.0 Agent 状态存储(AgentStateStore)深度解析:构建可恢复、可扩展的智能体运行时
java·运维·网络
不会就选b15 小时前
Linux之网络基础(二)
linux·运维·网络