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