[TUTORIEL] Installation de Gladys sur disque SSD


#1

Les cartes SD supportent mal les écritures à répétition, ce qui accélèrent leur vieillissement.
Plusieurs solutions existent pour augmenter leur durée de vie.
Je vous propose aujourd’hui une solution simple et très efficace : installer Gladys sur un disque SSD branché en USB à votre Raspberry Pi 3.

Bien sûr, ceci ne vous exempt pas de faire des sauvegardes régulières !


Pré-requis matériel

  • Un disque SSD vierge,
  • Un câble adaptateur USB pour SSD,
  • Un hub USB auto-alimenté (très important !),
  • Un lecteur de carte SD,
  • Une carte SD avec un système Raspbian récent,
  • Un Raspberry Pi 3 (plus hasardeux avec le Pi 2 et le Pi).
  • Un PC Windows, pour manipuler les partitions facilement (pour les Linuxiens, gParted fonctionne très bien, et pour les Mac Addict, je ne sais pas !)

Remarques :

  • Si vous voulez utiliser un Raspberry Pi 2 ou un Raspberry Pi, ou si votre Raspberry Pi 3 n’est pas compatible vous pouvez essayer la procédure indiquée dans le paragraphe “En cas d’échec de l’activation du boot sur USB”.
  • Avec la même procédure, vous pouvez utiliser une clé USB ou un disque dur externe standard pour démarrer votre Raspberry.

Pour ma part, j’ai choisi les matériels suivants que je n’avais pas :

  • Cable
  • Hub USB
    (ce Hub est bien moins chère en l’achetant directement aux US, mais il vous faudra une prise de conversion US/EU, comme ce modèle).

IMPORTANT : Faites une sauvegarde classique de votre carte SD , lisez intégralement cet article avant de commencer et vérifiez la compatibilité de votre Raspberry et des matériels que vos voulez acheter avant d’investir !

1- Choix de la taille du disque SSD

Vous pouvez choisir une disque de taille supérieure, inférieure ou égale à celle de votre carte SD. Selon votre choix, différents problèmes seront à résoudre :

  • Disque SSD plus petit que la carte SD
    Il faudra réduire la taille de l’image pour qu’elle puisse être gravé sur le SSD
  • Disque SSD plus grand que la carte SSD
    Il faudra étendre la partition après la gravure, l’outil présent dans Raspi-config ne pouvant le faire
  • Dique SSD égale à votre carte SD

Ceci est vrai sur le papier, mais dans la réalité, vous pouvez vous retrouver dans l’un des 2 cas précédents, à l’instar d’une sauvegarde d’une carte SD de 16 Go que vous ne pouvez graver sur une carte SD de … 16 Go, la nouvelle étant très légèrement plus petite que la première !

2- Activation du boot sur USB

Cette opération est inutile pour un Raspberry Pi 3 modèle B+ : L’activation du boot est fait de série. Vous pouvez le contrôler avec la même commande de contrôle.

Les dernières versions de Raspbian permettent de s’affranchir de la carte SD, et de démarrer directement sur un disque ou une clé branchée en USB. Cette option n’est pas activée par défaut. Il faut donc le faire :
En ligne de commande, faites une mise-à-jour classique de votre système :

sudo apt-get update && sudo apt-get upgrade

Activer la fonction :

echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt

Et redémarrez :

sudo reboot

Après redémarrage, toujours dans la console, nous allons vérifier la bonne prise en compte de cette commande :

vcgencmd otp_dump | grep 17:

doit renvoyer exactement :

17:3020000a

Si ce n’est pas le cas, vous ne pouvez pas en l’état démarrer depuis l’USB. Vous pouvez essayer les procédures indiquées dans le paragraphe “En cas d’échec de l’activation du boot sur USB”, à la fin de ce tuto.

