默认情况下,Pi设置为192MiB:64MiB RAM:VRAM拆分。由于我不会将Pi用于图形目的,因此我想更改拆分以分配更多普通RAM以简化交换使用。

评论

这里有一个类似的问题和相关的答案。

#1 楼

这些是RAM分割以及它们应用于的用途。


240/16-如果您不做任何图形处理,例如,如果您使用的是Pi,则最好使用作为服务器且没有GUI。
128/128-非常高的VRAM,只有在执行非常繁琐的图形任务时才非常有用。


有几种方法可以拆分RAM可以管理:

手动

您可以使用以下方法更改RAM分配:

sudo cp /boot/arm[ram-split]_start.elf /boot/start.elf


其中[ram-split]是要分配给CPU的RAM数量。重新启动后,将应用新值。

rpi-update

Hexxeh的rpi-update还支持更改RAM分割,您可以运行rpi-update [ram-split],其中[ram-split]是要分配给CPU的RAM。重新启动后,将应用拆分。

Ram Selector脚本

最好的方法可能是使用此select4.sh脚本,然后选择适当的RAM拆分。重新启动后,将应用新的拆分。

#!/bin/bash
##
## Raspberry Pi Memory Split Selector Script v4
## Author: SirLagz
## Website: http://sirlagz.net
##
## The purpose of this script is to make selecting the memory split
## on the RPi easy.
## Simply make this script executable if it's not already, move
## it to the directory with the elf files, and run it with ./select4.sh
## The menu should be pretty self explanatory.
##
cd /boot
clear
list=./*
b128det=0
b192det=0
b224det=0
b240det=0
bdefdet=0

for i in $list
do
    case $i in
        "./arm128_start.elf") b128det=1;;
        "./arm192_start.elf") b192det=1;;
        "./arm224_start.elf") b224det=1;;
        "./arm240_start.elf") b240det=1;;
        "./start.elf") bdefdet=1;;
    esac
done

if [[ "$b192det" == "$bdefdet" ]] ; then
    if cmp -s arm192_start.elf start.elf; then
        current=192
    fi
fi

if [[ "$b128det" == "$bdefdet" ]] ; then
    if cmp -s arm128_start.elf start.elf; then
        current=128
    fi
fi

if [[ "$b224det" == "$bdefdet" ]] ; then
    if cmp -s arm224_start.elf start.elf; then
        current=224
    fi
fi

if [[ "$b240det" == "$bdefdet" ]] ; then
    if cmp -s arm240_start.elf start.elf; then
        current=240
    fi
fi

declare -i vram
vram=256-$current
success=1
sysram=`awk '/MemTotal/ { printf("%.0f",/1024) }' /proc/meminfo`
echo "##################################"
echo "##      Raspberry Pi Memory     ##"
echo "##        Selector Script       ##"
echo "##################################"
echo "      Current Memory Split"
echo "        CPU $current/$vram VRAM"
echo "      Detected System RAM"
echo "          $sysram MB"
echo "##################################"
echo "1) Set CPU/VRAM split to 128/128"
echo "2) Set CPU/VRAM split to 192/64"
if [[ "$b240det" == 0 ]] ; then
echo "3) Set CPU/VRAM split to 240/16 (NOT DETECTED. DO NOT USE)"
else
echo "3) Set CPU/VRAM split to 240/16"
fi
if [[ "$b224det" == 1 ]] ; then
    echo "4) Set CPU/VRAM split to 224/32"
fi
echo "q) Quit"
echo "Enter Choice:";
read x
case $x in
1)
    rm start.elf && cp arm128_start.elf start.elf
    newram=128
;;
2)
    rm start.elf && cp arm192_start.elf start.elf
    newram=192
;;
3)
    if [[ "$b240det" == 1 ]] ; then
        rm start.elf && cp arm240_start.elf start.elf
        newram=240
    else
        echo "The arm240_start.elf was not detected. Not changing ram split."
        success=0
    fi
;;
4)
    rm start.elf && cp arm224_start.elf start.elf
    newram=224
;;
q|Q)
    exit 0
;;
*)
    q4312078q
;;
esac

if [[ $? -ne 0 ]]; then
    echo "Memory Split setting failed"
elif [[ $success == 1 ]]; then
    declare -i newvram
    newvram=256-$newram
    echo "Memory Split set to $newram/$newvram successfully"
fi

for i in $list
do
    case $i in
        "./arm128_start.elf") b128det=1;;
        "./arm192_start.elf") b192det=1;;
        "./arm224_start.elf") b224det=1;;
        "./arm240_start.elf") b240det=1;;
        "./start.elf") bdefdet=1;;
    esac
done

if [[ "$bdefdet" -ne 1 ]]; then
    q4312078q
    echo "=============================================================================="
    echo "start.elf not detected. Please check that you have selected a valid ram split."
    echo "=============================================================================="
fi


这里是一个github链接,以防链接腐烂。

评论


之后需要重启吗?

–akavel
2012年8月22日13:43

@akavel是的,因为start.elf仅在启动时执行。现在编辑。

– hifkanotiks
2012年8月22日13:50

您发布的四个答案已合并。尽管有时可以接受,但我认为在这种情况下,针对问题的不同方面提供四个单独的答案不会增加任何价值。我希望没有人反对。

–活动
2012年8月22日在16:51



#2 楼

raspi-config
您可以在debian-wheezy或raspbian-wheezy中使用raspi-config实用程序来更改内存分割。
只需运行该实用程序:sudo raspi-config然后选择内存分割选项(大约第8个)列表)。

#3 楼

检查您的RAM分割

太大了,无法发表评论,但相关。您可以通过运行以下命令来检查ram拆分

$ sha1sum /boot/*start.elf
a3f72ae7eae537800454de8e4cb231cbd176c0e1  /boot/arm128_start.elf
7784527719031c1c7fce6f72cf3a5c8c23565f24  /boot/arm192_start.elf
82c6be2c9098c0c9c3d71f45bf16c1dc5adfcf08  /boot/arm224_start.elf
82c6be2c9098c0c9c3d71f45bf16c1dc5adfcf08  /boot/start.elf


拆分由具有匹配校验和的文件给出,因此在我的情况下为224/32

评论


尽管有用,但这不能回答问题。

–活动
2012年8月22日在16:46

我想检查当前的内存划分,因为我不知道默认值是什么,也没有在/boot/config.txt中调用它。不幸的是,我的系统只有start.elf,因此我通过dmesg跟踪了该值。 (在我的系统上)一行显示“内存:448MB =总共448MB”。因此,我进行了448/64分割。

– GrandAdmiral
13年5月14日在21:09