#!/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 sleep 1 sudo umount ${1}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