Processus de démarrage Raspbian et la table de partition


13

Avez-vous une bonne description du processus de démarrage du Raspberry Pi et de la structure de la partition de disque?

Qu'est-ce qui est stocké sur chaque partition (et pourquoi)?

Le RPI démarre-t-il à partir de la carte SD (secteur zéro) ou le micrologiciel lit-il à partir de la structure du disque?

Je suppose qu'étant créé par NOOBS en copiant quelques fichiers sous n'importe quel O / S, le micrologiciel RPI connaît la structure du disque MS-DOS (de haut niveau) et trouve sa place dans la mémoire SD.

Je veux cloner une bonne carte SD sur une carte SD plus grande pour étendre l'espace disponible.
Puis-je créer et partitionner une nouvelle SD et simplement DD chaque partition sur le nouveau périphérique? Quelles partitions sont nécessaires?

La 'linux'partition sur le nouveau périphérique doit être plus grande que l'original, puis étendre l'espace disque?

Peut-être cloner dans une nouvelle carte et étendre uniquement la dernière partition (p6) pour utiliser l'espace disponible, mais je ne veux pas utiliser une méthode d'essai et d'erreur, j'aimerais savoir comment et pourquoi.

Pourquoi ma question?

La plupart des cartes SD RPI ont deux partitions (fdisk), peut-être lorsqu'elles sont installées à partir d'un .img

Device         Boot  Start      End  Sectors  Size Id Type
/dev/mmcblk0p1        2048   155647   153600   75M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      157696 15351807 15194112  7.3G 83 Linux

Cependant, j'en ai une avec pas moins de 6 partitions, c'est la structure héritée de NOOBS.

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            8192     1675781      833795    e  W95 FAT16 (LBA)
/dev/mmcblk0p2         1679360    15499263     6909952   85  Linux extended
/dev/mmcblk0p3        15499264    15564799       32768   83  Linux
/dev/mmcblk0p5         1687552     1810431       61440    c  W95 FAT32 (LBA)
/dev/mmcblk0p6         1818624    15499263     6840320   83  Linux

Je pense que quelque chose ne va pas avec cette photo. Deux partitions W95?

Je souhaite cloner uniquement les bonnes partitions sur une nouvelle carte. Je dois beaucoup travailler sur cette SD en cours d'exécution pour tout recommencer! (BTW j'ai quelques bonnes sauvegardes).

Quelques notes.

Cloison p1

-rwxr-xr-x 1 root root  18K 2015-03-09 04:45 bootcode.bin
-rwxr-xr-x 1 root root 2.2K 2015-03-09 04:45 INSTRUCTIONS-README.txt
drwxr-xr-x 4 root root  32K 2015-03-09 04:45 os
...
-rwxr-xr-x 1 root root 542K 2015-03-09 04:45 recovery.elf
-rwxr-xr-x 1 root root    0 2015-03-09 04:45 RECOVERY_FILES_DO_NOT_EDIT
-rwxr-xr-x 1 root root 2.1M 2015-03-09 04:45 recovery.img
-rwxr-xr-x 1 root root  20M 2015-03-09 04:45 recovery.rfs
-rwxr-xr-x 1 root root 9.5K 2015-03-09 04:45 riscos-boot.bin
drwxr-xr-x 2 root root 8.0K 2015-12-05 18:13 System Volume Information

Cloison p2

mount: /dev/mmcblk0p2: can't read superblock

Cloison p3

-rw-r--r-- 1 root root 274 1969-12-31 19:18 installed_os.json
drwx------ 2 root root 12K 1969-12-31 19:00 lost+found
-rw-r--r-- 1 root root  86 1969-12-31 19:18 noobs.conf

La partition p4n'existe pas.

Partition p5:

