usbinstall/src/usbinstall.sh

132 lines
2.9 KiB
Bash
Raw Normal View History

2011-11-09 22:51:07 +01:00
#!/bin/bash
# openmamba-usbinstall è uno script per la generazione automatica di una chiavetta di boot per openmamba snapshot.
# Se i file necessari sono presenti sul disco fisso verranno utilizzati quelli altrimenti
# scaricherà direttamente la versione attuale dal sito di openmamba.
# se il file iso è presente nella home verrà usato direttamente altrimenti si aprirà un dialogo dove sarà possibile cercarlo.
# (c) 2009 ercole 'ercolinux' carpanetto - ercole69@gmail.com
# (c) 2009-2010 Silvan Calarco - silvan.calarco@mambasoft.it
# rilasciato secondo la licenza GPL v.3
# 17/10/11 Script modificato organizzando il codice in funzioni, chiamate dal modulo installazione.py
# formattazione della chiavetta e installazione dei file necessari al boot di openmamba
#1 Smonta la partizione
inst_dev_umount()
{
sudo umount ${1}1
}
#2 Crea la partizione
inst_new_part()
{
sudo fdisk $1 <./fdisk_template
}
#3 Formatta la partizione (e la monta)
inst_format()
{
2011-11-13 18:04:35 +01:00
#add_progress 5 29 1 &
sudo mkfs.ext3 ${1}1 -L openmamba_live
2011-11-09 22:51:07 +01:00
mkdir -p ~/tmpmamba
sudo mount ${1}1 ~/tmpmamba
sudo chmod 777 ~/tmpmamba
}
#4 Estrae il file boot
inst_extr_boot()
{
cd ~/tmpmamba
gunzip -c < $1 | cpio -i
}
#5 Installa il bootloader
inst_make_boot()
{
cd ~/tmpmamba
sudo extlinux --install boot
sudo install-mbr -e 1 $1
}
#6 Copia la iso sull'usb
inst_copy_iso()
{
cd ~/tmpmamba
orig_size=$(stat -c %s $1)
cp "$1" ./ &
dest_size=0
sleep 2
while [ $orig_size -gt $dest_size ] ; do
dest_size=$(stat -c %s ./"`basename $1`")
percentuale=$((45 + ( 50 * $dest_size ) / $orig_size ))
pbar $percentuale
done
ln -fs `basename $1` ./openmamba-live.iso
}
#7 Smonta la chiavetta
inst_dir_umount()
{
2011-11-13 18:04:35 +01:00
sleep 5
sudo umount ${1}1
2011-11-09 22:51:07 +01:00
echo "Done"
}
2011-11-13 18:04:35 +01:00
# $1 begin value; $2 max value; $3 sleep time;
#add_progress()
#{
# while [ $1 <= $2 ] ; do
# $1 += 1
# dbus-send --print-reply --session --dest=org.openmamba.usbinstall /org/openmamba/usbinstall org.openmamba.usbinstall.Set_progressBar int32:$1
# sleep $3
# done
#}
2011-11-09 22:51:07 +01:00
# Aggiorna la progressbar $1 == %
pbar()
{
2011-11-13 18:04:35 +01:00
dbus-send --print-reply --session --dest=org.openmamba.usbinstall /org/openmamba/usbinstall org.openmamba.usbinstall.Set_progressBar int32:$1
2011-11-09 22:51:07 +01:00
}
descrizione()
{
2011-11-13 18:04:35 +01:00
dbus-send --print-reply --session --dest=org.openmamba.usbinstall /org/openmamba/usbinstall org.openmamba.usbinstall.Set_description "string:$1"
2011-11-09 22:51:07 +01:00
}
if [ $1 == "start" ]; then
descrizione "Smonto la chiavetta"
inst_dev_umount $2
pbar 2
descrizione "Formattazione della chiavetta in corso..."
inst_new_part $2
pbar 5
inst_format $2
2011-11-13 18:04:35 +01:00
pbar 30
2011-11-09 22:51:07 +01:00
descrizione "Estrazione del file di boot in corso..."
inst_extr_boot $3
pbar 38
descrizione "Scrittura del bootloader in corso..."
inst_make_boot $2
pbar 45
descrizione "Copia del file iso di openmamba in corso..."
inst_copy_iso $4
pbar 98
descrizione "Smonto la chiavetta"
inst_dir_umount $2
pbar 100
2011-11-13 18:04:35 +01:00
2011-11-09 22:51:07 +01:00
else
echo $1 "Parametri non validi"
fi