Como posso criar um disco de restauração USB inicializável e autônomo?

4

Eu tenho uma carga de 14,04 sistemas de quiosque, do outro lado do país. Estes são pequenos dispositivos integrados horríveis. Eu preciso atualizá-los todos para 16.04 para suportar uma nova pilha de software. do-release-upgrade funciona na metade do tempo. A outra metade destrói a instalação. Além disso, as CPUs são realmente lentas e as conexões de rede em alguns sites também são muito ruins. Então, mesmo quando funciona, a atualização demora muito tempo.

Um novo plano.
Eu posso fazer uma imagem do sistema totalmente instalada para cada quiosque no Virtualbox, ou LXC, ou qualquer outra coisa.
Eu preciso de uma maneira de obter essas imagens descompactadas nos sistemas.

O principal problema aqui é que há poucas pessoas técnicas disponíveis no outro lado. E eu não quero voar 200 milhas para fazer isso sozinho. Eu preciso de algo que é quase totalmente automatizado e não requer um teclado.

Estou imaginando um cenário em que:

  • Eu faço uma imagem do sistema para cada quiosque
  • Eu faço um drive USB inicializável para cada quiosque e copio na imagem do quiosque.
  • eu rotulo cada um e publico-os.
  • Na outra extremidade, um membro da equipe com acesso físico às portas USB apenas conecta a unidade correta e reinicializa.
  • O elemento inicializável disso grava e expande a imagem do disco.

É esse "elemento inicializável" que estou procurando. Eu esperava que algo assim já existisse (para instalações de recriação de imagens em massa), mas é possível que eu esteja em um novo território. Qualquer coisa que tenha minhas imagens instaladas sem interferência manual (depois de conectá-las) ganha pontos.

Até onde eu sei, opções como o Clonezilla requerem que alguém tenha um teclado para dizer o que fazer. Eu preciso de algo que não exija um teclado, apenas aparece e o faz.

    
por Oli 29.06.2017 / 13:16

2 respostas

2

Shellscript

Eu gostei de fazer um shellscript bash, que pode fazer suas coisas automaticamente tanto em sistemas baseados em Ubuntu live persistentes quanto em um pequeno sistema '9w' baseado no Debian Jessie. Espero que seja útil para você, assim como para outras pessoas no futuro.

O script assume que deve haver duas unidades graváveis (dispositivos de armazenamento em massa), a unidade ativa e a unidade de destino. Se não usar o toram, ele estragará a identificação do drive ao vivo.

O shellscript chama dus-live , que é uma parte executora do mkusb . Então, ele está substituindo o shellscript interativo dus .

dus-live pode gerenciar os seguintes tipos de arquivos de origem,

  • file.iso
  • file.img
  • file.img.gz
  • file.img.xz

e o sistema de destino pode ter tabelas de partição MSDOS e GUID (quando a unidade de destino é maior que o tamanho do sistema original na imagem).

Eu usei o nome autoclone :

#!/bin/bash

# Date        Sign     Comment
# 2017-06-30  sudodus  Created
# 2017-07-01  sudodus  checking that there is 1 possible target drive

wait=30

read -t "$wait" -p "WARNING: After $wait seconds '$0' will CLONE AUTOMATICALLY;
from the file given as parameter to the first detected drive
(except the live drive), so it will be overwritten.
If this is not what you want or if you are not sure, PRESS {ctrl + C} NOW !
...
"

function power_off {
read -t "$wait" -p "WARNING: After $wait seconds '$0' will POWEROFF automatically;
If this is not what you want or if you are not sure, PRESS {ctrl + C} NOW !
...
"
sudo poweroff
}

user=$(whoami)
if [ "$user" != "root" ]
then
 echo "run $0 with sudo or as root"
 exit
fi
if [ "$1" == "" ] || ! test -s "$1"
then
 echo "Usage:   sudo $0 <with an iso file or image file as parameter>"
 echo "Example: sudo $0 \"file.iso\""
 echo "Example: sudo $0 \"file.img\""
 echo "Example: sudo $0 \"file.img.xz\""
 exit
fi

source="$1"

livedrive=$(lsblk -lo name,type,mountpoint | \
grep -m1 -e /$ -e /cdrom$ -e /lib/live/mount/medium -e /lib/live/mount/persistence)
#echo "$livedrive"
livedrive=${livedrive:0:3}
echo "livedrive=/dev/$livedrive"

number_of_targets=$(lsblk -ldo name,type|grep -v "$livedrive"|grep -v zram|grep disk|wc -l)
           target=$(lsblk -ldo name,type|grep -v "$livedrive"|grep -v zram|grep disk)