-rwxr-xr-x 1 root root 9.7K 2015-12-01 20:17 bcm2708-rpi-b.dtb
...
-rwxr-xr-x 1 root root  18K 2015-12-01 20:17 bootcode.bin
-rwxr-xr-x 1 root root  120 1979-12-31 19:00 cmdline.txt
-rwxr-xr-x 1 root root 1.5K 2015-11-23 09:01 config.txt
-rwxr-xr-x 1 root root  19K 2015-10-14 05:43 COPYING.linux
...
-rwxr-xr-x 1 root root 9.5K 2015-12-01 20:17 fixup_x.dat
-rwxr-xr-x 1 root root  137 2015-02-16 09:57 issue.txt
-rwxr-xr-x 1 root root 3.9M 2015-12-01 20:17 kernel7.img
...
-rwxr-xr-x 1 root root 591K 2015-12-01 20:17 start_cd.elf
...

Partition p6(la vraie partition raspbian )

drwxr-xr-x   2 root     root     4.0K 2015-07-28 21:40 bin
drwxr-xr-x   2 root     root     4.0K 2015-02-15 09:09 boot
drwxr-xr-x 119 root     root     4.0K 2015-12-23 15:36 etc
drwxr-xr-x   4 root     root     4.0K 2015-12-19 20:53 home
drwxr-xr-x  15 root     root     4.0K 2015-12-20 22:08 lib
drwx------   2 root     root      16K 2015-02-15 06:21 lost+found
....
drwxr-xr-x  12 root     root     4.0K 2015-11-04 15:18 var

Vous ne pouvez avoir qu'un maximum de quatre partitions «principales» et si vous avez besoin de plus que ce nombre total de partitions, une doit devenir (comme l' p2a fait) une partition étendue - dans ce cas, une partition «Linux» et c'est un conteneur pour le reste celles nécessaires au-dessus de 4 - et il existe plusieurs façons d'organiser ces partitions «logiques» à l'intérieur de la partition étendue.
SlySven

Réponses:


6

Mon résultat final pour migrer vers une carte SD plus grande sur un paramètre noobs, est le suivant.

Je sauvegarde l'image en direct d'origine sur un disque externe temporaire, partagé avec une boîte Windows, une clé USB de rechange le fera.

dd if=/dev/mmcblk0 of=~/backup.img

vous pouvez également sauvegarder avec win32DiskImager, puis, j'ai gravé l'image sur une carte SD plus grande (je suis passée de 8 à 16 Go) cette fois, en utilisant win32DiskImager.

J'ai démarré la SD nouvellement créée. À ce stade, la SD conservait toujours les mêmes partitions, primaires, étendues et logiques. Le démarrage devrait donc fonctionner en douceur.

En utilisant

fdisk /dev/mmcblk0

Prenez une capture d'écran en direct de la table de partition actuelle à l'aide de la pcommande.

Supprimez la partition inutilisée et inutile # 3 (p3) située à la fin du «disque» physique (après la partition étendue # 2) avec d.

Ensuite, supprimez courageusement la partition # 2 (p2), la partition logique imbriquée disparaîtra également.

Recréez la partition étendue # 2, mais maintenant, en utilisant tout l'espace disponible.
Pour recréer # 2, utilisez le même secteur d'origine de départ très précis et laissez fdiskvous donner le secteur de fin. Utilisez pvérifier et que le type est de type étendu '85' et que le nouveau secteur final est en effet plus grand que l'original.

Recréez les deux partitions logiques précédentes: commencez par la partition logique n ° 5 (p5); pour le secteur de départ, utilisez le secteur exact de la capture d'écran précédente, de même que le secteur de fin (ce disque logique ne grandira pas), utilisez tpour définir l'ID sur c(MS-DOS). Ensuite, recréez la partition # 6 (p6) avec le même secteur de départ qu'auparavant mais avec le secteur de fin sélectionné par fdisket p' id83`.

Vérifiez vos entrées avec pet si et seulement si, semble correct, écrivez simplement la table de partition avec wsinon juste ^ C et recommencez.

Redémarrez et croisez les doigts. Raspbian peut redémarrer deux fois.

Ensuite, développez simplement le système de fichiers avec

resize2fs /dev/mmcblk0p6

C'est le résultat final, maintenant avec 8 Go supplémentaires!

 Device Boot             Start         End      Blocks   Id  System
