RAM bölmesini nasıl değiştirebilirim?


23

Pi, varsayılan olarak 192MiB: 64MiB RAM: VRAM bölmesine ayarlanmıştır. Pi'yi grafiksel amaçlar için kullanmayacağımdan, takas kullanımını kolaylaştırmak için daha normal RAM tahsis etmek için bölmeyi değiştirmek istiyorum.


Burada da benzer bir soru ve ilgili cevap var .
Jivings

Yanıtlar:


16

Bunlar RAM bölmeleri ve bunun için kullanılması gerekenler.

  • 240/16 - Grafiksel hiçbir şey yapmayacaksanız, örneğin Pi'yi bir sunucu olarak kullanıyorsanız ve GUI'niz yoksa, bu en iyisidir.
  • 224/32 - Pi'yi 3B'süz basit bir grafik masaüstü ortamıyla kullanıyorsanız, bu muhtemelen en iyisidir.
  • 192/64 - Varsayılan, muhtemelen en iyi genel amaçtır.
  • 128/128 - Çok yüksek VRAM, Sadece çok yoğun grafikli bir iş yapıyorsanız gerçekten iyi.

RAM bölmesinin yönetilebileceği birkaç yöntem vardır:

el ile

Bu yöntemi kullanarak RAM bölmesini değiştirebilirsiniz:

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

burada [ram-split]CPU ayırmaya RAM miktarıdır. Yeniden başlatmanın ardından yeni değer uygulanacaktır.

rpi güncelleme

Hexxeh en rpi güncelleme da RAM bölünmüş değiştirerek, aday olacağını destekler rpi-update [ram-split]nereye [ram-split]CPU tahsis edilmesini istediğiniz RAM miktarıdır. Yeniden başlatmanın ardından, bölme uygulanacaktır.

RAM Seçici Komut Dosyası

Muhtemelen en iyi yol bu select4.sh betiğini kullanmak ve ardından uygun RAM bölmesini seçmektir. Yeniden başlattıktan sonra yeni bölme uygulanacaktır.

#!/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

İşte link çürüklüğü durumunda bir github link .


daha sonra yeniden başlatmayı gerektiriyor mu?
akavel

@akavel Evet, çünkü start.elf yalnızca başlangıçta çalıştırılır. Şimdi düzenleniyor.
hifkanotikler

1
Gönderdiğiniz dört cevap birleştirildi. Bazen kabul edilebilir olsa da, sorunun farklı yönlerini ele alan dört ayrı cevaba sahip olmanın bu durumda herhangi bir değer kattığına inanmıyorum. Umarım kimse nesneler değildir.
Jivings,

14

Raspi-config

raspi-configDebian-wheezy veya raspbian-wheezy'deki yardımcı programı kullanarak hafıza bölmesini değiştirebilirsiniz .

Sadece yardımcı programı çalıştırın: sudo raspi-configardından hafıza bölme seçeneğini seçin (listedeki yaklaşık 8 tanesi).


1

RAM bölmenizi kontrol etme

Bir yorum için çok büyük, ancak alakalı. Bu komutu çalıştırarak ram bölünüzü kontrol edebilirsiniz.

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

Bölme eşleşen sağlama toplamına sahip dosya tarafından verilir, bu yüzden benim durumumda 224/32


Her ne kadar yararlı olsa da, bu soruyu cevaplamıyor.
Jivings

Geçerli ram bölümümü kontrol etmek istedim çünkü varsayılanın ne olduğunu bilmiyordum ve /boot/config.txt dosyasında çağrılmadı. Maalesef sistemim sadece start.elf oldu, bu yüzden dmesg ile değeri izledim. (Sistemimde) "Bellek: 448MB = toplam 448MB" yazan bir satır var. Bu yüzden bir 448/64 split var.
GrandAdmiral
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.