Processo di avvio di Raspbian e tabella delle partizioni


13

Qualche buona descrizione del processo di avvio di Raspberry Pi e della struttura della partizione del disco?

Cosa è memorizzato su ogni partizione (e perché)?

L'RPI si avvia dalla scheda SD (settore zero) o il firmware legge dalla struttura del disco?

Suppongo che essendo NOOBS creato copiando alcuni file in qualsiasi O / S, il firmware RPI sia a conoscenza della struttura del disco MS-DOS (di alto livello) e trovi la strada nella memoria SD.

Voglio clonare una buona scheda SD su una scheda SD più grande per estendere lo spazio disponibile.
Posso creare e partizionare una nuova SD e semplicemente DD ogni partizione sul nuovo dispositivo? Quali partizioni sono necessarie?

La 'linux'partizione sul nuovo dispositivo deve essere più grande dell'originale e quindi estendere lo spazio su disco?

Forse clonare in una nuova scheda ed estendere solo l'ultima partizione (p6) per utilizzare lo spazio disponibile, ma non voglio usare un metodo di prova ed errore, mi piacerebbe sapere come e perché.

Perché la mia domanda?

La maggior parte delle schede SD RPI hanno due partizioni (fdisk), forse se installate da 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

Tuttavia ne ho uno con ben 6 partizioni, questa è la struttura ereditata da 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

Penso che qualcosa non vada in questa immagine. Due partizioni W95?

Mi piacerebbe clonare solo le partizioni giuste su una nuova carta. Devo lavorare molto su questa SD in esecuzione per ricominciare tutto da capo! (A proposito ho qualche buon backup).

Alcune note

Partizione 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

Partizione p2

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

Partizione 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 partizione p4non esiste.

Partizione 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
...

