Transferindo sistema operacional de uma mídia para outra

Transferindo sistema operacional de uma mídia para outra

Eu tenho uma unidade USB com Manjaro ARM (que é usado para o sistema Raspberry Pi 4) e um cartão SD vazio. Existe uma maneira possível de transferir o sistema operacional da unidade USB para o cartão SD, preservando as partições? Se for possível, isso pode ser feito enquanto o Manjaro está em execução?

Aqui está a saída de lsblk:

$ lsblk # partitions on USB Drive
sda      8:0    1  14.9G  0 disk 
├─sda1   8:1    1 213.6M  0 part /boot
└─sda2   8:2    1  14.7G  0 part /
zram0  254:0    0  11.2G  0 disk [SWAP]

Responder1

  1. Existe uma maneira possível de transferir o sistema operacional da unidade USB para o cartão SD, preservando as partições?

Sim, assumindo que o cartão SD seja pelo menos tão grande quanto o drive USB. Você pode executar blockdev --getsize64 /dev/sdapara obter o tamanho da sua unidade USB em bytes e, alterando o caminho do dispositivo para o cartão SD, você pode garantir que tenha pelo menos a mesma quantidade de bytes.

Talvez não seja muito provável que os dispositivos sejam exatamente do mesmo tamanho, então eu preferiria criar uma tabela de partições idêntica (com os mesmos números de partição para o mínimo de incômodo) manualmente no cartão SD. Isso garante que o espaço extra em disco potencialmente disponível no cartão SD possa ser usado posteriormente, por exemplo, para estender a partição raiz ou criar novas partições. Use sfdisk -l /dev/sdapara obter uma lista de partições em /dev/sda em unidades de setores e, em seguida, use fdisk /dev/sdbpara criar as mesmas partições no cartão SD (assumindo que o dispositivo do seu cartão SD seja /dev/sdb, atualize conforme necessário).

Depois de recriar as partições, você pode copiar o conteúdo de cada partição, uma de cada vez.

  1. Se for possível, isso pode ser feito enquanto o Manjaro está em execução?

Sim, mas nesse caso você deve montar os sistemas de arquivos somente leitura para evitar o risco de o sistema operacional corromper a cópia caso ele grave algo no disco enquanto você estiver copiando.

Aqui estão os comandos para fazer exatamente isso e copiar as duas partições listadas em sua pergunta, supondo que você tenha criado as partições conforme descrito acima e novamente assumindo que seu cartão SD seja /dev/sdb:

mount /dev/sda1 -oremount,ro
dd if=/dev/sda1 of=/dev/sdb1 bs=1048576
mount /dev/sda2 -oremount,rw

mount /dev/sda2 -oremount,ro
dd if=/dev/sda2 of=/dev/sdb2 bs=1048576
mount /dev/sda2 -oremount,rw

Possivelmente algum software pode não gostar que o sistema de arquivos raiz seja montado temporariamente como somente leitura; uma reinicialização resolverá isso.

informação relacionada