在树莓派系统中通过zram.sh文件扩展RAM交换内存
树莓派配置ZRAM交换内存以运行OpenCV 4.5.0
我对bash脚本不太熟悉,目前正尝试为树莓派增加交换内存,以运行OpenCV 4.5.0。以下是我当前的zram.sh文件内容:
#!/bin/bash export LANG=C cores=$(nproc --all) # disable zram core=0 while [ $core -lt $cores ]; do if [[ -b /dev/zram$core ]]; then swapoff /dev/zram$core fi let core=core+1 done if [[ -n $(lsmod | grep zram) ]]; then rmmod zram fi if [[ $1 == stop ]]; then exit 0 fi
参考的教程中的zram.sh文件包含更多配置内容(无法查看附图),需要补充完整的ZRAM配置逻辑,实现创建并挂载ZRAM交换分区。
完整的zram.sh脚本
#!/bin/bash export LANG=C cores=$(nproc --all) # 禁用并卸载现有ZRAM设备 core=0 while [ $core -lt $cores ]; do if [[ -b /dev/zram$core ]]; then swapoff /dev/zram$core fi let core=core+1 done if [[ -n $(lsmod | grep zram) ]]; then rmmod zram fi if [[ $1 == stop ]]; then exit 0 fi # 加载ZRAM模块并创建对应数量的设备 modprobe zram num_devices=$cores # 配置每个ZRAM设备为交换分区 core=0 # 每个ZRAM分区设置为512MB,可根据树莓派内存调整(比如1GB则改为1024) swap_size_mb=512 while [ $core -lt $cores ]; do # 设置ZRAM设备大小 echo $((swap_size_mb * 1024 * 1024)) > /sys/block/zram$core/disksize # 格式化为swap分区 mkswap /dev/zram$core # 启用swap并设置优先级(10高于普通swap的默认-2,优先被系统使用) swapon /dev/zram$core -p 10 let core=core+1 done
脚本说明
- 原有代码部分:负责清理已存在的ZRAM设备,支持通过
stop参数关闭ZRAM。 - 新增配置部分:
modprobe zram num_devices=$cores:加载ZRAM内核模块,创建与CPU核心数一致的ZRAM设备。swap_size_mb=512:定义每个ZRAM分区的大小,可根据你的树莓派内存调整(比如2GB内存可设为1024)。- 循环配置每个设备:设置大小、格式化swap、启用并设置优先级,确保系统优先使用ZRAM。
使用方法
- 给脚本添加执行权限:
chmod +x zram.sh - 启动ZRAM:
sudo ./zram.sh - 停止ZRAM:
sudo ./zram.sh stop - 设置开机自启:
编辑/etc/rc.local,在exit 0之前添加脚本的绝对路径,比如:/home/pi/zram.sh
内容的提问来源于stack exchange,提问作者Grimmace_23
相关产品推荐
相关产品推荐

