海光平台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` 权限。

相关推荐
学究天人2 小时前
数学公理体系大全:Comprehensive Collection of Mathematical Axiom Systems(卷6)
网络·算法·数学建模·动态规划·几何学·图论·拓扑学
tiantianuser2 小时前
NVME-oF IP 设计2 :设计之前的调研!
网络·网络协议·rdma·roce v2·nvme of
星恒讯工业路由器2 小时前
工业无线通信选型常见问题解答
网络·信息与通信·无线ap·设备选型·工业无线通信·防爆无线设备·4g/5g路由器
智慧光迅AINOPOL3 小时前
校园全光网建设成本对比:全光网取代传统校园网建设成本分析
网络·全光网解决方案·全光网·校园全光网·校园全光网解决方案
2401_873479403 小时前
如何识别代理IP和伪装流量?用IP情报工具三步穿透住宅代理伪装
网络·数据库·网络协议·tcp/ip·ip
s09071363 小时前
深入解析 Sensor Hub Transport Protocol (SHTP) 协议
网络·协议·传感器·shtp
hey you~3 小时前
400电话选型技术测评:一个开发视角的线路质量评估方案
运维·网络·数据库·400电话·企业通信
曾令胜4 小时前
HTTP协议基础总结
网络·网络协议·http
hj2862515 小时前
Docker 核心知识点整理(网络 + Dockerfile + 原理 + 命令)
网络·docker·容器