RTEX migré vers le nouveau forum : https://community.jeedom.com/t/2512
Bonjour à tous, c'est akenad ,
Aujourd'hui je vais vous présenter un retour d'expérience sur la mise en œuvre d’un RPi4B avec système sur support de stockage USB SSD.
Les équipements et logiciels utilisés sont les suivants :
- RPi4B 4Go
- Raspbian Buster Lite (base Debian 10)
- carte microSD 32 Go
- SSD 32 Go Transcend (TS32GMSA370)
- boîtier SSD USB/mSATA (Inateck Boîtier USB 3.0) pour y placer le SSD
- adaptateur microSD/USB Transcend USB3
La version du firmware de l’EEPROM du Rpi4B ne permettant pas au jour ou j’écris ces lignes de booter directement sur USB, nous allons booter sur carte microSD, tout en ayant le système sur USB SSD. C’est-à-dire en mettant /boot sur SD et / sur SSD. / est la racine (root) du système de fichiers.
Nous allons procéder en plusieurs étapes :
1) installer l’image Raspbian Buster Lite sur la microSD et sur l’USB/SSD.
2) étendre la partition physique système de la SSD
3) configurer le chargement du boot et du système en modifiant le fichier cmdline.txt
4) installation sur le RPi4B, modification de /etc/fstab et configuration du système
1) installer l’image Raspbian Buster Lite sur la microSD et sur l’USB/SSD.
L'image que j'ai utilisée est du 24-06-2019 et disponible ici : https://downloads.raspberrypi.org/raspb ... 019-06-24/
La dernière version d'image disponible est ici : https://downloads.raspberrypi.org/raspbian_lite_latest
Nous allons installer l’image Raspbian Buster Lite avec BalenaEtcher 2 fois, une fois sur la SD et une fois sur la SSD en utilisant un port USB d’un PC (l’idéal étant d’avoir 2 ports USB3 et de faire tout en même temps) :
-connecter l’USB/SSD
-pour la microSD, utiliser l'adaptateur microSD/USB
L’image flashée avec BalenaEtcher crée 2 partitions sur le support de stockage, la première partition FAT32 de 256 Mo et la deuxième partition système linux EXT4 d’environ 2 Go.
Une fois l’image flashée , la partition FAT32 qui vient d’être créée peut ne pas être visible, dans ce cas débrancher et rebrancher l’USB.
Sur la SD et la SSD (c’est-à-dire sur la partition FAT32 créée, mettre à la racine un fichier nommé « ssh » vide. (ceci est nécessaire pour pouvoir accéder par la suite au RPi4B en SSH).
2) étendre la partition physique système de la SSD
Après le flashage de l’image sur la SSD, la partition physique système est d’environ 2Go alors que la SSD est de 32 Go.
Pour étendre la partition la méthode la plus simple que j’ai trouvée et de booter la toute première fois sur la SSD avec un RPi3B+ (oui, ok il faut en avoir un), ce qui a pour effet d’étendre automatiquement la partition physique système au maximum disponible à savoir ici environ 32 Go.
(A noter que cette opération à pour conséquence de créer un nouveau identifiant pour le disque SSD.)
3) configurer le chargement du boot et du système en modifiant les fichiers cmdline.txt
La partition FAT32 de la SD et de la SSD contiennent à la racine le fichier cmdline.txt contenant le paramètre :
root=PARTUUID=xxxxxxxx-02
ou xxxxxxxx en hexadécimal sur 8 caractères représente un identifiant de disque et -02 la deuxième partition (partition système (partition root)).
dans le cas présent j’ai :
- identifiant de la SD : 1ac7c83c
- identifiant de la SSD : 5fd9eb02
dans le cmdline.txt de la SD je remplace 1ac7c83c par 5fd9eb02, ainsi après le boot sur la SD, le système sera chargé à partir de la SSD.
4) installation sur le RPi4B, modification de /etc/fstab et configuration du système
Sur le Pi4, mettre la SD dans son logement et l’USB/SSD sur un port USB (couleur bleue pour USB3) et démarrer.
Brancher le câble réseau puis l’alimentation.
.
. .
.
Le pi4 boot sur la SD et charge le système depuis la SSD.
Repérer l’adresse IP prise sur le réseau et se connecter SSH (pi/raspberry)
Nous allons modifier le fichier /etc/fstab sur la SSD afin d’indiquer sur la SSD que le /boot est chargé depuis la SD. Ce qui permettra par la suite d’effectuer correctement les mises à jour Kernel et firmware.
Code : Tout sélectionner
pi@raspberrypi:~ $ cat /etc/fstab
proc /proc proc defaults 0 0
PARTUUID=5fd9eb02-01 /boot vfat defaults 0 2
PARTUUID=5fd9eb02-02 / ext4 defaults,noatime 0 1
# a swapfile is not a swap partition, no line here
# use dphys-swapfile swap[on|off] for that
Code : Tout sélectionner
pi@raspberrypi:~ $ sudo nano /etc/fstab
Code : Tout sélectionner
pi@raspberrypi:~ $ cat /etc/fstab
proc /proc proc defaults 0 0
PARTUUID=1ac7c83c-01 /boot vfat defaults 0 2
PARTUUID=5fd9eb02-02 / ext4 defaults,noatime 0 1
# a swapfile is not a swap partition, no line here
# use dphys-swapfile swap[on|off] for that
Code : Tout sélectionner
pi@raspberrypi:~ $ sudo fdisk -l
[...]
Disk /dev/mmcblk0: 30.2 GiB, 32395755520 bytes, 63272960 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
Disklabel type: dos
Disk identifier: 0x1ac7c83c
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 8192 532480 524289 256M c W95 FAT32 (LBA)
/dev/mmcblk0p2 540672 63272959 62732288 29.9G 83 Linux
Disk /dev/sda: 29.8 GiB, 32017047552 bytes, 62533296 sectors
Disk model: ASM1153E
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 33553920 bytes
Disklabel type: dos
Disk identifier: 0x5fd9eb02
Device Boot Start End Sectors Size Id Type
/dev/sda1 8192 532480 524289 256M c W95 FAT32 (LBA)
/dev/sda2 540672 62533295 61992624 29.6G 83 Linux
On retrouve bien :
- identifiant de la SD : 1ac7c83c
- identifiant de la SSD : 5fd9eb02
/dev/root ne fait pour l'instant qu'environ 2 Go.
Extension de la partition logique :
Code : Tout sélectionner
pi@raspberrypi:~ $ sudo resize2fs /dev/sda2
resize2fs 1.44.5 (15-Dec-2018)
Filesystem at /dev/sda2 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/sda2 is now 7749078 (4k) blocks long.
Code : Tout sélectionner
pi@raspberrypi:~ $ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 30G 1.7G 27G 6% /
devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 8.5M 1.9G 1% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mmcblk0p1 253M 40M 213M 16% /boot
tmpfs 391M 0 391M 0% /run/user/1000
Ce qui à été détaillé ici permet donc de faire tourner un RPi4B sur un SSD, en bootant sur SD, en attendant qu’une mise à jour du firmware du Pi4 soit disponible pour se passer de la SD comme c’est le cas sur un RPi3B+.
Buster venant de passer en stable, lancer la commande suivante pour que les prochaines mises à jour se passent bien :
Code : Tout sélectionner
pi@raspberrypi:~ $ sudo apt-get update --allow-releaseinfo-change
La suite de la configuration étant classique, je ne détaillerai pas.
Les sources de depots :
Code : Tout sélectionner
pi@raspberry:~ $ cat /etc/apt/sources.list
deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
pi@raspberry:~ $ ls /etc/apt/sources.list.d/
raspi.list
pi@raspberry:~ $ cat /etc/apt/sources.list.d/raspi.list
deb http://archive.raspberrypi.org/debian/ buster main
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://archive.raspberrypi.org/debian/ buster main
- php7.3
- python2.7 et python3.7
- NodeJS 10.15.2 (n'a pas installé npm, j'ai donc installé en plus npm, c'est la 5.8.0)
(a noter que si l'on purge Nodejs et npm, puis que l'on installe npm, npm installe aussi nodejs)
/!\ ATTENTION donc à la compatibilité avec les installations des dépendances du core et plugins actuels.
Installation de Jeedom 3.3.27 (master) OK.
Juste un petit souci d'installation de dépendances :
- Le paquet "libav-tools" a été remplacé par le paquet "ffmpeg", c'est donc ce dernier qu'il faut installer pour effectuer du codec stream audio video.
- synthétiseurs vocaux libttspico et mbrola NOK
. .
Le pi4 chauffant plus que le pi3 il est conseillé d'y ajouter radiateurs et ventilateur :
Pour alimenter en 5 volts le ventilateur, brancher ses 2 fils sur le connecteur GPIO du Pi.
Les 2 fils se branchent sur la rangée externe, en partant de la gauche,
-le fil rouge sur sur le 1er ou 2ième pin (5v)
-le fil noir sur le 3ième pin (Ground)
Voila j'espère que ce retour d’expérience sera utile aux membres Jeedom.
akenad