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

在树莓派系统中通过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。

使用方法

  1. 给脚本添加执行权限:
    chmod +x zram.sh
    
  2. 启动ZRAM:
    sudo ./zram.sh
    
  3. 停止ZRAM:
    sudo ./zram.sh stop
    
  4. 设置开机自启:
    编辑/etc/rc.local,在exit 0之前添加脚本的绝对路径,比如:
    /home/pi/zram.sh
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 01:20:46