Club robotique de Sophia-Antipolis

Accueil > POBOTpedia > Ordinateurs embarqués (SBC) > La carte Raspberry PI > Installation et configuration de la R-Pi > Augmenter la mémoire de sa Raspberry Pi

Augmenter la mémoire de sa Raspberry Pi

jeudi 6 septembre 2012, par Julien H.

Il existe deux types de mémoire sur un ordinateur moderne :

- la mémoire vive ou RAM, nécessaire à l’exécution des programmes
- l’espace disque, pour stocker les programmes et les fichiers

On n’utilise plus de mémoire morte (read-only memory ou ROM, comme dans CD-ROM) car la plupart des dispositifs de stockage temporaire sont des espaces disques réinscriptibles (clé USB, disque dur externe).

Dans cet article, nous verrons des manipulations tout à fait normales, comme aide-mémoire pour vos prochains projets ou par simple curiosité.

Il ne s’agit en aucun cas d’overclocking car nous ne modifions pas le fonctionnement normal de la RAM, nous modifions le système d’exploitation pour s’adapter à nos besoins. Overclocker la fréquence de la RAM (comme du CPU et du GPU) est possible mais ce n’est pas l’objet et nous le déconseillons pour un usage normal (apprendre et découvrir l’informatique embarquée).

Il ne s’agit pas non plus d’économiser de la mémoire : dégrader les fonctionnalités en remplaçant les programmes par défaut par des programmes moins gourmands est tentant mais ne doit être fait que si vous atteignez les limites de votre Raspberry Pi.

Pensez également à évaluer correctement vos besoins : si vous avez besoin de 200 Mo de mémoire vive, il est intéressant de chercher à récupérer la mémoire disponible. Si vous avez besoin de 600 Mo de mémoire vive... même pas la peine d’y penser, abandonnez la RPi et passez à une autre carte plus puissante (nous vous parlerons prochainement d’Odroid.. mais chuuuut).

 Mémoire vive disponible

La Raspberry Pi version B (la plus courante) dispose de 256 Mo de mémoire (LPDDR2 pour ceux que ça intéresse, aussi appelée mobile DDR ou low-power DDR). Mais cette mémoire sert à la fois à l’exécution des programmes qu’à l’affichage vidéo (HDMI ou composite).

Pour nous qui utilisons les Raspberry Pi pour contrôler des robots sans écran ou avec un minimum de besoin (le projecteur de R2-D2 via la sortie composite), la première opération à faire pour récupérer des dizaines de méga-octets de mémoire vive est de diminuer drastiquement la part réservée à la vidéo.

Avant de taper frénétiquement sur le clavier des commandes récupérées ici ou là, il est important de comprendre ce qu’on fait, les conséquences en terme de qualité ou de simplicité d’utilisation.

Pour commencer, il faut définir quelle est la quantité de mémoire vive totale disponible et notre consommation de mémoire dans un usage courant, afin de vérifier la nécessité d’augmenter la mémoire.

Croyez-moi : gagnez du temps en arrêtant la lecture de cet article (il y en a plein d’autres tout aussi intéressant sur ce site) si vous n’avez pas besoin de mémoire.

La commande "top" dans un terminal (console SSH par exemple) permet de connaitre instantanément la consommation et le total disponible.


top - 09:46:34 up 19 min, 1 user, load average : 0,00, 0,01, 0,05
Tasks : 56 total, 1 running, 55 sleeping, 0 stopped, 0 zombie
%Cpu(s) : 0,7 us, 0,7 sy, 0,0 ni, 98,7 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st
KiB Mem : 187308 total, 56820 used, 130488 free, 10948 buffers
KiB Swap : 102396 total, 0 used, 102396 free, 27408 cached

Ici, on apprend que cela fait 19 minutes que je rédige cet article :) et que la Raspberry Pi dispose de 180 Mo de mémoire maximum, et qu’il m’en reste encore 130Mo : pas besoin d’aller modifier !

Maintenant, lançons un programme de contrôle du robot Nono en tâche de fond, utilisant du traitement XML, du Java et de la synthèse vocale.


top - 09:55:47 up 29 min, 1 user, load average : 2,41, 0,90, 0,37
Tasks : 61 total, 5 running, 56 sleeping, 0 stopped, 0 zombie
%Cpu(s) : 84,6 us, 15,4 sy, 0,0 ni, 0,0 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0
KiB Mem : 187308 total, 174980 used, 12328 free, 11096 buffers
KiB Swap : 102396 total, 0 used, 102396 free, 64552 cached

