Installer le disque dur Boot de la sd sur disque externe
Voila mes références a consulter sans modération.
Préparer le disque
Créez la structure nécessaire au fonctionnement sous Linux. Dans mon cas c’est /dev/sda2 que j’ai réservé à cet usage.
1-Connectez le disque dur externe au raspberry
sudo
fdisk
-l
et on peut vérifier que le disque dur de 250 Go a bien été détecté.
Quelques infos sur cette copie d’écran :
La commande fdisk
fdisk -l permet de lister l’ensemble des disques actifs, montés ou non-montés dans le système.
Décortiquons les informations intéressantes fournies par cette commande :
Disk /dev/mmcblk0: 3974 MB
C’est le premier disque détecté par la commande fdisk. Il est accessible dans le répertoire /dev comme tous les périphériques de notre Raspberry Pi, et sa taille est de 3974Mo (4Go si vous préférez). Son nom mmcblk0 vient de MMC (Multi Media Card = carte SD) blk pour Block Device, puisque ce périphérique, comme un disque dur, manipule les données sous forme de blocs (des secteurs de 512 octets) et enfin 0 parce que c’est le premier disque dur (ben oui en informatique on commence à compter à partir de zéro).
Un peu plus bas, vous trouvez les partitions existantes sur ce disque dur mmcblk0 : /dev/mmcblk0p1 La première partition au format W95 FAT32 (colonne System)
C’est cette partition qui apparait seule quand vous lisez votre carte SD sur une machine zindozs car formatée en FAT32. C’est aussi sur cette partition que votre Raspberry Pi boote par défaut, ce qui explique qu’il ne peut booter que sur une carte SD.
/dev/mmcblk0p2 Celle-ci est indiquée formatée en Linux, ce qui explique que zindozs dit ne pas la connaitre (à mon avis c’est fait exprès
Ensuite on passe au deuxième disque, celui qui nous intéresse :
Disk /dev/sda: 250.1 GB
C’est le premier “vrai” disque détecté. En Linux pas de C: ou D: vous l’aurez remarqué ! les disques durs se nomment sda, sdb …
Ensuite on voit qu’il n’y a qu’une partition /dev/sda1 sur ce disque et qu’elle est en format NTFS / exFAT car le disque a été reformaté sous Win7. Linux est moins sectaire que son collègue zindozs et vous donne des infos sur la concurrence. Ah mais! Si d’autres partitions existaient elles s’appelleraient sda2, sda3 …
La commande cfdisk
L’outil disponible en ligne de commande pour configurer les partitions est cfdisk. Plus sympathique que fdisk, il dispose d’une interface plus conviviale, gérable avec les touches de déplacement . Il vous permettra de
- Détruire la ou les partitions existantes
- Créer de nouvelles partitions
- Leur attribuer des types (DOS, FAT32, ext3, swap…)
- Enregistrer la table de partition modifiée sur le disque
Allez, on se lance :
sudo
cfdisk
/dev/sda
Puisque mon disque de 250 Go a été détecté en /dev/sda (voir le fdisk un peu plus haut).
Supprimer une partition
Sélectionnez la partition que vous voulez détruire en vous déplaçant avec les flèches Haut et Bas, et allez sur [ Delete ] avec les flèches Droite et Gauche. Validez avec Enter
La partition a disparu … de l’écran. Rien n’est encore perdu, vous pouvez avoir un remord, si vous repensez tout à coup que les images de votre bambin sont restées sur le disque, il est encore temps ! Seule la ré-écriture de la nouvelle table de partition par [ Write ] écrasera la ou les partition(s) existantes… (et encore, il y a des outils de récupération).
Créer une partition
Allez maintenant sur [ New ], pour créer la (les) nouvelle(s) partition(s).
Dans mon cas, je n’ai que 3 partitions à créer, j’ai donc décidé de créer 3 partitions primaires (c’est qui le chef ? hein ?) : Pour la première …
Il s’agit du Swap dont la taille (1 Go) représente 1000 Mo
Après validation, la partition est créée et elle apparait comme sda1. Créez les autres partitions selon vos besoins. On voit ici que mes trois partitions sont appelées sda1, sda2 et sda3, que ce sont des partitions primaires, et qu’elles sont de type Linux. Je n’ai pas modifié le type. On le fera à l’étape suivante.
Modifier le type de la partition
Le type se définit en cliquant sur [ Type ], et en choisissant le N° approprié (ce sera 82 pour swap, 83 pour Linux et 0C pour Win95 FAT32). Une fois les types configurés, vérifiez la conformité de toutes vos partitions.
Écrire la table de partition
Passez à l’écriture : [ Write ]. Il faudra confirmer par un yes que vous abandonnez tout espoir de revoir un jour les données qui étaient sur votre disque dur … Allez c’est parti !
Ne vous inquiétez pas si les partitions n’ont pas exactement la valeur que vous avez indiquée. Une partition ne peut comporter que des pistes entières du disque ! Alors à moins de se livrer à des calculs avant de créer ses partitions, il faut accepter ce léger écart dû à “l’adaptation” à laquelle le logiciel procède avant de configurer la table de partition. Comme vous le voyez ci-dessus les différences restent minimes.
Vérifier le partitionnement du disque dur
Après toutes ces modifs, un
sudo
fdisk
-l
va nous permettre de vérifier
- que les modifications ont bien été écrites dans la table de partition
- qu’elles sont conformes à ce qui était attendu
- … que le disque dur fonctionne toujours (ouf)
Et maintenant je fais quoi avec ce super disque connecté à mon Raspberry Pi ?
Ben…. rien ! pour l’instant, c’est comme si vous aviez une armoire (la partition) dans laquelle vous avez prévu de ranger vos vis, écrous, rondelles (vos données) …. mais cette armoire ne contient ni étagère, ni boites de rangement, ni étiquettes (le système de fichiers) ! Ça va être un sacré bazar !! Il va donc falloir formater nos partitions avant de les utiliser. Ben oui, je sais sous zindozs vous branchez le disque que vous venez d’acheter chez Carouf et ça marche tout seul… Mais si vous travaillez un jour sur des serveurs, NAS… Il faudra aussi mettre les mains dans le cambouis.
Commençons par formater la partition Linux. Vous avez noté sur la copie d’écran de fdisk qu’elle s’appelle sda2. La commande pour “préparer” la partition à travailler avec Linux est Make File System (mkfs) soit :
sudo
mkfs.ext3 /dev/sda2
Ci-dessus en cours de formatage (en bas : 83/1491).
Ci-dessous : formatage terminé
Passons au formatage de la partition de SWAP : sda1sudo
mkswap /dev/sda1
Enfin, pour formater la partition FAT32 avec Raspbian, nous avons besoin d’outils non installés d’origine : les dosfstools (DOS File System Tools). Installons les avant de formater la partition sd3. Puis formatons la partition avec mkfs.vfat, avec l’option -n qui permet de nommer le volume.sudo
apt-get install
dosfstools
sudo
mkfs.vfat -F 32 /dev/sda3
-n freecomF32
Si on était chez zindozs, pas de souci, une fois branché, votre disque apparaitrait comme un disque D: ou E: et le tour est joué. Mais nous, on s’amuse avec Linux ! Alors c’est différent :
“Comme pour l’utilisateur TOUT EST FICHIER, tous les systèmes de fichiers quels que soient leur emplacement physique doivent être intégrés dans l’UNIQUE arborescence logique du système Linux.
Cette arborescence peut donc être construite (et évoluer) à partir de diverses partitions qui peuvent être situées sur plusieurs disques. Cela réalise une intégration et une abstraction plus poussée que dans le monde Windows où les partitions et lecteurs auxquels sont affectées les lettres A: C: D: … demeurent des entités séparées. Naturellement la partition sur laquelle est situé le répertoire racine joue un rôle particulier.” [source A.C. Créteil]
Nous allons tout simplement “monter” le disque dur dans l’arborescence de notre framboise314, pour qu’il apparaisse comme un répertoire de cette arborescence. La commande qui réalise ce “montage” est la commande … mount. 🙄
Pour que mount puisse fonctionner, il faut un répertoire d’accueil pour monter la partition. J’ai choisi de créer un répertoire /home/pi/freecom qui deviendra le point d’accès à la partition ext3 de mon disque dur Freecom.
sudo
mount
-t ext3 /dev/sda2
/home/pi/freecom
Si tout se passe bien… pas de message d’erreur, on peut vérifier si l’espace disque /dev/sda2 a bien été “monté” dans /home/pi/freecom.
La commande df indique l’espace disque utilisé et disponible sur le système de fichiers contenant chaque fichier donné en paramètre. Sans paramètre, l’espace disponible sur tous les systèmes de fichiers montés sera affiché (c’est le cas ici)
Une autre façon de voir les choses est de dire que cette commande permet de connaître l’emplacement des partitions utilisables sur votre système et les capacités restantes sur chacune d’elles.
On voit bien que /dev/sda2 a été montée sur /home/pi/freecom, qu’elle n’est occupée qu’à 1%, et comporte 192 243 960 blocs de 1K. (comme le K informatique fait 1024 ! On n’est pas loin du compte).
Pour tester la disponibilité réelle de cet espace nouvellement ajouté, je décide de copier tout ce qu’il y a dans /etc vers cet emplacement
Ma foi… pas de protestation ! Comme toujours en Linux : “Qui ne dit mot consent”, donc si la framboise314 ne vous insulte pas, c’est que tout s’est bien passé !
Pour contrôler que tout s’est vraiment bien passé (pfff vous n’avez vraiment pas confiance !), listez le contenu de /home/pi/freecom, il doit être identique à celui de /etc.
ls
-al /home/pi/freecom
Rassuré(e) ?
Démontage d’une partition
De la même manière que vous avez dû “monter” la partition pour pouvoir utiliser l’espace disponible, il va falloir la “démonter” avant de débrancher le disque sinon….
Si le démontage de partition ne fonctionne pas, c’est qu’il y a encore un fichier ouvert ou qu’un processus l’utilise pour son répertoire de travail. Débrancher brutalement le disque externe peut conduire à des pertes de données !
sudo
umount
/dev/sda2
Démontera la partition sda2. Faites de même pour les autres partitions si nécessaire. Aujourd’hui on démonte le répertoire dans lequel la partition est montée :
sudo
umount
/home/pi/freecom
Mais j’ai mes habitudes….
Montage automatique d’une partition
C’est dans le fichier fstab que ça se passe (File System Table). Ouvrez le fichier avec nano par exemple,sudo
nano /etc/fstab
et ajoutez la ligne suivante :
/dev/sda2 /home/pi/freecom ext3 defaults 0 3
Cela montera la partition /dev/sda2, de type ext3 dans le répertoire /home/pi/freecom avec les paramètres par défaut. Le 0 pour dire à dump de ne pas faire de backup de cette partition, le 3 indique l’ordre dans lequel la partition sera vérifiée par fsck.
Test du montage automatique de partition
Dernier test : Redémarrez le Raspberry Pi et allez vérifier que dans le répertoire /home/pi/freecom vous retrouvez les données que vous y avez copiées. Cela signifie que votre partition s’est montée de façon automatique et qu’il n’y a pas d’erreur dans la ligne que vous avez ajoutée à /etc/fstab.
2 Copie et montage du disque dur
Tout d’abord, si votre disque dur est connecté à votre framboise314, et que vous l’utilisez déjà sous Linux, il va falloir démonter la partition que vous réservez pour en faire un RFS.
Sinon, créez la structure nécessaire au fonctionnement sous Linux. Dans mon cas c’est /dev/sda2 que j’ai réservé à cet usage.
sudo
umount
/dev/sda2
Ma partition /dev/sda2 était montée dans /home/pi/freecom, le umount la démonte, ce que confirme le df…
Transférer le ROOT FILE SYSTEM
Maintenant nous allons copier le Root File System présent dans /dev/mmcblk0p2, dans la partition ext4 de la carte SD. On pourrait penser utiliser cp, mais on va se heurter à des problèmes avec les droits. Il vaut mieux utiliser la méthode radicale qui est de copier secteur par secteur avec dd, brutalement, sans se préoccuper du contenu (c’est du Hard Copy !). Je vous rappelle que dd écrase sans espoir de retour les données qui sont dans of… Vérifiez bien (plusieurs fois) que vous avez passé les bons paramètres à la commande dd ! En particulier le nom de la partition de destination.
sudo
dd
if
=
/dev/mmcblk0p2
of=
/dev/sda2
bs=512
En clair : copie tout ce qui est dans la carte SD vers la partition sda2 du disque dur, par blocs de 512 octets (bs=block size).
Si je remonte la partition d’origine (souvenez vous, elle était formatée en ext3 !) sur /home/pi/freecom : le système proteste… C’est bon signe, puisque dd doit avoir écrasé la partition d’origine (en ext3) par la RFS de la carte SD (en ext4).
Par contre aucun problème pour monter cette partition en précisant le type (-t) ext4. Un ls confirme que les données d’origine (dans mon cas c’était une copie de /etc) ont bien été remplacées par le RFS de la carte SD (on reconnait l’arborescence de base de LINUX).
- Pour commencer faites une copie du fichier qui pourra être restaurée le cas échéant
sudo cp /boot/cmdline.txt /boot/cmdline.txt.bak
Il nous reste encore un ou deux détails à régler pour que tout ça fonctionne.
Modification du fichier cmdline.txt
Modifions à présent le fichier cmdline pour indiquer sur quel disque booter.
- Pour commencer faites une copie du fichier qui pourra être restaurée le cas échéantsudo cp /boot/cmdline.txt /boot/cmdline.txt.bak
2. A présent, éditez le fichiersudo nano /boot/cmdline.txt
3. Recherchez PARTUUID et remplacez l’ID de la carte SD par celui que nous venons de créer pour le SSD
4 Enfin terminez en enregistrant la modification avec la combinaison de touches control + x puis Yes.
5 Maintenant, il est temps de rebooter le Rpisudo reboot
6. Effectuez un ping du Raspberry pi pour vérifier qu’il a correctement démarré. Si toutefois, le raspberry pi ne ping pas, c’est qu’il y a une erreur dans la modification du fichier cmdline.txt. Heureusement nous avons effectué une sauvegarde juste avant, il est alors possible de restaurer cette sauvegarde en connectant la carte SD à un PC.
7 Après le redémarrage, vérifiez la bonne prise en compte du paramètrage avec la commande suivante.findmnt -n -o SOURCE /
8 A présent, il faut ouvrir le fichier fstabsudo nano /etc/fstab
9 Nous allons modifier le PARTUUID de la seconde ligne pour pointer vers notre disque SSD, tout simplement en indiquant l’ID du disque SSD que nous avons indiqué dans les premières étapes.
10 Maintenant, il est temps de rebooter le Rpi une nouvelle fois.sudo reboot