/dev/mmcblk0p1            8192     1675781      833795    e  W95 FAT16 (LBA)
/dev/mmcblk0p2         1679360    30703615    14512128   85  Linux extended
/dev/mmcblk0p5         1687552     1810431       61440    c  W95 FAT32 (LBA)
/dev/mmcblk0p6         1818624    30703615    14442496   83  Linux

Donc, maintenant mon secteur final est de 14 442 496 au lieu de 6 840 320.

The Boot

Je sais que ce sujet est ailleurs, mais c'est bon à savoir.

Raspberry a deux processeurs embarqués: le GPU (Graphic Processing Unit) et l'ARM, chacun avec une tâche différente. Le GPU partage la mémoire avec l'ARM, un processeur RISC (Reduced Instruction Set Computer) à usage général très efficace, exécutant un jeu d'instructions standard de l'industrie. Le tout sur un BCM2835 'SoC' (System on a Chip)

Lors de la mise sous tension, le contrôle est d'abord donné au GPU, seul le noyau, à la fin du processus de démarrage, s'exécutera sur le processeur ARM.

Lors de la première étape, le GPU exécutera le micrologiciel de la ROM sur puce pour le charger bootcode.bindans la mémoire cache L2 et passer le contrôle. bootcode.binva activer la carte SD, activer la SDRAM et utiliser la première partition MS-DOS pour rechercher, charger et exécuter «start.elf».

À ce stade, les fichiers suivants sont pris en compte par bootcode.binla première partition MS-DOS sur la carte SD:

/boot/config.txt,  
/boot/cmdline.txt  (kernel parameters)
/boot/bcm????-rpi-*.dtb  (device dependent) 

Il existe un bon nombre d'options personnalisables config.txt. Vous pouvez éditer le fichier de montage du SD sur un ordinateur externe ou simplement éditer sur une unité en cours d'exécution:

nano /boot/config.txt

Les changements typiques sur config.txt sont liés à l' overclock , au HDMI , à la taille de l'écran , à l' aspect , à la caméra , à votre adresse MAC, etc.

nano cmdline.txt
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p6 rootfstype=ext4 elevator=deadline rootwait

Comme vous pouvez le voir, la partition de démarrage désignée, où kernel.imgdémarrera est / dev / mmcblk0p6 et il s'agit de la deuxième partition requise sur votre carte SD, formatée en 'ext4' (Linux ou Id '83' dans le jargon fdisk).

Enfin, start.elfva charger et exécuter kernel.img, votre noyau Linux.

Vous pouvez (devriez?) Mettre à jour le noyau avec rpi-update; sinon juste apt-get install rpi-update).

note: le sudopréfixe a été supprimé par souci de concision.


3

Si vous utilisez Google pour le processus de démarrage de Raspberry PI, vous en trouverez beaucoup, y compris quelle est la séquence de démarrage? (il y a eu quelques changements mineurs).

What is stored on each partition (and why)? Cela varie en fonction de la configuration et de la distribution utilisée.

Does the RPI boot from the SD card (sector zero) or the firmware reads from the disk structure? Non.

Can I create and partition a new SD and just DD each partition to the new device? Oui. Bien qu'il soit préférable de cloner la carte et d'étendre la partition.

Most RPI SD cards have two (fdisk) partitions, perhaps when installed from a .img Alors que Raspbian le fait, la partition FAT32 commence normalement à 8192, ce qui est idéal pour les cartes SD. (Les partitions doivent être situées sur la limite du groupe de blocs d'effacement 4M.)

However I have one with as many as 6 partitions, some overlapping other sectors, perhaps this is the structure when started/inherited from NOOBS. Vous devez comprendre les partitions étendues. Essayez le wiki.


L'accent sur ma question est de savoir quelles partitions sont nécessaires et quelles partitions ne le sont pas lors de l'extension de l'espace disque sur la carte SD d'un NOOBS.
fcm

1
Vous en avez tous besoin. Vous pouvez supprimer certains fichiers de la partition de récupération. La conversion de NOOBS en Raspbian standard peut être effectuée, mais nécessite un peu (en fait un peu) de violon. Vous POUVEZ utiliser le Raspbian (p6) avec des modifications minimales (vers / etc / fstab) avec une partition de démarrage Raspbian FAT32 standard.
Milliways
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.