RAM 분할을 어떻게 변경할 수 있습니까?


23

기본적으로 Pi는 192MiB : 64MiB RAM : VRAM 분할로 설정되어 있습니다. 그래픽 목적으로 Pi를 사용하지 않으므로 스왑 사용을 쉽게하기 위해 더 많은 일반 RAM을 할당하도록 분할을 변경하고 싶습니다.


비슷한 질문과 관련 답변이 여기에 있습니다 .
Jivings

답변:


16

이것들은 RAM 분할과 그들이 사용해야하는 것입니다.

  • 240/16-Pi를 서버로 사용하고 GUI가없는 경우와 같이 그래픽 작업을 수행하지 않을 경우에 가장 좋습니다.
  • 224/32-3D없이 기본 그래픽 데스크탑 환경에서 pi를 사용하는 경우이 방법이 가장 좋습니다.
  • 192/64-기본값, 아마도 가장 일반적인 목적 일 것입니다.
  • 128/128-매우 높은 VRAM, 그래픽이 많은 작업을 수행하는 경우에만 매우 좋습니다.

RAM 분할을 관리 할 수있는 몇 가지 방법이 있습니다.

수동으로

이 방법을 사용하여 RAM 분할을 변경할 수 있습니다.

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

여기서 [ram-split]CPU에 할당 할 RAM의 양입니다. 재부팅 후 새로운 값이 적용됩니다.

RPI 업데이트

Hexxeh의 rpi-update 는 RAM 분할 변경도 지원합니다 . CPU에 할당하려는 RAM의 양은 rpi-update [ram-split]어디에서 실행 합니까[ram-split] ? 재부팅 후 스플릿이 적용됩니다.

램 선택기 스크립트

가장 좋은 방법은 이 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",$2/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
;;
*)
    $0
;;
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
    $0
    echo "=============================================================================="
    echo "start.elf not detected. Please check that you have selected a valid ram split."
    echo "=============================================================================="
fi

여기의 GitHub의 링크 죽은 링크의 경우는.


나중에 재부팅해야합니까?
akavel

@akavel 예. start.elf는 시작할 때만 실행되므로 지금 수정 중입니다.
hifkanotiks

1
게시 한 4 개의 답변이 병합되었습니다. 때로는 용납 될 수 있지만, 질문의 다른 측면을 다루는 4 개의 개별 답변이이 경우에 가치를 더했다고 생각하지 않습니다. 나는 아무도 목표하지 않기를 바랍니다.
Jivings

14

raspi-config

raspi-configdebian-wheezy 또는 raspbian-wheezy 의 유틸리티를 사용하여 메모리 분할을 변경할 수 있습니다 .

유틸리티를 실행 한 sudo raspi-config다음 메모리 분할 옵션 (목록에서 약 8 번째)을 선택하십시오.


1

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


유용하지만 질문에 대답하지 않습니다.
Jivings

기본값이 무엇인지 모르고 /boot/config.txt에서 호출되지 않았기 때문에 현재 램 분할을 확인하고 싶었습니다. 불행히도 내 시스템에는 start.elf 만 있었으므로 dmesg를 통해 값을 추적했습니다. "메모리 : 448MB = 총 448MB"라는 줄이 내 시스템에 있습니다. 그래서 448/64 분할이 있습니다.
GrandAdmiral
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.