A ce stade, plusieurs possibilités s’offrent à vous, de la plus simple > à la plus compliquée :

  1. Vous démarrez avec Gladys : Cas le plus simple ! Il faudra cependant étendre la partition Linux pour profiter pleinement de votre
    disque SSD.
  2. Réinstaller complètement Gladys sur le disque SSD, et restaurer sa base de donnée pour la reconfigurer complètement. Il faudra cependant étendre la partition Linux pour profiter pleinement de votre disque
    SSD.
  3. Graver votre sauvegarde de Gladys au format .img sur votre disque SSD. Cas pouvant être assez compliqué, surtout si,comme moi, votre disque est légèrement plus petit que votre sauvegarde…

3- Installer Gladys sur le disque SSD avec l’image officielle

Après avoir branché votre disque USB sur votre ordinateur, graver l’image sur votre disque SSD.
Après avoir éteint votre Raspberry avec la commande

sudo halt

débranchez le.
Branchez votre hub USB auto-alimenté, votre disque SSD sur le hub, retirez la carte SD et redémarrez le.
Après 10 à 30 secondes, Gladys est opérationnelle.
Il restera à étendre la partition Linux (EXT4) à la taille souhaitée, l’outil présent dans Raspi-config ne pouvant le faire.
Nous verrons cette opération au chapitre 6.

4- Installer Gladys sur le disque SSD avec l’image officielle et restaurer la base de données.

Il va falloir commencer par sauvegarder votre base de données actuelle.
Depuis la console :

mysqldump --user=root --password=root --complete-insert --quote-names --databases gladys > fichier_sauvegarde.sql

(à adapter si vous n’avez pas une installation standard)

Ce fichier sera créé dans le dossier d’où vous aurez lancé la commande.
Transférez le sur un disque de sauvegarde (copie sur clé USB, transfert sur PC par sftp,…).
Installez Gladys comme au point précédent, puis recopiez votre fichier de sauvegarde sur votre disque SSD dans le dossier de votre choix.
Depuis la console, naviguez vers ce dossier et lancez la commande suivante :

mysql --user=root --password=root gladys < fichier_sauvegarde.sql

(à adapter si vous n’avez pas une installation standard)

Il ne vous reste plus qu’a vous connecter à Gladys avec un navigateur, et à relancer l’installation de vos différents modules en cliquant sur le bouton “Mettre à jour”.
Il restera à étendre la partition Linux (EXT4) à la taille souhaitée, l’outil présent dans Raspi-config ne pouvant le faire.
Nous verrons comment faire au chapitre 6.

5- Graver votre sauvegarde de Gladys sur le disque SSD

La méthode la plus simple,… ou pas ! Selon que votre fichier .img a une taille inférieure à celle de votre disque SSD, … ou pas !
Dans le cas où le monde est parfait, vous pouvez graver directement votre dernière image de sauvegarde sur votre disque SSD, puis brancher ce dernier sur le Raspberry.
Après un démarrage un peu plus long, vous retrouverez Gladys comme vous l’aviez laissé.
Il restera éventuellement à redimensionner la partition EXT4, si cela est nécessaire. Mais nous verrons cette opération dans le chapitre suivant.
Dans le cas où votre image est trop grande, il va falloir la réduire ! C’est ce que nous allons apprendre à faire au chapitre suivant.

6- Étendre la partition EXT4 sur le disque SSD.

Sous Windows, téléchargez EASSOS PartitionGuru free et installez le.
(Sous Linux, utilisez gParted, qui offre les mêmes fonctionnalités de redimensionnement, en environnement graphique, ou parted, pour les adeptes de la console).

Après avoir arrêter proprement votre Raspberry, branchez votre disque SSD à votre PC, puis lancez PartitionGuru (ou DiskGenius).
Sélectionnez votre disque SSD dans la fenêtre (1) :

En (2), nous pouvons voir l’espace libre à la fin du disque, et en (3), la partition Linux que nous voulons étendre au maximum.
Faites un clique-droit sur la partition et, dans le menu qui s’affiche, choisissez l’entrée “Resize Partition

