Table des matières
Configuration d'un Raspberry Pi en read-only
Pour configurer un système en read-only, je vais suivre ce tutoriel (hallard.me), basé sur cet autre tutoriel (k3a.me). Mon objectif est que le système soit en read-only mais d'avoir une partition “data” sur laquelle je peux écrire au besoin.
Une autre solution consiste à utiliser overlayfs !
Prérequis
Rajouter une partition "data"
Mettre l'image de base sur la (µ)SD
On commence par formater la carte (µ)SD, on crée une partition (ext4) et puis on écrit l'image dessus avec ddrescue.
$ sudo ddrescue -D --force 2016-05-27-raspbian-jessie-lite.img /dev/sdb
Création de la partition "data"
Ensuite, on ouvre gparted et on rajoute une partition en fat32
, tout en laissant de la place pour étendre la partition racine.
Redimensionnement de la partition racine
Après avoir créé la partition data
en fat32
, on met la carte (µ)SD et on démarre sur le Raspberry Pi. Il va afficher un message d'erreur au démarrage en disant que la partition racine doit être la dernière sur la carte (µ)SD pour qu'il puisse l'étendre automatiquement.
On fois que le système a bien démarré, on éteint le Raspberry Pi. On remet la carte (µ)SD sur un ordinateur et on ouvre un terminal. On vérifie avec lsblk quel est l'emplacement de la (µ)SD.
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTP (...) sdb 8:16 1 29,8G 0 disk ├─sdb1 8:17 1 63M 0 part ├─sdb2 8:18 1 1,23G 0 part └─sdb3 8:19 1 24,5G 0 part
On va ensuite utiliser parted pour recréer la partition racine (sdb2
dans ce cas-ci). On va supprimer la partition n°2 et la recréer pour que la fin de celle-ci arrive juste avant le début de la troisième partition. (168,167,62
devient 691,20,32
)
$ sudo parted /dev/sdb <parted> unit chs <parted> print (...) Number Start End Type File System Flags 1 0,130,2 8,138,1 primary fat16 lba 2 8,138,2 168,167,62 primary ext4 3 691,20,33 3893,174,56 primary fat32 <parted> rm 2 <parted> mkpart primary 8,138,2 691,20,32 <parted> quit
On nettoie la partition avec e2fsck puis on agrandit le système de fichier pour qu'il prenne toute la place dans la partition sdb2
.
$ sudo e2fsck -f /dev/sdb2 $ sudo resize2fs /dev/sdb2
On peut vérifier avec lsblk, par exemple, la nouvelle taille de la partition racine.
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTP (...) sdb 8:30 1 29,8G 0 disk ├─sdb1 8:30 1 63M 0 part ├─sdb2 8:30 1 5,2G 0 part └─sdb3 8:30 1 24,5G 0 part
Monter la partition data automatiquement
Pour monter la partition data
automatiquement sur le Raspberry Pi, il faut modifier le fichier /etc/fstab/
pour monter automatiquement la troisième partition (sdb3
) dans le dossier voulu (/media/data
).
$ cat /etc/fstab proc /proc proc defaults 0 0 /dev/mmcblk0p1 /boot vfat defaults 0 2 /dev/mmcblk0p2 / ext4 defaults,noatime 0 1 /dev/mmcblk0p3 /media/data vfat rw,noatime,user 0 0
Configuration classique
On peut à présent remettre la (µ)SD et faire les configurations de base détaillées sur la page de raspbian (clavier en AZERTY, locales, fuseau horaire, configuration du wifi, …).
Configuration en read-only
J'ai principalement suivi ce tutoriel (hallard.me). À la fin, j'ai mon système qui fonctionne parfaitement en read-only, les alias sont configurés pour pouvoir passer de read-only à read-write très facilement.
pi@raspberrypi(ro):~$ rw pi@raspberrypi(rw):~$ ro pi@raspberrypi(ro):~$
Le fichier /etc/fstab
où on voit que la partition data
reste en rw
:
$ cat /etc/fstab proc /proc proc defaults 0 0 /dev/mmcblk0p1 /boot vfat defaults,ro 0 2 /dev/mmcblk0p2 / ext4 defaults,noatime,ro 0 1 /dev/mmcblk0p3 /media/data vfat rw,noatime,users,umask=000 0 0 #For Debian Jessie tmpfs /tmp tmpfs nosuid,nodev 0 0 tmpfs /var/log tmpfs nosuid,nodev 0 0 tmpfs /var/tmp tmpfs nosuid,nodev 0 0