130 lines
2.7 KiB
Bash
Executable File
130 lines
2.7 KiB
Bash
Executable File
#!/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()
|
|
{
|
|
|
|
sudo mkfs.ext3 ${1}1 -L openmamba_live
|
|
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()
|
|
{
|
|
# So it attend up to umount return without errors
|
|
|
|
while [ 1 ] ; do
|
|
sudo umount ${1}
|
|
if [ $? != 1 ]; then
|
|
break
|
|
fi
|
|
done
|
|
echo "Done"
|
|
rmdir ~/tmpmamba
|
|
}
|
|
|
|
# Aggiorna la progressbar $1 == %
|
|
pbar()
|
|
{
|
|
dbus-send --print-reply --session --dest=org.openmamba.usbinstall /org/openmamba/usbinstall org.openmamba.usbinstall.Pbar_aggiorna int32:$1
|
|
}
|
|
|
|
descrizione()
|
|
{
|
|
|
|
dbus-send --print-reply --session --dest=org.openmamba.usbinstall /org/openmamba/usbinstall org.openmamba.usbinstall.Descrizione "string:$1"
|
|
}
|
|
|
|
|
|
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
|
|
pbar 20
|
|
|
|
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
|
|
|
|
|
|
else
|
|
echo $1 "Parametri non validi"
|
|
|
|
fi
|