Ouch, 12 Mo... cela pourrait être juste quand le programme sera encore plus complet. Donc on va pouvoir procéder à l’augmentation de mémoire.

Dans la distribution utilisée aujourd’hui (Raspbian Occidentalis by AdaFruit), un utilitaire dédié à la Raspberry Pi est installé, c’est "rpi-update".

Il permet de réaliser différentes tâches, et en particulier la modification du démarrage et de la configuration. Si on le lance sans paramètre, il vous donnera la répartition par défaut.

Attention, cette commande va mettre à jour le firmware de la Raspberry Pi. N’exécutez pas cette commande si vous craignez de perdre des paramètres spécifiques. De plus cela prend beaucoup de temps. Prenez bien soin d’avoir fait les dernières mises à jour avant de l’exécuter.


pi@raspberrypi $ sudo apt-get update && sudo apt-get upgrade


pi@raspberrypi $ sudo rpi-update
Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS
Performing self-update
Autodetecting memory split
Using ARM/GPU memory split of 192MB/64MB
Updating firmware (this will take a few minutes)
Checking out files : 100% (2113/2113), done.
Using HardFP libraries
If no errors appeared, your firmware was successfully updated
A reboot is needed to activate the new firmware

On peut lui demander d’augmenter la mémoire programme à 240 ou 224 ou la diminuer à 128 (donnant autant de RAM à la vidéo qu’aux programmes).

Pourquoi garder de la mémoire pour le GPU si on n’utilise pas de sortie vidéo ? Parce que ce n’est pas qu’une carte graphique, c’est aussi un élément indispensable du démarrage bas-niveau (boot, comme le BIOS pour un PC standard) et surtout pour Nono le robot qui parle, le GPU gère le son !

Et ensuite, il n’y a plus qu’à rebooter :


pi@raspberrypi $ sudo rpi-update 240
...
pi@raspberrypi $ sudo reboot

Broadcast message from root@raspberrypi (pts/0) (Thu Sep 6 10:41:32 2012) :
The system is going down for reboot NOW !

Et on teste :


top - 10:43:47 up 1 min, 1 user, load average : 0,73, 0,41, 0,16
Tasks : 57 total, 1 running, 56 sleeping, 0 stopped, 0 zombie
%Cpu(s) : 0,7 us, 0,3 sy, 0,0 ni, 99,0 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0
KiB Mem : 237912 total, 55544 used, 182368 free, 9476 buffers
KiB Swap : 102396 total, 0 used, 102396 free, 27776 cached

Alternative sans rpi-update

Si vous ne disposez pas de rpi-update sur votre distribution, les instructions pour l’installer sont ici.

Si vraiment vous préférez vous en passer, alors il suffit de remplacer le fichier start.elf par une des versions disponibles dans la dernière branche officielle :