Dans la fenêtre suivante, redimensionner la partition :

Et cliquez sur le bouton “Start” :

On peut voir que j’ai choisi d’étendre au maximum cette partition.
Et voilà le résultat :

Il ne vous reste plus qu’à éjecter votre disque et à le brancher sur votre raspberry.

7- Réduire la taille de ma sauvegarde pour l’adapter à mon disque SSD

Je n’ai pas trouver de logiciel libre pouvant modifier la taille des partitions d’une image. SI vous en trouvez un, n’hésitez pas à le signaler en commentaire :slight_smile:
J’ai donc réduit la partition Ext4 de la carte SD avant la création de l’image, toujours à l’aide du même logiciel et de la même façon que pour agrandir une partition, puis j’ai sauvegardé ma carte à l’aide de Win32 Disk Imager (Version 1.0), en cochant la case adéquate :

image

Il ne me restait plus qu’à graver l’image sur mon disque, et à étendre la partition, comme vu au chapitre précédent.

8- En cas d’échec de l’activation du boot sur USB

Essayer ces différentes solutions, dans l’ordre, les unes après les autres.

a. Faites une mise a jour de firmware :
A l’aide de la commande suivante, dans la console :
sudo BRANCH=next rpi-update
Éteignez, retirez la carte SD et redémarrer.

b. Éditez le fichier config.txt
qui se trouve à la racine de votre clé, sur la partition de boot, et ajouter à la fin :

program_usb_boot_timeout=1

Ce qui laissera 5 secondes supplémentaires pour démarrer à votre SSD.
Puis redémarrez votre Raspberry et vérifier la bonne prise en compte à l’aide la commande :

vcgencmd otp_dump | grep 66

qui doit vous renvoyer :

66 : 01000000

Éteignez, retirez la carte SD et redémarrer.

c. Avec une carte SD de boot
Téléchargez et copiez sur une carte SD vierge le fichier bootcode.bin et démarrer votre RPI avec cette carte.
A noter qu’elle reste dans le lecteur du Raspberry.

Si aucune de ces solutions ne fonctionnent, votre stockage de masse n’est pas compatible.


[Mon Installation] Domnis - Le Come Back!
#2

Salut !

d’abord, merci pour le travail effectué !! ca a du te prendre bien du temps.