Partizione p6(la vera partizione 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

Puoi avere solo un massimo di quattro partizioni 'primarie' e se hai bisogno di più di quel numero totale di partizioni devi diventare (come p2ha) una partizione estesa - in questo caso una "Linux" ed è un contenitore per il rimanente quelli necessari sopra 4 - e c'è più di un modo per organizzare quelle partizioni "logiche" all'interno di quella estesa.
SlySven,

Risposte:


6

Il mio risultato finale per migrare su una scheda SD più grande con un'impostazione noobs è il seguente.

Eseguo il backup dell'immagine live originale su un'unità esterna temporanea, condivisa con una finestra di Windows, una memory stick di riserva lo farà.

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

puoi anche fare il backup con win32DiskImager, quindi questa volta ho masterizzato l'immagine su una scheda SD più grande (sono passato da 8 a 16 GB), usando win32DiskImager.

Ho avviato la SD appena creata. A questo punto, la SD ha mantenuto le stesse partizioni, primarie, estese e logiche. Quindi l'avvio dovrebbe funzionare senza problemi.

utilizzando

fdisk /dev/mmcblk0

Effettua uno screenshot live della tabella delle partizioni corrente usando il pcomando

Eliminare la partizione n. 3 (p3) non utilizzata e non necessaria situata alla fine del "disco" fisico (dopo la partizione estesa n. 2) con d.

Successivamente, coraggiosamente elimina la partizione n. 2 (p2), svanirà anche la partizione logica nidificata.

Ricrea la partizione estesa n. 2, ma ora, usando tutto lo spazio disponibile.
Per ricreare il n. 2, utilizza lo stesso settore originale di inizio esatto e lascia fdiskche ti dia il settore finale. Utilizzare pverifica e che il tipo sia esteso digitare '85' e che il nuovo settore finale sia effettivamente più grande dell'originale.

Ricrea le due partizioni logiche precedenti: inizia con la partizione logica # 5 (p5); per il settore iniziale usa il settore esatto dello screenshot precedente, lo stesso con il settore finale (questo disco logico non crescerà), usa tper impostare l'id su c(MS-DOS). Quindi, ricreare la partizione n. 6 (p6) con lo stesso settore iniziale di prima ma con il settore finale selezionato da fdiske p' id83`.

Verifica le voci con pe se e solo se, sembra ok basta scrivere la tabella delle partizioni con waltrimenti solo ^ C e ricominciare.

Riavvia e incrocia le dita. Raspbian potrebbe riavviarsi due volte.

Quindi basta espandere il file system con

resize2fs /dev/mmcblk0p6

Questo è il risultato finale, ora con 8 GB in più!

 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

Quindi, ora il mio settore finale è 14.442.496 da 6.840.320.

Lo stivale

So che questo argomento è altrove, tuttavia questo è buono a sapersi.

Raspberry ha due processori integrati: la GPU (Graphic Processing Unit) e ARM, ognuno con un compito diverso. La GPU condivide la memoria con ARM, un processore RISC (Reduced Instruction Set Computer) per uso generale molto efficiente, che esegue un set di istruzioni standard del settore. Tutto racchiuso in un "SoC" BCM2835 (System on a Chip)

All'accensione, il controllo viene prima assegnato alla GPU, solo il kernel, alla fine del processo di avvio, verrà eseguito sul processore ARM.

Nella prima fase, la GPU eseguirà il firmware della ROM su chip per caricarlo bootcode.binnella memoria cache L2 e passare il controllo. bootcode.binabiliterà la scheda SD, abiliterà SDRAM e utilizzerà la prima partizione MS-DOS, per trovare, caricare ed eseguire 'start.elf'.

A questo punto, i seguenti file vengono considerati dalla bootcode.binprima partizione MS-DOS sulla scheda SD:

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

Esistono numerose opzioni su cui è possibile personalizzare config.txt. Puoi modificare il file montando la SD su un computer esterno o semplicemente modificarlo su un'unità in esecuzione:

nano /boot/config.txt

Le modifiche tipiche su config.txt sono relative a overclock , HDMI , dimensioni dello schermo , aspetto , fotocamera , impostazione dell'indirizzo MAC, ecc.

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

Come puoi vedere, la partizione di avvio designata, dove kernel.imgverrà avviato è / dev / mmcblk0p6 e questa è la seconda partizione richiesta sulla tua scheda SD, formattata come 'ext4' (Linux o Id '83' in fdisk lingo).

Infine, start.elfcaricherà ed eseguirà il kernel.imgtuo kernel Linux.

Puoi (dovresti?) Aggiornare il kernel con rpi-update; se non proprio lì apt-get install rpi-update).

nota: il sudoprefisso cancellato per brevità.


3

Se vai su Google per il processo di avvio di Raspberry PI, ne troverai molti, tra cui Qual è la sequenza di avvio? (ci sono stati alcuni piccoli cambiamenti).

What is stored on each partition (and why)? Questo varia in base alla configurazione e alla distribuzione utilizzata.

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

Can I create and partition a new SD and just DD each partition to the new device? Sì. Anche se potresti essere meglio clonare la scheda ed espandere la partizione.

Most RPI SD cards have two (fdisk) partitions, perhaps when installed from a .img Mentre Raspbian lo fa, la partizione FAT32 inizia normalmente a 8192, che è l'ideale per le schede SD. (Le partizioni dovrebbero trovarsi sul confine di Erase Block Group 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. È necessario comprendere le partizioni estese. Prova Wiki.


Il focus sulla mia domanda è quali partizioni sono necessarie e quali non lo sono quando si espande lo spazio su disco su una SD di NOOBS.
fcm

1
Ne hai bisogno tutti. È possibile eliminare alcuni dei file sulla partizione di ripristino. La conversione di NOOBS a Raspbian standard può essere fatta, ma richiede un po '(in realtà un bel po') di manipolazione. È possibile utilizzare Raspbian (p6) con modifiche minime (in / etc / fstab) con una partizione di avvio Raspbian FAT32 standard.
Milliways,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.