Informações básicas
Eu tenho um sistema embarcado rodando o Ubuntu 12.04 que eu preciso atualizar para corrigir algumas vulnerabilidades de segurança. As alterações incluirão a atualização para o Ubuntu 14.04, a alteração de alguns arquivos de configuração localizados em / etc, / var, / media e também a atualização do software do aplicativo. Existem cerca de 1500 desses dispositivos que as atualizações precisarão ser enviadas para que eu esteja inclinado a uma solução que não exija acesso físico ao dispositivo.
Informações do disco :
root@HBOX-01003d:/dev# sudo fdisk -l
Disk /dev/mmcblk2: 7851 MB, 7851737088 bytes 4 heads, 16 sectors/track, 239616 cylinders, total 15335424 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000
Device Boot Start End Blocks Id System /dev/mmcblk2p1 * 2048 100351 49152 c W95 FAT32 (LBA) /dev/mmcblk2p2 100352 1329151 614400 83 Linux /dev/mmcblk2p3 1329152 15335423 7003136 83 Linux
Disk /dev/mmcblk2rpmb: 0 MB, 131072 bytes 4 heads, 16 sectors/track, 4 cylinders, total 256 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000
Disk /dev/mmcblk2rpmb doesn't contain a valid partition table
Disk /dev/mmcblk2boot1: 2 MB, 2097152 bytes 4 heads, 16 sectors/track, 64 cylinders, total 4096 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000
Disk /dev/mmcblk2boot1 doesn't contain a valid partition table
Disk /dev/mmcblk2boot0: 2 MB, 2097152 bytes 4 heads, 16 sectors/track, 64 cylinders, total 4096 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000
Disk /dev/mmcblk2boot0 doesn't contain a valid partition table root@HBOX-01003d:/dev# sudo parted -l Error: /dev/mmcblk2rpmb: unrecognised disk label
Error: /dev/mmcblk2boot0: unrecognised disk label
Error: /dev/mmcblk2boot1: unrecognised disk label
Model: MMC MMC08G (sd/mmc) Disk /dev/mmcblk2: 7852MB Sector size (logical/physical): 512B/512B Partition Table: msdos
Number Start End Size Type File system Flags 1 1049kB 51.4MB 50.3MB primary fat32 boot, lba 2 51.4MB 681MB 629MB primary ext3 3 681MB 7852MB 7171MB primary ext3
Primeira tentativa de criação de imagens
A partir dessas informações, concluí que a unidade mmcblk2 era a unidade principal usada neste sistema e decidiu criar uma imagem dessa unidade. Eu usei dd link para criar a imagem e a segunda resposta neste post para ajudar a escrever os comandos corretos: link
Eu usei o seguinte comando para copiar, compactar e enviar a imagem para um servidor remoto.
dd if=/dev/mmcblk2 | gzip -c --fast | ssh [email protected] 'dd of=/home/administrator/clone/ubuntu14.gz'
Esta foi a saída:
15335424+0 records in
15335424+0 records out
7851737088 bytes (7.9 GB) copied, 2038.58 s, 3.9 MB/s
6247083+1 records in
6247083+1 records out
3198506839 bytes (3.2 GB) copied, 2023.36 s, 1.6 MB/s
Na primeira vez, rodei este comando para entrar no sistema remoto, puxar a imagem e copiá-la para a caixa
ssh [email protected] 'dd if=/home/administrator/clone/hboxClone2.gz' | gunzip -1 - | dd of=/dev/mmcblk2
Isso, obviamente, não funcionou, pois eu fui iniciado a partir da unidade que eu estava tentando gravar e ele bricked o dispositivo. Assim, eu flashed o dispositivo usando o nosso processo existente (requer uma caixa peedi, conexão serial e um servidor de firmware) e reiniciei.
Perguntas
Então, tenho algumas perguntas de baixo nível que acho que precisam ser respondidas antes que eu possa continuar com o desenvolvimento de uma solução.
1) A geração de imagens da unidade mmcblk2 será suficiente para criar uma réplica do sistema? É difícil dizer na saída do fdisk se tudo está ou não armazenado apenas no disco mmcblk2.
2) A partição 1 ou 2 pode ser utilizada para a geração de imagens? Eu estou pensando que eu possa ser capaz de fazer a imagem apenas da primeira partição, escrever em uma das outras duas partições e trocar de qual eu inicializo? Eu li em algum lugar on-line sobre a troca de unidades e estou querendo saber se esse mesmo conceito pode ser aplicado às partições. A outra coisa que me preocupa é que pode haver algo escrito nessas partições (essa é a razão pela qual eu tentei imaginar a unidade inteira).
Como corrigir o UUID no Grub após a restauração de outra máquina?
Aqui está o que eu tenho no arquivo fstab:
# UNCONFIGURED FSTAB FOR BASE SYSTEM
#/dev/mmcblk0p2 / auto errors=remount-ro 0 1
#/dev/mmcblk0p1 /boot/uboot auto defaults 0 2
rootfs / auto defaults 1 1
proc /proc proc defaults 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
usbdevfs /proc/bus/usb usbdevfs noauto 0 0
tmpfs /var/volatile tmpfs defaults 0 0
tmpfs /media/ram tmpfs defaults 0 0
/hibernateswap none swap sw
0 0
# uncomment this if your device has a SD/MMC/Transflash slot
#/dev/mmcblk0p1 /media/card auto defaults,sync,noauto 0 0