(migration depuis l’ancien forum, post du 8 juil. 2019)
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 et une clé USB Z-Wave.
(EDIT 15/06/2020 : pour booter directement sur USB, une méthode plus simple ici : [RTEX] Pi4 - SSD mSATA – Pi OS 64Bits Buster – Jeedom V4)
/!\ ATTENTION : la procédure qui va être décrite, pour qu’elle soit totalement réalisée avec succès, nécessite en plus du Pi4 cible, l’utilisation temporaire d’un RPi3B+ (et j’insiste sur le « plus »)
Les équipements utilisés sont les suivants :
- RPi4B 4Go Rev 1.1
- 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
- Hub USB2, avec sa propre alimentation
- Z-wave : Aeotec Z-Stick Gen5 ZW090-C firmware 4.54 (ne fonctionne pas sur un port USB3 du Pi4, ce n’est pas la Gen5+)
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 :
- installer l’image Raspbian Buster Lite sur la microSD et sur l’USB/SSD.
- étendre la partition physique système de la SSD et regénérer son UUID
- configurer le chargement du boot et du système en modifiant le fichier cmdline.txt
- installation sur le RPi4B, modification de /etc/fstab et configuration du système
- Installation de Jeedom V4
- Installer la clé USB Aeotec et le plugin Z-Wave
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 : Index of /raspbian_lite/images/raspbian_lite-2019-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 et regénérer son UUID
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,
et pour effet de créer un nouveau identifiant UUID pour le disque SSD, différent du disque SD.
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 UUID 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.
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
pi@raspberrypi:~ $ sudo nano /etc/fstab
Pour la partition /boot, remplacer l’identifiant de disque SSD (ici 5fd9eb02) par l’identifiant de disque SD (ici 1ac7c83c) :
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
On retrouve les identifiants de disque par la commande fdisk :
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
Le modèle de disque « ASM1153E » correspond à la SSD.
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 :
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]
[code]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
/dev/root fait maintenant 30 Go.
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 :
pi@raspberrypi:~ $ sudo apt-get update --allow-releaseinfo-change
La suite de la configuration étant classique, je ne détaillerai pas.
Les sources de dépôts :
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
Raspbian Buster a installé par défaut entre autres :
- 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)
(à 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.
5) Installation de Jeedom V4
Connexion SSH avec le compte pi, et passage en root :
$ sudo su -
La documentation officielle de l’installation de Jeedom est ici : https://doc.jeedom.com/fr_FR/installation/cli
Installation en ligne de commande :
# wget https://raw.githubusercontent.com/jeedom/core/master/install/install.sh
# chmod +x install.sh
# ./install.sh
Au cours de l’installation s’affiche une fenêtre “Samba server and utilities”. Taper sur la touche Entrée.
A la fin de l’installation de Jeedom, bien noter le mot de passe root MySQL indiqué.
L’installation de Jeedom V4 est OK.
L’installation de Jeedom ajoute le composant “non-free” sur toutes les sources de paquets (dans /etc/apt/sources.list).
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.
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.
6) Installer la clé USB Aeotec et le plugin Z-Wave
Connecter la clé USB AeoTec sur un port USB du Hub USB2.
L’anneau lumineux de la clé Aeotec clignote.
Nous allons installer le plugin Z-Wave.
Se connecter avec un navigateur sur l’IP du Pi4
Cliquer Plugins → gestion des plugins → Market
Sélectionner le plugin Z-Wave et cliquer installer.
Il ne reste plus qu’a configurer le plugin :
Cliquer le bouton « Activer ».
Cliquer le bouton « Relancer » les Dépendances (environ 15 minutes).
Sélectionner le Port clé Z-Wave : /dev/ttyACM0
Cliquer le bouton « Sauvegarder ». Le démon passe au statut OK.
Cliquer sur l’icône « Santé ». Le statut du module Z-Stick doit être à « Complete ».
Cliquer sur l’icône « Réseau Zwave ». L’État actuel doit être à « Network ready ».
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.
EDIT 11/02/2020
Je suis passé de Buster initialement à 10.0, à 10.2 puis 10.3 avec les commandes :
# apt update
# apt upgrade
# reboot
akenad