usbinstall/src/usbinstall.sh

156 lines
4.8 KiB
Bash
Raw Normal View History

2011-11-09 22:51:07 +01:00
#!/bin/bash
2012-01-07 17:55:29 +01:00
#usbinstall.sh
# Arg 1: usb device for installation
# Arg 2: boot file
# Arg 3: iso file
2011-11-09 22:51:07 +01:00
2012-01-07 17:55:29 +01:00
#~ # 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
# License: GPL v.3
2011-11-09 22:51:07 +01:00
2012-01-07 17:55:29 +01:00
#%Changelog:
# 17/10/11 (michiamophil)
# * Script modificato organizzando il codice in funzioni, chiamate dal modulo installazione.py
# 06/01/12 (michiamophil)
# * "sudo u/mount -> udisks"
# * export $1, $2, $3 -> OPENMAMBA_*
2011-11-09 22:51:07 +01:00
2012-01-07 17:55:29 +01:00
#=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
#-------------------------------------(DBUS)-----------------------------------------
#=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
function dbus_properties_get_string() {
REPLY=`dbus-send --system --print-reply --dest=$1 $2 \
org.freedesktop.DBus.Properties.Get string:$3 string:"$4"`
[ $? -eq 0 ] || return 1
echo $REPLY | sed "s|.*string.*\"\(.*\)\"|\1|"
return 0
2011-11-09 22:51:07 +01:00
}
2012-01-07 17:55:29 +01:00
function dbus_properties_get_stringlist() {
# FIXME: only returns first element
REPLY=`dbus-send --system --print-reply --dest=$1 $2 \
org.freedesktop.DBus.Properties.Get string:$3 string:"$4"`
[ $? -eq 0 ] || return 1
echo $REPLY | sed "s|.*array.*\[ string \"\(.*\)\" ]|\1|"
return 0
2011-11-09 22:51:07 +01:00
}
2012-01-07 17:55:29 +01:00
function dbus_properties_get_uint64() {
REPLY=`dbus-send --system --print-reply --dest=$1 $2 \
org.freedesktop.DBus.Properties.Get string:$3 string:$4`
[ $? -eq 0 ] || return 1
echo $REPLY | sed "s|.*uint64 \(.*\)|\1|"
return 0
}
2011-11-13 18:04:35 +01:00
function dbus_properties_get_bool() {
REPLY=`dbus-send --system --print-reply --dest=$1 $2 org.freedesktop.DBus.Properties.Get string:$3 string:$4`
[ $? -eq 0 ] || return 1
echo $REPLY | sed "s|.*boolean \(.*\)|\1|"
return 0
}
2012-01-07 20:52:28 +01:00
# Set progressbar (only if $DBUS_USBINSTALL = 1)
2012-01-07 17:55:29 +01:00
# Arg 1: value%
set_pbar()
2011-11-09 22:51:07 +01:00
{
if [ "$DBUS_USBINSTALL" == "1" ]; then
2012-01-07 20:52:28 +01:00
dbus-send --print-reply --session --dest=org.openmamba.usbinstall /org/openmamba/usbinstall org.openmamba.usbinstall.Set_progressBar int32:$1
fi
2011-11-09 22:51:07 +01:00
}
# Set status label (only if $DBUS_USBINSTALL = 1)
2012-01-07 17:55:29 +01:00
# Arg 1: string
set_status()
2011-11-09 22:51:07 +01:00
{
if [ "$DBUS_USBINSTALL" == "1" ]; then
2012-01-07 20:52:28 +01:00
dbus-send --print-reply --session --dest=org.openmamba.usbinstall /org/openmamba/usbinstall org.openmamba.usbinstall.Set_description "string:$1"
fi
2011-11-09 22:51:07 +01:00
}
2012-01-07 17:55:29 +01:00
####################################(DBUS)###########################################
2011-11-09 22:51:07 +01:00
2012-01-07 17:55:29 +01:00
#=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
#-------------------------------------(MAIN)-----------------------------------------
#=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
export SELECT_USB=$1
export SELECT_BOOT=$2
export SELECT_ISO=$3
2011-11-09 22:51:07 +01:00
2012-01-07 17:55:29 +01:00
set_status "Smonto la chiavetta"
DEVICEISMOUNTED=`dbus_properties_get_bool org.freedesktop.UDisks /org/freedesktop/UDisks/devices/${SELECT_USB/*\/}1 \
org.freedesktop.UDisks.Device DeviceIsMounted`
if [ "$DEVICEISMOUNTED" = "true" ]; then
LANG=C udisks --unmount ${SELECT_USB}1 | grep failed && {
2012-01-07 17:55:29 +01:00
echo "Error: fail to umount the usb key (${SELECT_USB}1)"
exit 1
}
fi
2012-01-07 17:55:29 +01:00
set_pbar 2
set_status "Formattazione della chiavetta in corso..."
sudo fdisk $SELECT_USB < ./fdisk_template
set_pbar 5
sudo mkfs.ext3 ${SELECT_USB}1 -L openmamba_live
sleep 1
LANG=C udisks --mount ${SELECT_USB}1
2012-01-07 17:55:29 +01:00
set_pbar 30
# Riceve la mountdir della chiavetta da dbus
MOUNTDIR=`dbus_properties_get_stringlist org.freedesktop.UDisks /org/freedesktop/UDisks/devices/$(basename $SELECT_USB)1 \
org.freedesktop.UDisks.Device DeviceMountPaths`
set_status "Estrazione del file di boot in corso..."
2012-01-07 18:14:13 +01:00
pushd $MOUNTDIR >/dev/null
2012-01-07 17:55:29 +01:00
sudo chmod 777 ./
gunzip -c $SELECT_BOOT | cpio -i
set_pbar 38
set_status "Scrittura del bootloader in corso..."
sudo extlinux --install boot
sudo install-mbr -e 1 $SELECT_USB
set_pbar 45
set_status "Copia del file iso di openmamba in corso..."
# Copy code
ORIG_SIZE=`stat -c %s $SELECT_ISO`
cp $SELECT_ISO ./ &
DEST_SIZE=0
while [ $ORIG_SIZE -gt $DEST_SIZE ]; do
DEST_SIZE=$(stat -c %s ./"`basename $SELECT_ISO`")
percentuale=$((45 + ( 50 * $DEST_SIZE ) / $ORIG_SIZE ))
set_pbar $percentuale
2012-01-07 20:52:28 +01:00
sleep 2
2012-01-07 17:55:29 +01:00
done
ln -fs `basename $SELECT_ISO` ./openmamba-live.iso
2012-01-07 18:14:13 +01:00
popd >/dev/null
2012-01-07 17:55:29 +01:00
set_pbar 98
set_status "Smonto la chiavetta"
LANG=C udisks --unmount ${SELECT_USB}1 | grep failed && {
2012-01-07 17:55:29 +01:00
echo "Error: fail to umount the usb key (${SELECT_USB}1)"
exit 2
}
set_pbar 100
####################################(MAIN)###########################################