#echo "target=$target"
# echo "number_of_targets=$number_of_targets"
# sudo lsblk -o name,model,size,type,fstype,label,mountpoint | \
#  grep -v "$livedrive"|grep -v zram| grep -v loop|grep -v ' rom '
####

if [ $number_of_targets -ne 1 ]
then
 echo '--------------------------------------------------------'
 sudo lsblk -o name,model,size,type,fstype,label | \
  grep -v "$livedrive"|grep -v zram| grep -v loop|grep -v ' rom '
 echo "$number_of_targets possible target drives found, but
1 possible target drive should be found
for '$0' to work correctly."
 if [ $number_of_targets -gt 1 ]
 then
  echo "--------------------------------------------------------
- Please remove every other possible target drive!
- Or are you running in the wrong computer?"
 fi
 echo "--------------------------------------------------------"
 wait=60
 power_off
 exit
fi
target=/dev/${target:0:3}

echo "target=$target"

umount "$target"?*

paramfromfile=$(mktemp)

echo "$source
$target" > "$paramfromfile"

# do it with dus-live, which comes with mkusb version 12-

echo "calling 'dus-live' ..."
dus-live pff:"$paramfromfile"

power_off

Testado em sistemas ativos persistentes

Eu testei que funciona em dois sistemas live persistentes, que podem ser instalados a partir de arquivos de imagem compactados,

Veja mais detalhes sobre este método neste link,

Autostart

Esse script pode ser iniciado automaticamente, quando a linha a seguir é anexada ao início automático, no Lubuntu, por meio do seguinte comando,

echo 'xterm -fa default -fs 12 -title autoclone -e sudo /home/lubuntu/autoclone dd_no-biggie-68MB.img.xz' >> ~/.config/lxsession/Lubuntu/autostart

Modifique-o para corresponder à imagem real 'dd' /path/name e à localização real do shellscript.

O comando correspondente em 9w é

echo '@xterm -fa default -fs 12 -title autoclone -e sudo /root/autoclone /root/dd_no-biggie-68MB.img.xz' >> ./.config/lxsession/LXDE/autostart

Seu próprio sistema personalizado

Você pode querer ou ter que criar seu próprio sistema personalizado (ao vivo, persistente ao vivo ou instalado em uma unidade USB ou cartão de memória). Provavelmente você pode substituir dus-live por uma simples linha de comando dd , pelo menos se o sistema que você deseja instalar usar a tabela de partição MSDOS.

Aviso de isenção

Esse shellscript foi feito rapidamente, funciona como testado por mim, mas há muitos casos que não são testados e coisas inesperadas podem acontecer. Então, teste-a, onde não há dados valiosos, que possam ser sobrescritos.

Screenshots

Três capturas de tela do Lubuntu

Durante os primeiros 30 segundos, você pode usar a combinação de teclas de atalho ctrl + C para parar a autoclonação,

Saídadoconsole:nesteestágio,osistemaestásincronizando(liberandoosbuffersparaodrivealvo),

Durante30segundosvocêpodeusaracombinaçãodeteclasdeatalhoctrl+Cparaevitaropoweroff(sevocêquiserpermanecernasessãodedesktopdoLubuntu),

Umacapturadetelacorrespondentede9w

    
por sudodus 30.06.2017 / 02:49
0

Você já pensou em usar duckies de borracha USB do link do Hak5 no modo twin-duck. Eu os usei para instalar o Ubuntu em 7 máquinas. Em cada um, tudo o que eu tinha que fazer era reiniciar os sistemas com o patinho de borracha plugado na porta USB, já que meus sistemas sempre priorizam a inicialização via USB, isso era fácil. Mas você pode usar dois patinhos de borracha e usar um para ajustar suas preferências de BIOS e inicializar a partir do USB enquanto usa o outro como uma unidade flash do Live Boot e um teclado para navegar pelas telas iniciais de configuração produzidas pelo menu de instalação unetbootin boot. Com um pouco de paciência e tentativa e erro, você pode fazê-lo. E como não são necessários técnicos no local, você pode enviar os patinhos de borracha prontos para pessoas com proximidade física e acesso aos sistemas.

Quando no modo Twin-Duck, o ducky de borracha atua como um dispositivo de armazenamento em massa HID (no nosso caso, um teclado) e A USB. Portanto, você só precisa criar um disco flash inicializável com unetbootin no armazenamento em massa USB do Rubber Ducky e usar a automação HID (teclado) - injeção de teclas - para automatizar a navegação (pressionamentos de teclas) necessários durante a instalação do sistema operacional. você pode até fazer isso em sistemas sem cabeça.

    
por endrias 29.06.2017 / 14:00