pi@raspberrypi $ ls -l /boot/*start.elf
- rwxr-xr-x 1 root root 2463440 sept. 6 10:23 /boot/arm128_start.elf
- rwxr-xr-x 1 root root 2463440 sept. 6 10:23 /boot/arm192_start.elf
- rwxr-xr-x 1 root root 2463440 sept. 6 10:23 /boot/arm224_start.elf
- rwxr-xr-x 1 root root 640592 sept. 6 10:23 /boot/arm240_start.elf
- rwxr-xr-x 1 root root 640592 sept. 6 10:32 /boot/start.elf
pi@raspberrypi $ sudo cp /boot/armXXX_start.elf /boot/start.elf

Remplacez XXX par la valeur de mémoire RAM pour les programmes que vous souhaitez. L’exemple ci-dessus montre bien que c’est le boot le plus récent (le 240 qui a été mis à jour par rpi-update) qui est installé. Vous n’aurez peut-être pas tous ces fichiers sur votre version.

 Espace disque disponible

La mémoire de stockage disponible dépend de la taille de la carte mémoire utilisée. Mais selon l’installation que vous avez faite, il y a peut être une partie inutilisée.

La commande nécessaire pour tester l’espace disque sous Unix est "df" :


pi@raspberrypi $ df -h
Sys. fich. Taille Util. Dispo Uti% Monté sur
rootfs 3,6G 2,1G 1,4G 61% /
/dev/root 3,6G 2,1G 1,4G 61% /
devtmpfs 117M 0 117M 0% /dev
tmpfs 24M 200K 24M 1% /run
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 47M 0 47M 0% /tmp
tmpfs 47M 0 47M 0% /run/shm
/dev/mmcblk0p1 56M 34M 23M 60% /boot

Cela donne une indication (3,6 Go sur rootfs, 117 Mo sur devtmpfs, encore un peu sur /boot) ce qui permet de détecter si une carte est sous-utilisée. Ici, la carte de 4 Go est bien paramétrée.

Pour tester toute la carte au plus bas niveau, il faut utiliser fdisk :


pi@raspberrypi $ sudo fdisk -c -u /dev/mmcblk0

Command (m for help) : p

Disk /dev/mmcblk0 : 4075 MB, 4075290624 bytes
4 heads, 16 sectors/track, 124368 cylinders, total 7959552 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical) : 512 bytes / 512 bytes
I/O size (minimum/optimal) : 512 bytes / 512 bytes
Disk identifier : 0x000714e9

Device Boot Start End Blocks Id System
/dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA)
/dev/mmcblk0p2 122880 7741439 3809280 83 Linux

Pour ceux qui disposent d’une distribution récente, vous pouvez utiliser l’outil raspi-config qui regroupe différents utilitaires. L’une des options permet d’augmenter l’espace disque, comme vous pouvez le voir sur la copie d’écran suivante :


pi@raspberrypi $ sudo raspi-config

PNG - 46.9 ko

Testez les autres utilitaires à vos risques et périls, n’oubliez pas que la règle en informatique est de faire seulement ce qui est nécessaire !

Alternative sans raspi-config

L’utilisation de l’outil parted est également disponible pour les utilisateurs expérimentés. Nous recommandons de le faire depuis un système tiers, pas directement depuis votre Raspberry Pi. Voici les copies d’écran des opérations et calculs réalisés pour utiliser tout l’espace d’une carte 4 Go à partir d’une image Debian Squeeze ayant installé seulement 2 Go :

PNG - 70.1 ko
PNG - 40.9 ko
PNG - 41.8 ko
PNG - 38 ko
PNG - 90.9 ko

Cette opération est complexe : nous la réalisons en atelier, mais il est préférable de bien lire la documentation de fdisk, de parted et de resize2fs pour comprendre ce que vous faites.

Vos commentaires

  • Le 3 novembre 2014 à 02:13, par David En réponse à : Augmenter la mémoire de sa Raspberry Pi

    Bonjour,
    apres avoir installer tuxpaint et gcompris pour mes enfants,
    je recois [warm] Root filesystem has insufficient free space ; mounting tmpfs on /tmp ... (warning)
    au boot.
    je desinstall donc gcompris mais j ai toujours se message.
    raspi-config ne veut pas partitionner la carte car il l a deja fait !
    pouvez vous m aidez ??
    Bien a vous
     $ df -h
    Sys. fich. Taille Util. Dispo Uti% Monté sur
    rootfs 2,9G 2,5G 236M 92% /
    /dev/root 2,9G 2,5G 236M 92% /
    devtmpfs 215M 0 215M 0% /dev
    tmpfs 44M 372K 44M 1% /run
    tmpfs 5,0M 0 5,0M 0% /run/lock
    tmpfs 88M 0 88M 0% /run/shm
    /dev/mmcblk0p1 56M 9,7M 47M 18% /boot
    tmpfs 88M 0 88M 0% /tmp
    top - 01:12:45 up 24 min, 2 users, load average : 0,00, 0,01, 0,05
    Tasks : 64 total, 1 running, 63 sleeping, 0 stopped, 0 zombie
    %Cpu(s) : 0,3 us, 0,7 sy, 0,0 ni, 99,0 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st
    KiB Mem : 447864 total, 79012 used, 368852 free, 10468 buffers
    KiB Swap : 102396 total, 0 used, 102396 free, 43708 cached

    • Le 3 novembre 2014 à 09:35, par Eric P. En réponse à : Augmenter la mémoire de sa Raspberry Pi

      La désinstallation conserve le package (*.deb) téléchargé dans le cache. La commande "sudo apt-get clean" vide ce cache et devrait libérer assez d’espace disque pour continuer à travailler (tous les packages installés y sont certainement stockés actuellement, ce qui peut représenter pas mal d’espace disque).
      En fonction de la distribution Linux que vous avez choisie, une carte 4G est trop juste. Je vous conseille de refaire une installation de votre distribution sur une carte 8G.
      Cordialement
      Eric

    • Le 3 novembre 2014 à 12:20, par ClepCidre En réponse à : Augmenter la mémoire de sa Raspberry Pi

      Eric, je vous remercie pour votre temps.
      Ma distribution est Raspbian wyhzee et et je suis actuellement sur une SD de 8 Go.
      apt-get clean à été fait la sorti de df - h est identique
      Sys. fich. Taille Util. Dispo Uti% Monté sur
      rootfs 2,9G 2,5G 236M 92% /
      /dev/root 2,9G 2,5G 236M 92% /
      devtmpfs 215M 0 215M 0% /dev
      tmpfs 44M 1,3M 43M 3% /run
      tmpfs 5,0M 0 5,0M 0% /run/lock
      tmpfs 88M 0 88M 0% /run/shm
      /dev/mmcblk0p1 56M 9,7M 47M 18% /boot
      top me donne
      Tasks : 66 total, 1 running, 65 sleeping, 0 stopped, 0 zombie
      %Cpu(s) : 0,4 us, 0,8 sy, 0,0 ni, 98,5 id, 0,2 wa, 0,0 hi, 0,0 si, 0,0 st
      KiB Mem : 447864 total, 137832 used, 310032 free, 58264 buffers
      KiB Swap : 102396 total, 0 used, 102396 free, 46352 cached
      j ai également fait "touch forcefsck" et reboot
      ma sd est formater en deux partition du au formatage et la copie de l image sous win 7
      raspi-config ne veut pas étendre la partition je l’ai déjà fait.
      Je sais pas trop d’ou cela vient. Si vous penser a quelque chose :D
      Je suis nouveau sous linux et je ne sais pas grand chose mais il me semble que ce qui est appeler Kernell est monter dans un répertoir de la sd est il possible de le monter ailleurs (clef usb) ? pour garder plus de place sur la sd ?
      Cordialement
      David

    • Le 3 novembre 2014 à 14:23, par Eric P. En réponse à : Augmenter la mémoire de sa Raspberry Pi

      Le problème vient de l’existence des deux partitions et donc que celle dont vous disposez ne fait que 4G, qui semblent remplis quasi-totalement. Merci Windows qui a décidé de partitionner votre SD de cette manière :)
      Vous pouvez utiliser un outil de repartitionnement de la carte SD pour supprimer la deuxième partition et étendre celle de Linux sur la totalité de la carte. N’importe quel outil de gestion de partitions (y compris sous Windows) peut faire cela.
      Quant aux autres manip de montage exotique des partitions, si vous êtes nouveau sous Linux, mieux vaut en rester à l’écart pour le moment ;-)
      Cordialement
      Eric

    • Le 3 novembre 2014 à 14:41, par ClepCidre En réponse à : Augmenter la mémoire de sa Raspberry Pi

      Merci pour votre aide Eric. Pour le montage de partition c’était surtout de la curiosité mais je suppose que cela est possible.
      Je vais chercher un programme de repartitionnement et je ne manquerai pas de vous informer de la suite.
      BAV
      David
      FYI le lien des mails vers le sujet ne me renvoye pas ici mais ici
      "http://www.pobot.org/ecrire/?exec=controler_forum&debut_forum=@2572"

    • Le 6 novembre 2014 à 09:47, par ClepCidre En réponse à : Augmenter la mémoire de sa Raspberry Pi

      Donc j ai essayer et j’ai rater donc réinstalation...
      mais j’aurais essayer. cette fois ma carte m affiche bien 7,4Go donc c’est mieux.

    • Le 6 novembre 2014 à 10:24, par Eric P. En réponse à : Augmenter la mémoire de sa Raspberry Pi

      C’est en tombant qu’on apprend à marcher :-))
      L’avantage de la situation actuelle c’est qu’elle est issue d’un état connu et fiable. Ca permet d’être plus confiant sur le contexte.
      Bonne continuation.
      Cordialement
      Eric

    Répondre à ce message

  • Le 12 juillet 2013 à 20:01, par auteur En réponse à : Augmenter la mémoire de sa Raspberry Pi

    J’ai mis quelques temps avant de comprendre le fonctionnement de Raspberry Pi et d’en acquérir tout les fondamentaux nécessaire à son bon fonctionnement.

    Répondre à ce message

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici
  • Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document