Alguma boa descrição do processo de inicialização do Raspberry Pi e da estrutura da partição do disco?
O que é armazenado em cada partição (e por que)?
O RPI inicializa a partir do cartão SD (setor zero) ou o firmware lê da estrutura do disco?
Suponho que, sendo o NOOBS criado copiando alguns arquivos sob qualquer sistema operacional, o firmware do RPI conhece a estrutura de disco do MS-DOS (alto nível) e encontra o caminho para a memória SD.
Quero clonar um bom cartão SD para um cartão SD maior para aumentar o espaço disponível.
Posso criar e particionar um novo SD e apenas DD cada partição para o novo dispositivo? Quais partições são necessárias?
A 'linux'
partição no novo dispositivo deve ser maior que o original e aumentar o espaço em disco?
Talvez clone em um novo cartão e estenda apenas a última partição (p6) para usar o espaço disponível, mas eu não quero usar um método de tentativa e erro, gostaria de saber como e por quê.
Por que minha pergunta?
A maioria dos cartões RPI SD possui duas partições (fdisk), talvez quando instaladas a partir de um arquivo .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
No entanto, eu tenho um com até 6 partições, essa é a estrutura herdada do 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
Eu acho que algo está errado com essa imagem. Duas partições W95?
Eu gostaria de clonar apenas as partições corretas para um novo cartão. Eu tenho muito trabalho neste SD em execução para começar tudo de novo! (BTW eu tenho alguns bons backups).
Algumas notas.
Partição 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
Partição p2
mount: /dev/mmcblk0p2: can't read superblock
Partição 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
Partição p4
não existe.
Partição 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
...
Partição p6
(a partição raspbian real )
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
possui) uma partição estendida - neste caso, uma partição "Linux" e é um contêiner para as restantes aquelas necessárias acima de 4 - e há mais de uma maneira de organizar essas partições 'lógicas' dentro da extensão.Respostas:
Meu resultado final para migrar para um cartão SD maior em uma configuração de noobs é o seguinte.
Eu faço backup da imagem original ao vivo em uma unidade externa temporária, compartilhada com uma caixa do Windows; um cartão de memória sobressalente fará isso.
você também pode fazer backup com o win32DiskImager, então, gravei a imagem em um cartão SD maior (passei de 8 para 16 GB) dessa vez, usando o win32DiskImager.
Eu inicializei o SD recém-criado. Nesse ponto, o SD ainda mantinha as mesmas partições, primárias, estendidas e lógicas. Portanto, a inicialização deve funcionar sem problemas.
Usando
Faça uma captura de tela ao vivo da tabela de partição atual usando o
p
comandoExclua a partição não utilizada e desnecessária nº 3 (p3) localizada no final do 'disco' físico (após a partição estendida nº 2) com
d
.Em seguida, exclua bravamente a partição 2 (p2), a partição lógica aninhada também desaparecerá.
Recrie a partição estendida nº 2, mas agora, usando todo o espaço disponível.
Para recriar o número 2, use exatamente o mesmo setor original inicial e deixe
fdisk
-o fornecer o setor final. Usep
verifique e se o tipo é estendido, digite '85' e se o novo setor final é realmente maior que o original.Recrie as duas partições lógicas anteriores: comece com a partição lógica nº 5 (p5); para o setor inicial, use o setor exato da captura de tela anterior, igual ao setor final (este disco lógico não aumentará), use
t
para definir o ID comoc
(MS-DOS). Em seguida, recrie a partição nº 6 (p6) com o mesmo setor inicial que antes, mas com o setor final selecionado porfdisk
ep' id
83`.Verifique suas entradas com
p
e se e somente se, parece ok, basta escrever a tabela de partição comw
apenas ^ C e iniciar novamente.Reinicie e cruze os dedos. Raspbian pode reiniciar duas vezes.
Em seguida, basta expandir o sistema de arquivos com
Este é o resultado final, agora com 8GB extras!
Então, agora meu setor final é 14.442.496 de 6.840.320.
A bota
Eu sei que este tópico está em outro lugar, no entanto, é bom saber.
O Raspberry possui dois processadores internos: a GPU (Unidade de processamento gráfico) e o ARM, cada um com uma tarefa diferente. A GPU compartilha a memória com o ARM, um processador RISC (Reduced Instruction Set Computer) de uso geral muito eficiente, executando o conjunto de instruções padrão do setor. Tudo incluído em um SoC BCM2835 (Sistema em um Chip)
Quando o controle é dado primeiro à GPU, apenas o kernel, no final do processo de inicialização, será executado no processador ARM.
No primeiro estágio, a GPU executará o firmware da ROM no chip para carregar
bootcode.bin
na memória cache L2 e passar o controle.bootcode.bin
habilitará o cartão SD, habilitará a SDRAM e usará a primeira partição do MS-DOS para encontrar, carregar e executar 'start.elf'.Neste ponto, os seguintes arquivos são considerados pela
bootcode.bin
primeira partição do MS-DOS no cartão SD:Há um bom número de opções que podem ser personalizadas
config.txt
. Você pode editar o arquivo que monta o SD em um computador externo ou apenas editar em uma unidade em execução:As alterações típicas no config.txt estão relacionadas a overclock , HDMI , tamanho da tela , aspecto , câmera , configuração do endereço MAC etc.
Como você pode ver, a partição de inicialização designada, onde
kernel.img
a inicialização será / dev / mmcblk0p6 e esta é a segunda partição necessária no seu cartão SD, formatada como 'ext4' (Linux ou Id '83' no idioma do fdisk).Por fim,
start.elf
carregará e executarákernel.img
seu kernel linux.Você pode (deveria?) Atualizar o kernel com
rpi-update
; se não houver apenasapt-get install rpi-update
).nota: o
sudo
prefixo excluído por brevidade.fonte
Se você pesquisar no processo de inicialização do Raspberry PI, encontrará muitos, incluindo o que é a sequência de inicialização? (houve algumas pequenas alterações).
What is stored on each partition (and why)?
Isso varia, dependendo de como foi configurado e de qual distribuição é usada.Does the RPI boot from the SD card (sector zero) or the firmware reads from the disk structure?
Não.Can I create and partition a new SD and just DD each partition to the new device?
Sim. Embora seja melhor clonar o cartão e expandir a partição.Most RPI SD cards have two (fdisk) partitions, perhaps when installed from a .img
Enquanto o Raspbian faz, a partição FAT32 normalmente inicia em 8192, o que é ideal para cartões SD. (As partições devem estar localizadas no limite do 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.
Você precisa entender partições estendidas. Experimente o Wiki.fonte