Linux
树莓派3B 采用Samba + Cockpit搭建NAS
Linux 修改开机启动 boot splash logos
Linux 下将 .po 文件编译成 .mo 文件
Python 使用 gettext 模块实现国际化
XFCE 桌面优化配置
香橙派3B 使用 WiringOP 读取 MPU6050
香橙派4 LTS 安装 WiringPi
Linux 图形界面切换到 FB 界面
校表仪 tg-timer 算法笔记
Linux 安装 EtherCat Igh
EetherCat Igh 常用指令
树莓派镜像 DIY 制作
树莓派5B 安装64位实时系统 preempt RT 补丁
linux 的 lightdm 桌面管理器下隐藏光标(鼠标)
Linux 上使用 MPD (Music Player Daemon)
Linux 自动化交互式命令行工具 —— expect
Linux GTK 界面开发
Debian系统中修改主机名
使用Python + GTK3.0 开发嵌入式GUI
Raspberry Pi 5修改系统内存分页大小解决安装esp-matter 出现的<jemalloc>: Unsupported systeom page size 错误
树莓派 linux 安装和使用clash 做VPN
树莓派自动挂载硬盘
非控制台或ssh登录用户尝试启动Xorg图形服务器
XFCE4 电源管理器配置管理
Linux PulseAudio 声卡配置和检测
IBUS修改输入法和设置切换快捷键
在 Moode Audio 中实现开机自动启动 `startx`
crontab 任务
树莓派外设耗电检测
linux 终端自动登录
linux创建新用户
linux service通过xinit启动GTK应用程序
Linux 非桌面的图形环境安装和配置
香橙派3b板载音频输出没有声音调试
使用 udev 规则修改权限实现屏幕亮度调节
Linux udev 介绍
鲁班猫4 ubuntu22.04 屏幕背光 udev 自动配置化
ubuntu22.04 动态壁纸配置
使用 udisksctl 的可靠 USB 自动挂载方案(基于 systemd-run)
通过udev规则U盘自动挂载
OpenWRT 磊科N60pro路由器刷机
本文档使用 MrDoc 发布
-
+
首页
Raspberry Pi 5修改系统内存分页大小解决安装esp-matter 出现的<jemalloc>: Unsupported systeom page size 错误
将 Raspberry Pi 5 的系统内存分页大小从默认的 **16KB** 修改为 **4KB**,需重新编译 Linux 内核并调整内核配置。以下是详细步骤和注意事项: --- ### **1. 前置条件** 1. **风险提示** 修改内核页大小可能导致系统不稳定或无法启动,操作前请: • 备份重要数据。 • 准备备用设备(如另一张 SD 卡)用于恢复。 2. **硬件和系统要求** • Raspberry Pi 5(ARM64 架构)。 • 已安装 Raspberry Pi OS(64 位)或其他基于 Debian 的 Linux 发行版。 ``` .增加 Git 缓存和超时限制 调整 Git 的缓冲区大小和深度,适应大仓库克隆: # 设置更大的 HTTP 缓冲区(500MB) git config --global http.postBuffer 524288000 # 增加 Git 的深度限制(避免 early EOF) git config --global core.compression 0 git config --global core.deltaBaseCacheLimit 2g ``` --- ### **2. 安装编译依赖** ```bash sudo apt update sudo apt install -y bc build-essential flex bison libssl-dev git ``` --- ### **3. 下载内核源码** ```bash # 进入工作目录 mkdir ~/kernel && cd ~/kernel # 下载官方内核源码(以 Raspberry Pi 5 适配的 6.x 内核为例) git clone --depth=1 https://github.com/raspberrypi/linux cd linux ``` --- ### **4. 配置内核以支持 4KB 页** #### **步骤 1:生成默认配置** ```bash # 选择适用于 Raspberry Pi 5 的配置(bcm2712_defconfig) make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2712_defconfig ``` #### **步骤 2:修改页大小配置** ```bash # 打开内核配置菜单 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig ``` 在配置界面中: 1. 进入 **"Kernel Features"** → **"Page size"**。 2. 选择 **"4KB"** 作为页大小(确认 `CONFIG_ARM64_4K_PAGES=y`)。 3. 保存配置并退出。 --- ### **5. 编译内核** ```bash # 启用多线程编译(根据 CPU 核心数调整 `-j4`) make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j4 Image modules dtbs ``` 编译时间较长(约 1~2 小时,具体取决于设备性能)。 --- ### **6. 安装新内核** #### **步骤 1:备份原内核** ```bash sudo cp -r /boot /boot.bak ``` #### **步骤 2:安装模块和设备树** ```bash sudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules_install sudo cp arch/arm64/boot/Image /boot/kernel8.img sudo cp arch/arm64/boot/dts/broadcom/*.dtb /boot/ sudo cp arch/arm64/boot/dts/overlays/*.dtb* /boot/overlays/ ``` --- ### **7. 更新启动配置** 编辑 `/boot/config.txt`,确保使用新内核: ```bash sudo nano /boot/config.txt ``` 添加或修改以下行: ``` kernel=kernel8.img arm_64bit=1 ``` --- ### **8. 重启并验证** ```bash sudo reboot ``` 重启后检查页大小: ```bash getconf PAGE_SIZE # 输出应为 4096(4KB) ``` --- ### **9. 故障恢复** 如果系统无法启动: 1. 使用备用 SD 卡启动。 2. 挂载原 SD 卡,还原 `/boot` 目录: ```bash sudo rm -rf /mnt/boot/* sudo cp -r /boot.bak/* /mnt/boot/ ``` --- ### **注意事项** 1. **兼容性问题** • 部分驱动程序或应用可能依赖默认的 16KB 页,需重新编译适配。 • 如无必要,建议优先使用 **[重新编译 jemalloc](链接到之前回答)** 替代内核修改。 2. **性能影响** • 4KB 页会增加内存管理开销,可能轻微降低性能(尤其在内存密集型场景)。 3. **长期维护** • 每次系统内核更新后需重复此流程。 --- ### **总结** • **适用场景**:仅当应用严格依赖 4KB 页且无法适配 16KB 时使用。 • **推荐替代方案**:优先调整应用或库(如 jemalloc)以适配默认页大小。 ### 参考文档 [Switch to the kernel8.img by default when the page size is 16k bytes](https://github.com/raspiblitz/raspiblitz/issues/4346) [ Matter Raspberry Pi 5 error setting up environment <jemalloc>: Unsupported system page size when setting Python environment](https://github.com/project-chip/connectedhomeip/issues/31396)
qingkai
2025年3月14日 23:11
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码