Je commence avec gladys, et tant qu’a faire, autant faire bien des le départ.
Donc, je ressort un petit SSD chinois (celuis ci : https://www.amazon.fr/KingDian-120gb-External-Portable-P10-120GB/dp/B017TPVTAI pas acheté la, et surtout pas a ce prix XP) pour installer en suivant ton tuto, mais voila, tout se passe bien jusqu’a la fin de l’étape 2, mais a l’étape 3, le rasp ne semble pas vouloir démarrer sur le ssd (branché sur un hub autoalimenté : https://www.amazon.fr/gp/product/B00QWZAI8Q/ref=oh_aui_detailpage_o05_s00?ie=UTF8&psc=1 )
En gros, il ne se passe rien, la led reste rouge fixe sur le pi…
Une idée d’ou peut venir mon souci ?

Merci d’avance.

Izx.

EDIT ; c’est fou qu’il n’y ai pas encore eu de réponse… je te remercie donc pour tous ceux qui auraient utilisé ce tuto sans remercier.

Re EDIT : branché en direct sur le pi (3b+) ca a l’air de rouler sans pb. Pourquoi tu conseilles d’alimenter le ssd via un hub autoalimenté, une alim 3A n’est pas suffisante pour avoir un truc stable ?


#3

Salut @Inzemix,
j’imagine que tu n’as pas eu de soucis avec le flashage du SSD, et que tu as bien eu 17:3020000a en réponse à vcgencmd otp_dump | grep 17: ?
As-tu essayéla solution en 8.b ?
En dernier recours, vérifie avec 8.c que ton SSD est bien reconnu.
A savoir que tout les SSD ne sont malheureusement pas compatible :frowning:


#4

Comme je l’ai mis en édit, avec le ssd branché en direct (pas via le hub) ça roule sans souci… ça doit donc être lié à mon hub… une idée de ce qui pourrait poser problème ?

J’avais pas vu ta réponse avant d’editer…


#5

Parceque ça peut pas mal tirer sur l’alim du RPI et générer des soucis, surtout quand tu vas commencer à brancher d’autres trucs en USB.
Essaye d’augmenter alors le temps laissé au démarrage du SSD sur le hub.


#6

Je l’ai laissé au moins 5mins sur le hub :frowning: et ca n’a rien changé… (je crois avoir lu quelque part que le pi ne pouvait pas gérer trop de ports usb, vrai ou faux (parce qu’entre les 4 du pi plus les 7 du hub, ca commence a en faire…)


#7

Perso, j’ai 5 accessoires USB branchés.

Tu as quel modèle de RPi ?


#8

le 3b+ tout neuf sorti de sa boite :smiley:


#9

Tu as testé ça ? Ca donne quoi ?


#10

ca me donne : 66:02009eaa ??
(on est a la limite du chinois pour moi.)


#11

Peux-tu essayer de brancher ton SSD en direct, puis de brancher ton hub USB sur le RPi, sur lequel tu branches n’importe quoi (un clavier, une clé USB,…)
puis tu démarres et tu regardes si tu as bien ton “n’importe quoi” qui est trouvé ?


#12

Euh, jusque la j’arrivais a suivre, mais la ligne de commande et moi, on est pas encore super copains…
Je fais comment pour voir si mon n’importe quoi (une clé usb 128Go) est bien trouvée ?


#13

(et juste pour ma culture, qu’est ce que le message que j’ai a la place du tien veut dire ? )


#14

La commande vcgencmd otp_dump te sert à afficher le contenu de l’OPT (One Time Prommable), qui est enregistré dans le coeur de ton RPi. En gros, tu lui donnes des consignes au démarrage, avant de lire la carte.
Comme il y a plein de truc écrits dedans, le grep X ne sert qu’à afficher la valeur de la ligne X. Et bien sûr, chaque ligne signifie quelque chose.
Tu peux d’ailleurs essayer juste vcgencmd otp_dump, tu verras :slight_smile:

Tu avais bien mis program_usb_boot_timeout=1 dans le config.txt ?


#15

Quand je connecte le hub autoalimenté avec une clé usb 128Go dessus, le pi ne démarre de nouveau pas :frowning:
et j’avais bien changé le config.txt (avec un sudo nano /boot/config.txt)


#16

Et juste le hub ? Tu as quel modèle de hub ? sais-tu s’il est compatible avec le RPi ?


#17

J’ai mis le lien vers mon hub dans mon premier post :wink:
(il est testé ici : https://www.domo-blog.fr/test-hub-usb-aukey-plus-de-ports-usb-jeedom/ et il fonctionne visiblement)


#18

J’imagine que tu as vu qu’il n’y a que 4 ports USB pour les données, et que c’est bien sur ceux-là que tu te connectes ?

Oups, désolé !

Tu as testé avec juste ton SSD et le hub, chacun branché en USB sur ton RPi ?


#19

Je m’étais bien connecté sur le bon port (un des bons ports)
Je viens de voir que dans les commentaires de l’article, un mec a le meme souci que moi… pas moyen de booter en étant branché sur le hub…
je viens de tester en ayant les deux branchés, il ne démarre pas…


#20

(J’ai le meme comportement que le mec du commentaire, rien n’y fait si le hub est branché, je démarre pas. a voir si comme lui, je pourrai alimenter le hub quand j’en aurai besoin pour brancher d’autres trucs en usb… histoire de pas surcharger le pi)