Clonando uma unidade USB inicializável em outro stick com o mesmo tamanho

0

Eu tenho 20 unidades USB idênticas (em tamanho) onde eu preciso colocar uma versão inicializável do Ubuntu. A unidade que eu uso tem uma capacidade de 4GB. Eu particionei a unidade em duas partições (GPT, FAT32), então eu tenho uma partição para o sistema operacional e uma partição para colocar dados.

Estou usando o UNetbootin para criar o stick Ubunutu inicializável. Tudo parece funcionar bem, mas é extremamente lento (~ 30 minutos de tempo de instalação).

Agora eu estou querendo saber se eu posso clonar os bastões para os 19 bastões restantes de alguma forma, sem ter que particionar manualmente as unidades e executar o UNetbootin em cada drive.

Se não, talvez uma alternativa seria escrever um script que faça o particionamento, criando uma partição inicializável e então dd o conteúdo na partição correta?

Estou rodando o macOS, então não instalei o Gparted ou qualquer outra ferramenta sofisticada do Linux (provavelmente).

    
por Soift 20.09.2016 / 14:10

2 respostas

1

dd está fazendo uma cópia completa da unidade incluindo as tabelas de partição e tudo mais (como ipor mais ou menos declarado).

Algo como isso deve fazer o truque:

dd if=<your reference usb stick> of=<one of the 19 other usb sticks> bs=32M

Você pode até mesmo descarregar o conteúdo do seu pendrive de referência no disco como uma imagem para salvá-lo para uso posterior; -)

    
por 20.09.2016 / 14:33
1

Dependendo do tamanho dos sticks USB, isso pode demorar um pouco, porque você está copiando e escrevendo muito espaço vazio.

Existe uma maneira melhor de fazer isso usando as ferramentas bmap, que apenas escrevem blocos usados em uma imagem de disco.

Existem várias ferramentas que eu uso aqui que são empacotadas para o Ubuntu / Debian mas não instaladas por padrão para instalá-las

sudo apt-get install bmap-tools libguestfs-tools pigz

Primeiro, você precisa criar a imagem de origem:

sudo dd if=/dev/source of=/path/to/source.img bs=1M

Esparsificando a imagem

Em seguida, você precisa remover todos os zeros da imagem para criar um arquivo esparso:

cp --sparse=always /path/to/source.img /path/to/source.img.sparse

Você deve ter notado que isso faz uma cópia da imagem e ocupa mais espaço. Felizmente, podemos usar o cp em um pipe:

sudo dd if=/dev/source bs=1M | cp --sparse=always /dev/stdin /path/to/source.img.sparse

bmap-tools

Agora, precisamos produzir alguns metadados sobre como o arquivo de imagem é exibido usando o bmaptool:

bmaptool create -o /path/to/source.img.bmap /path/to/source.img.sparse

Se você quiser, agora pode compactar o arquivo de imagem, o bmaptool irá automaticamente descompactar o arquivo de imagem. O pigz é uma ferramenta de compressão gzip paralela.

pigz /path/to/source.img.sparse

Para gravar o arquivo em um pen drive USB vazio, agora você pode fazer:

sudo bmaptool copy --bmap /path/to/source.img.bmap /path/to/source.img.sparse.gz /dev/sdX

link

Guestfish

Se você está se sentindo mais inteligente, você também pode usar ferramentas do projeto guestfish para limpar a imagem do linux antes de cloná-la. Isso remove coisas como arquivos de log, chaves ssh do servidor, etc.

Execute esses comandos antes de compactar a imagem para limpar a imagem.

Este comando limpa a imagem, removendo logs, arquivos históricos, chaves do servidor ssh, etc.

virt-sysprep -a /path/to/source.img.sparse

Este comando configura o ssh com novas chaves do servidor na primeira inicialização.

virt-customize --firstboot-command "dpkg-reconfigure openssh-server" /path/to/source.img.sparse

Este comando executa um fstrim na imagem que exclui todos os blocos não utilizados do sistema de arquivos, assim como corta um SSD.

virt-sparsify --inplace /path/to/source.img.sparse

link

    
por 24.09.2016 / 00:01