¿Alguna buena descripción del proceso de arranque de Raspberry Pi y la estructura de partición del disco?
¿Qué se almacena en cada partición (y por qué)?
¿El RPI arranca desde la tarjeta SD (sector cero) o las lecturas de firmware desde la estructura del disco?
Supongo que al ser NOOBS creado copiando algunos archivos bajo cualquier O / S, el firmware RPI conoce la estructura del disco MS-DOS (de alto nivel) y encuentra su camino en la memoria SD.
Quiero clonar una buena tarjeta SD en una tarjeta SD más grande para ampliar el espacio disponible.
¿Puedo crear y particionar una nueva SD y solo DD cada partición al nuevo dispositivo? ¿Qué particiones son necesarias?
¿La 'linux'
partición en el nuevo dispositivo será más grande que la original y luego extenderá el espacio en disco?
Tal vez clone en una nueva tarjeta y extienda solo la última partición (p6) para usar el espacio disponible, pero no quiero usar un método de prueba y error, me gustaría saber cómo y por qué.
¿Por qué mi pregunta?
La mayoría de las tarjetas SD RPI tienen dos particiones (fdisk), tal vez cuando se instalan desde 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
Sin embargo, tengo uno con hasta 6 particiones, esta es la estructura heredada 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
Creo que hay algo mal con esta imagen. ¿Dos particiones W95?
Me gustaría clonar solo las particiones correctas en una nueva tarjeta. ¡Tengo que trabajar mucho en esta SD en ejecución para comenzar de nuevo! (Por cierto, tengo algunas buenas copias de seguridad).
Algunas notas.
Dividir 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
Dividir p2
mount: /dev/mmcblk0p2: can't read superblock
Dividir 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 partición p4
no existe.
Partición 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
...
Partición p6
(la verdadera partición 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
p2
ha hecho) en una partición extendida, en este caso una "Linux" y es un contenedor para el resto los necesarios por encima de 4, y hay más de una forma de organizar esas particiones 'lógicas' dentro de la extendida.Respuestas:
Mi resultado final para migrar a una tarjeta SD más grande en una configuración de noobs, es el siguiente.
Realizo una copia de seguridad de la imagen en vivo original en un disco externo temporal, compartido con un cuadro de Windows, una memoria extra lo hará.
También puede hacer una copia de seguridad con win32DiskImager, luego, quemé la imagen en una tarjeta SD más grande (pasé de 8 a 16 GB) esta vez, usando win32DiskImager.
Arranqué la SD recién creada. En este punto, el SD aún conservaba las mismas particiones, primarias, extendidas y lógicas. Entonces el arranque debería funcionar sin problemas.
Utilizando
Tome una captura de pantalla en vivo de la tabla de particiones actual con el
p
comandoElimine la partición no utilizada e innecesaria # 3 (p3) ubicada al final del 'disco' físico (después de la partición extendida # 2) con
d
.A continuación, elimine valientemente la partición n. ° 2 (p2), la partición lógica anidada también desaparecerá.
Recree la partición extendida # 2, pero ahora, usando todo el espacio disponible.
Para recrear el n. ° 2, use exactamente el mismo sector original inicial y deje
fdisk
que le proporcione el sector final. Utilicep
verificar y que el tipo es extendido tipo '85' y que el nuevo sector final es de hecho más grande que el original.Recree las dos particiones lógicas anteriores: comience con la partición lógica # 5 (p5); para el sector inicial, use el sector exacto de la captura de pantalla anterior, igual que el sector final (este disco lógico no crecerá), use
t
para establecer la identificación enc
(MS-DOS). Luego, vuelva a crear la partición n. ° 6 (p6) con el mismo sector inicial que antes pero con el sector final seleccionado porfdisk
yp' id
83 '.Verifique sus entradas con
p
y si y solo si se ve bien, simplemente escriba la tabla de particiones con low
contrario solo ^ C y comience nuevamente.Reinicia y cruza los dedos. Raspbian puede reiniciarse dos veces.
Luego simplemente expanda el sistema de archivos con
Este es el resultado final, ¡ahora con 8 gb adicionales!
Entonces, ahora mi sector final es 14,442,496 de 6,840,320.
La bota
Sé que este tema está en otra parte, sin embargo, es bueno saberlo.
Raspberry tiene dos procesadores integrados: la GPU (Unidad de procesamiento gráfico) y el ARM, cada uno con una tarea diferente. La GPU comparte la memoria con el ARM, un procesador RISC (Computadora de conjunto de instrucciones reducido) de uso general muy eficiente, que ejecuta un conjunto de instrucciones estándar de la industria. Todo incluido en un BCM2835 'SoC' (Sistema en un Chip)
Al encender el control se le da primero a la GPU, solo el núcleo, al final del proceso de arranque, se ejecutará en el procesador ARM.
En la primera etapa, la GPU ejecutará el firmware ROM en el chip para cargarlo
bootcode.bin
en la memoria caché L2 y pasar el control.bootcode.bin
habilitará la tarjeta SD, la SDRAM y usará la primera partición de MS-DOS para buscar, cargar y ejecutar 'start.elf'.En este punto, los siguientes archivos son considerados por
bootcode.bin
la primera partición de MS-DOS en la tarjeta SD:Hay una buena cantidad de opciones que se pueden personalizar
config.txt
. Puede editar el archivo montando la SD en una computadora externa o simplemente editar en una unidad en funcionamiento:Los cambios típicos en config.txt están relacionados con overclock , HDMI , tamaño de pantalla , aspecto , cámara , configurar su dirección MAC, etc.
Como puede ver, la partición de arranque designada, donde
kernel.img
arrancará es / dev / mmcblk0p6 y esta es la segunda partición requerida en su tarjeta SD, formateada como 'ext4' (Linux o Id '83' en la jerga de fdisk).Finalmente,
start.elf
cargará y ejecutarákernel.img
su kernel de Linux.Puede (debería?) Actualizar el núcleo con
rpi-update
; si no solo allíapt-get install rpi-update
).nota: el
sudo
prefijo eliminado por brevedad.fuente
Si buscas en Google el proceso de arranque de Raspberry PI, encontrarás muchos, incluido ¿Cuál es la secuencia de arranque? (Ha habido algunos cambios menores).
What is stored on each partition (and why)?
Esto varía, dependiendo de cómo se configuró y qué distribución se usa.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?
Si. Aunque puede ser mejor clonar la tarjeta y expandir la partición.Most RPI SD cards have two (fdisk) partitions, perhaps when installed from a .img
Mientras que Raspbian lo hace, la partición FAT32 normalmente comienza en 8192, lo cual es ideal para tarjetas SD. (Las particiones deben ubicarse en el límite del Grupo de bloques de borrado 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.
Necesita comprender particiones extendidas. Prueba Wiki.fuente