{{tag>tutoriel}} ====== Raspberry Pi : Installation du système du Raspberry Pi sur un disque USB ====== L'utilisation d'un disque dur permet : * d'installer sur le disque le système du Raspberry Pi * d'y créer : * une partition de swap * une zone d'échange ext4 avec le monde linux * et une zone d'échange ntfs avec le monde Windows. Les partitions sont repérées comme au paragraphe [[#Première étape : partitionnement]]. Seule la partition de démarrage de Raspbian et celle de BerryBoot doivent impérativement résider sur la carte SD. Cela économise la carte SD qui ne comporte plus que le boot et peut être mise en mode lecture seule. ===== Pré-requis ===== ===== Première étape : partitionnement ===== Partitionnez le disque pour obtenir une partition ext4 assez grande pour contenir la partition racine actuelle. Le plan de partitionnement proposé ici comporte : - Une partition Linux **ext4** de 100 Go : **système du R-Pi**, stockage de fichiers, de vidéos... - Une partition **ntfs** pour pouvoir échanger des fichiers avec des machines équipées en Windows. #---------------------#------------------------------------------------------------------------# |[sys] |[partage] | |Système du R-Pi |Partition partagée | | - ext4 | - ntfs | | - 100 Go | - le reste du disque | #---------------------#------------------------------------------------------------------------# [sys]: {"fill":"#5555BB","a2s:delref":true} [partage]: {"fill":"#99DD99","a2s:delref":true} Branchez le disque USB sur un PC. ==== Graphiquement, avec gparted ==== Ouvrez **gparted**. Partitionnez le disque pour obtenir une partition ext4 assez grande pour contenir la partition racine actuelle. Voici un exemple de préparation d'un disque externe avec gparted : {{ tutoriel:disque:raspi:systeme:disque_raspi_systeme-01.png?600 |}} Ici, le disque USB est en **/dev/sdh** avec ses partitions : * **/dev/sdh1**, créée pour la racine du Raspberry Pi, formatée en ext4. * les autres sont modifiées pour lui faire de la place ==== En ligne de commande (si on n'a pas d'accès graphique) ==== voir [[logiciel:disques:partitions:cfdisk:start]] ===== Autres étapes ===== ==== Transfert du Root file system ==== Nous allons déplacer sur un disque dur USB la partition racine de l'installation Raspbian existante pour améliorer les performances et préserver la carte SD. Seul **boot** doit résider sur la carte SD. Branchez le disque usb sur le Raspberry Pi. Repérez les partitions : pi@framboise:~ $ sudo blkid /dev/mmcblk0p1: LABEL="RECOVERY" UUID="4410-7BB7" TYPE="vfat" PARTUUID="d25b6342-01" /dev/mmcblk0p3: LABEL="SETTINGS" UUID="b089fc95-75de-464f-8700-dc9cf62be0b9" TYPE="ext4" PARTUUID="d25b6342-05" /dev/mmcblk0p5: LABEL="BOOT" UUID="5172-B45E" TYPE="vfat" PARTUUID="d25b6342-06" /dev/mmcblk0p6: LABEL="root" UUID="4051e5cf-3f44-4459-890f-de6d77c01f15" TYPE="ext4" PARTUUID="c0965f47-06" /dev/sda1: UUID="8528...|" TYPE="ext4" PARTUUID="c0965f47-01" /dev/sda2: LABEL="Rpi-data" UUID="422f3716-add7-48ed-a427-32e60109cc2e" TYPE="ext4" PARTUUID="c0965f47-07" /dev/sda3: LABEL="Reservoirs" UUID="fd152153-c344-4f58-b9cd-5dee43091f5d" TYPE="ntfs" PARTUUID="c0965f47-05" On voit : * les partitions de la carte sd : * /dev/mmblk0p1 : "recovery" en FAT = sauvegarde du système tel que fourni au départ * /dev/mmblk0p3 : "settings", en ext4 = réglages * /dev/mmblk0p5 : "boot", en FAT = le boot de NOOBS * **/dev/mmblk0p6 : "root", en ext4 = la partition à déplacer sur le disque** * les partitions de notre disque dur : * **/dev/sda1 : la partition que nous avons préparée** * /dev/sda2 et suivantes : les autres partitions Pour transférer le système, commençons par vérifier les montages par : pi@framboise:~ $ sudo df -h Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur rootfs 36G 12G 23G 33% / /dev/mmcblk0p6 36G 12G 23G 33% / devtmpfs 458M 0 458M 0% /dev tmpfs 462M 13M 450M 3% /run tmpfs 5,0M 4,0K 5,0M 1% /run/lock tmpfs 462M 0 462M 0% /run/shm /dev/mmcblk0p5 66M 22M 45M 32% /boot /dev/mmcblk0p3 30M 444K 28M 2% /media/SETTINGS /dev/sda1 30M 434K 28M 2% /media/8528... /dev/sda2 99G 2,2G 92G 3% /media/Rpi-data /dev/sda3 94G 21G 69G 23% /media/Reservoirs La partition /dev/mmblk0p6 est la racine (**/dev/root = rootfs**), montée en **/** On retrouve : ^partition^montée en^ |/dev/mmblk0p5|/boot| |/dev/mmblk0p6|/| |/dev/sda1|/media/XXXX...| La partition /dev/mmblk0p6 est la racine (**/dev/root = rootfs**), montée en **/** Affichez le fichier /boot/cmdline.txt : pi@framboise:~ $ cat /boot/cmdline.txt dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p6 rootfstype=ext4 elevator=deadline rootwait L'élément à repérer est **root=/dev/mmblk0p6** : pour l'instant, la racine utilisée est /dev/mmblk0p6, sur la carte SD. Nous allons la remplacer par /dev/sda1 Commençons par copier cette partition sur celle du disque : Démontez la partition du disque et faites la copie : pi@framboise:~ $ sudo umount /dev/sda1 pi@framboise:~ $ pv /dev/mmblk0p6 | sudo dd of=/dev/sda1 bs=4M Maintenant, il faut rediriger le boot vers le disque. Éditez avec les droits d'administration le fichier **dev/mmblk0p5/cmdline.txt** pour remplacer **root=/dev/mmblk0p6** par **root=/dev/sda1** Cas particulier : écriture directe de Raspbian sur la carte SD sans BerryBoot Dans **/dev/mmcblk0p1**, modifier les paramètres de **cmdline.txt** pour signifier au noyau que le Root File System se trouve sur /dev/sda2. Éditez avec les droits d'administration le fichier **/boot/cmdline.txt** pour remplacer **root=/dev/mmcblk0p2** par **root=/dev/sda2** ==== Sur le disque : paramétrage du fichier fstab ==== Éditez avec les droits d'administration le fichier **/dev/sda2/etc/fstab** pour : * dupliquer la ligne de la carte SD (ici, commençant par /dev/mmcblk0p6) * commenter la première (ajouter un # au début de la ligne), * modifier l'autre en remplaçant la carte SD par le disque * mettre la carte SD en Read Only (ro) puisqu’on ne fait que lire les fichiers qui s’y trouvent pour les charger en mémoire. Comme la carte est limitée en nombre d’écritures mais pas en nombre de lectures, vous voici tranquille pour un moment. De plus une cinquantaine de Mo suffisent pour /dev/mmcblk0p5, ce qui fait que vous pouvez réutiliser une vieille carte SD de 1GO sans problème. Il s’agit ici du fichier fstab qui se trouve dans la partition /dev/sda2, pas de celui qui est sur la carte SD (/dev/mmcblkop2) /dev/mmcblk0p5 /boot vfat defaults 0 2 #/dev/mmcblk0p6 / ext4 defaults,noatime 0 1 /dev/sda1 / ext4 defaults,noatime 0 1 Redémarrez le Raspberry PI : pi@framboise:~ $ sudo reboot Si tout se passe bien il démarre comme d’habitude, mais depuis le disque. Notez que vous ne perdrez pas de données ; si les choses tournent mal, il suffit de modifier à nouveau le fichier **/boot/cmdline.txt** sur un ordinateur pour démarrer de nouveau à partir de la carte SD. ==== Étendre le Root file system ==== Le rootfs (partition /dev/sda1) ne fait que 1.8Go, car c'est la copie de la carte SD... L'étendre avec resize2fs pour qu'il occupe tout l’espace disponible : pi@framboise:~ $ sudo resize2fs /dev/sda1 Résultat : le rootfs (partition /dev/sda2) a été agrandi. ===== Conclusion ===== ===== Problèmes connus ===== ===== Voir aussi ===== * **(fr)** [[https://www.framboise314.fr/booter-le-raspberry-pi-sur-un-disque-dur-usb/]] * **(en)** [[http://zeroset.mnim.org/2012/10/03/move-an-existing-raspbian-installation-from-memory-sd-card-to-usb-flash-drive-stick/]] ---- //Basé sur << [[https://www.framboise314.fr/booter-le-raspberry-pi-sur-un-disque-dur-usb/|Pitié pour la carte SD de votre framboise314 : Bootez sur un disque dur USB]] >> par François Mocq.//