Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#51 Le 10/12/2008, à 18:00

AnsuzPeorth

Re : MultiBoot LiveUSB & ModCustom LiveCD

ouaip, j'ai pas tout compris......
tu veuxx enlever la zone de saisie du nom de la distrib, dans "premier livecd" "second livecd" etc etc.Il y auras juste le selecteur de fichier pour chaque alors ??? (ca va faire vide.....)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#52 Le 10/12/2008, à 18:09

AnsuzPeorth

Re : MultiBoot LiveUSB & ModCustom LiveCD

si tu as peur de noms bizarre, tu fais juste un 'tr' ou autre dessus pour supprimer les espaces et caracteres speciaux ! Non ?


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#53 Le 10/12/2008, à 18:50

frafa

Re : MultiBoot LiveUSB & ModCustom LiveCD

==> AnsuzPeorth
bon je te poste le code qui devrait etre ok avant integration de ton gui
ATTENTION! AVIS AUX USERS, NE PAS EXECUTER CE CODE! C'EST JUSTE POUR VERIF VISUELLE

là j'ai le miston dans le bain, le repas a preparer,vaiselle, la miss bosse un peu tard ce soir,
repas, un peu de tv detente...
pi si tu est dispo apres, on se met en chat pour integrer gui
et discuter des modifs eventuelles...

#!/bin/bash

#	│▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
#	│                   multiboot.sh                     │
#	│              écrit par François Fabre              │
#	│    interface graphique réalisé par AnsuzPeorth     │
#	│             mer 10 déc 2008 18:42:14 CET           │
#	│                                                    │
#	│                  Multiboot LiveUSB                 │
#	│▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│


HEBERGEMENT="http://liveusb.info/liveusb"
MODLANG=(fr FR UTF-8 fr fr nodeadkeys pc105 Europe/Paris)
export HEBERGEMENT
export MODLANG

#_______________________________________________________________________________________________
#_________________________________________Test_sudo_____________________________________________
function LANCEUR()
{
if [ ! "$(ps ax | grep sudo | grep xterm | grep $0 | grep -v grep)" ]; then
xterm -e "sudo $0"
read
exit 0
fi
if [ ! "$SUDO_USER" ]; then
echo -e "\033[1;47;31m Erreur: Pas en root! utilisez ==> sudo $0 \033[0m" ;
read
exit 0
fi
}
LANCEUR
#_______________________________________________________________________________________________



#_______________________________________________________________________________________________
#________________________________________TIMEOUT________________________________________________
function TIMEOUT()
{
echo $(date +%s) > "/tmp/Log_liveusb.txt"
DATE_BEGIN=`cat /tmp/Log_liveusb.txt`;
function BTN_ANNULER()
{
if [ "$?" -ne "0" ]; then
MOD_CONFIRM="$(zenity \
--title="Live CD/USB" \
--text="Demande arrêt du script" \
--width=380 \
--height=10 \
--list \
--checklist \
--print-column="2" \
--separator=" " \
--hide-column="2" \
--column="*" \
--column="*" \
--column="Description" \
FALSE A "Veuiller cocher pour confirmer arrêt du script")"
if [ "$MOD_CONFIRM" == "A" ]; then
echo -e "\033[1;47;31m Process N°$PID_SCRIPT annulé par utilisateur: $MESSAGE \"$?\" \033[0m" ;
rm /tmp/Log_liveusb.txt &>/dev/null
kill -9 $PID_SCRIPT
exit 0
fi
fi
}
function BOUCLE()
{
echo "1" ; 
while true; do
echo "#${MESSAGE}" ; 
sleep 1; 
if ! [ -e "/tmp/Log_liveusb.txt" ]; then 
break ;
fi;
done; 
echo "100" ; 
}
BOUCLE | zenity --progress --pulsate --width 600 --auto-close || BTN_ANNULER
DATE_END=`date +%s` ; 
((ECART=DATE_END-DATE_BEGIN)) ;
((MIN=ECART/60)) ; 
((SEC=ECART%60)) ;
echo -e '\E[37;44m'"\033[1m fin de $MESSAGE \033[0m"
echo -e '\E[37;44m'"\033[1m Temps d'execution: $MIN Minutes et $SEC Secondes \033[0m"
}
#_______________________________________________________________________________________________


#_______________________________________________________________________________________________
#__________________________________Test connexion internet______________________________________
function TEST_CONNEXION()
{
MESSAGE="Test connexion internet, veuillez patienter..."
TIMEOUT&
while true; do
#TEST="$(ping -q -c 2 www.google.fr &>/dev/null 2>&1)"
TEST="$(ping -q -c 2 $(echo $HEBERGEMENT | sed 's/.*\/\///;s/\/.*//') &>/dev/null 2>&1)"
if [ $? -eq 0 ]; then
echo -e '\E[37;44m'"\033[1m Connexion internet ok. \033[0m"
rm /tmp/Log_liveusb.txt
sleep 2
break
else
echo -e "\033[1;47;31m Vérifiez votre connexion internet.\n$HEBERGEMENT\nle site répond pas... \033[0m" ;
sleep 2
fi
done
}
#_______________________________________________________________________________________________


#_______________________________________________________________________________________________
#_____________________________________QEMU_INSTALL______________________________________________
#suggéré par smo ==> http://forum.ubuntu-fr.org/viewtopic.php?id=132294
## installe qemu et compile kqemu
function QEMU_INSTALL()
{
CHERCHE_CLE
MESSAGE="Vérification et mise en place de quemu et kqemu (acceleration)"
TIMEOUT&
if [ ! -e /usr/bin/qemu ]; then
echo "installation de qemu"
    aptitude -y install qemu kqemu-common module-assistant &>/dev/null
fi

if [ "$(lsmod |  grep kqemu)" == "" ]; then
modprobe kqemu &>/dev/null
mknod /dev/kqemu c 250 0 &>/dev/null
chmod 666 /dev/kqemu &>/dev/null
fi

if [ "$(lsmod |  grep kqemu)" == "" ]; then
echo "Compile et met en place kqemu (acceleration)"
    m-a a-i kqemu &>/dev/null
modprobe kqemu &>/dev/null
mknod /dev/kqemu c 250 0 &>/dev/null
chmod 666 /dev/kqemu &>/dev/null
fi

rm "/tmp/Log_liveusb.txt"
sleep 2

RAM_LIBRE="$(free | grep -e "-/+" | awk '{print $4}')"
if [ "$RAM_LIBRE" -gt "512" ]; then
RAM_LIBRE=512
elif [ "$RAM_LIBRE" -gt "256" ]; then
echo -e '\E[37;44m'"\033[1m Espace ram disponible $RAM_LIBRE Mio \033[0m"
RAM_LIBRE=256
elif [ "$RAM_LIBRE" -lt "256" ]; then
echo -e "\033[1;47;31m Erreur: pas assez de ram libre disponible:$RAM_LIBRE souhaité:256 Mio \033[0m" ;
exit 0
fi

echo "Démarrer qemu pour vérification de boot"
zenity --info --text="Attention!
pour démarrer clé USB avec qemu pour test,
veuillez utiliser le dernier menu extlinux a savoir:
Mode live qemu generic.all_generic_ide=1"
qemu -k fr -std-vga -no-acpi -boot c -usb -usbdevice "/dev/${CLE_USB}" -hda "/dev/${CLE_USB}2" -hdb "/dev/${CLE_USB}5" -hdc "/dev/${CLE_USB}6" -hdd "/dev/${CLE_USB}7" -m $RAM_LIBRE
}
#_______________________________________________________________________________________________
#___________________________________F.I.N_QEMU_INSTALL__________________________________________


#_______________________________________________________________________________________________
#______________________________________syslinux_________________________________________________
function COMPIL_SYSLINUX()
{
#check espace dans /tmp si boot livecd
POINTMONTAGE="$(df -T -P -B 1M /tmp  | grep "^tmpfs" | awk '{print $7}')"
DISPO="$(df -T -P -B 1M /tmp | grep "^tmpfs" | awk '{print $5}')"
echo POINTMONTAGE:$POINTMONTAGE
echo DISPO:$DISPO
if [[ $POINTMONTAGE == "/tmp" && "$DISPO" -lt "120" ]]; then
echo -e "\033[1;47;31m Erreur: /tmp est chargé en ram et il ne reste pas assez d\'espace libre pour compiler syslinux Libre:$DISPO Mib \033[0m" ;
#essayer de liberer de la place!
#sudo umount /dev/shm
#sudo mount -o remount,size=512m /dev/shm
fi

#compiler syslinux
#http://syslinux.zytor.com/download.php
#http://freshmeat.net/projects/syslinux/
#http://www.kernel.org/pub/linux/utils/boot/syslinux/
SYL_VERSION="3.72"
function TEST_VERSION()
{
echo $(/sbin/extlinux -v 2>&1 | awk '{print $2}')
}
MESSAGE="Suppression/Purge de syslinux en cours..."
TIMEOUT&
apt-get remove --purge -y syslinux &>/dev/null
rm "/tmp/Log_liveusb.txt"
sleep 2
if [[ "$(TEST_VERSION)" != "${SYL_VERSION}" || ! -e /usr/share/syslinux/mbr.bin || ! -e /boot/extlinux/vesamenu.c32 ]]; then
echo -e '\E[37;44m'"\033[1m Compilation de syslinux ${SYL_VERSION} \033[0m"
test -e /usr/lib/syslinux && rm -Rf /usr/lib/syslinux/* ;
cd /tmp
#wget -r -nd http://ftp.free.fr/mirrors/ftp.kernel.org/linux/utils/boot/syslinux//syslinux-${SYL_VERSION}.tar.bz2 2>&1 \
#wget -r -nd http://freshmeat.net/redir/syslinux/10177/url_bz2/syslinux-${SYL_VERSION}.tar.bz2 2>&1 \
wget -r -nd http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-${SYL_VERSION}.tar.bz2 2>&1 \
| sed -u 's/\([ 0-9]\+K\)[ \.]*\([0-9]\+%\) \(.*\)/\2\n#Transfert : \1 (\2) à \3/' \
| zenity --progress --auto-close --width 400 --title "Téléchargement de syslinux-${SYL_VERSION}"
MESSAGE="Compilation/Installation de syslinux-${SYL_VERSION}, veuillez patienter..."
TIMEOUT&
tar jxvf syslinux-${SYL_VERSION}.tar.bz2
rm syslinux-${SYL_VERSION}.tar.bz2*
cd syslinux-${SYL_VERSION}
#make all &>/dev/null
make all
make install
make netinstall
make extbootinstall
#ldconfig -v
cd $HOME
rm -R /tmp/syslinux-${SYL_VERSION}
rm "/tmp/Log_liveusb.txt"
sleep 2
else
echo -e '\E[37;44m'"\033[1m Version installée de syslinux:$(TEST_VERSION) \033[0m"
fi
#test extlinux
if [ "$(TEST_VERSION)" != "${SYL_VERSION}" ]; then
echo -e "\033[1;47;31m Erreur: pas trouvé extlinux \"${SYL_VERSION}\" ==> trouvé:\"$(TEST_VERSION)\" \033[0m" ;
exit 0
fi
#test install syslinux
if [ ! "$(ls -l /usr/share/syslinux/mbr.bin)" ]; then
echo -e "\033[1;47;31m Erreur: /usr/share/syslinux/mbr.bin \033[0m" ;
exit 0
fi
if [ ! "$(ls -l /boot/extlinux/vesamenu.c32)" ]; then
echo -e "\033[1;47;31m Erreur: /boot/extlinux/vesamenu.c32 \033[0m" ;
exit 0
fi
if [ ! "$(ls -l /usr/share/syslinux/isolinux.bin)" ]; then
echo -e "\033[1;47;31m Erreur: /usr/share/syslinux/isolinux.bin \033[0m" ;
exit 0
fi
}
#_______________________________________________________________________________________________


#_______________________________________________________________________________________________
#______________________________________MOD_DETECTION_AUTOMATIQUE_____________________________________________
function MOD_DETECTION_AUTOMATIQUE()
{
rm /tmp/RESULT_SD /tmp/CHECK_SD /tmp/CHECK_SD2 &>/dev/null;
CLE_USB="";LIMIT=30;a=0;
echo $(date +%s) > "/tmp/Log_liveusb.txt"
function BTN_ANNULER()
{
echo -e "\033[1;47;31m Process annulé par utilisateur \033[0m" ;
sudo rm /tmp/Log_liveusb.txt
echo -e "\033[1;47;31m Tuer ces process: $PID_SCRIPT \033[0m" ;
kill -9 $PID_SCRIPT
exit 0
}
if [ ! -e /proc/partitions ]; then
echo -e "\033[1;47;31m Erreur: impossible de détecter /proc/partitions \033[0m" ;
exit 0
fi; 
function LOOP()
{
cat /proc/partitions | grep "sd[a-z]$" | awk '{print $4}' >/tmp/CHECK_SD
while (( a <= LIMIT )); do
let a++
echo $(echo "scale=1; (( $a / $LIMIT * 100))" | bc)
echo "#Détection automatique de votre clé USB\nVeuillez brancher ou débrancher puis rebrancher votre clé USB."
cat /proc/partitions | grep "sd[a-z]$" | awk '{print $4}' >/tmp/CHECK_SD2
sleep 2 ;

DIFF=$(diff -a /tmp/CHECK_SD /tmp/CHECK_SD2 | sed -n 2p | awk '{print $2}')

if ! [ -e "/tmp/Log_liveusb.txt" ]; then #annulation
break ;

elif [[ "$DIFF" && ! -e /dev/$DIFF ]]; then #eject
echo "#eject clé $DIFF"
cat /proc/partitions | grep "sd[a-z]$" | awk '{print $4}' >/tmp/CHECK_SD
sleep 2 ;

elif [[ "$DIFF" && -e /dev/$DIFF ]]; then #ok trouvé
echo "$DIFF" >/tmp/RESULT_SD
break ; 

elif [ "${a}" -ge "${LIMIT}" ]; then #timeout dépassé fin
zenity --error --text "Fin du script, pas réussit à détecter votre clé USB dans le délai imparti."&
sudo rm /tmp/Log_liveusb.txt
kill -9 $PID_SCRIPT
exit 0

else #boucle
echo "#Recherche... Timeout Attente $(( ${a} * 4 )) secondes (Max $(($LIMIT*4)) secondes)"
sleep 2 ; 
fi

done ;
}
LOOP | zenity --progress --progress --auto-close || BTN_ANNULER
CLE_USB=$(cat /tmp/RESULT_SD)
echo -e '\E[37;44m'"\033[1m CLE_USB ==> /dev/ $CLE_USB \033[0m"

#cherche UUID et sd? de la clé usb, et verifie que n'est pas dans fstab
blkid -s UUID | grep /dev/$CLE_USB | while read line
do
UUID="$(echo $line  | awk  '{print $2}' | awk -F\" '{print $2}')"
echo -e '\E[37;44m'"\033[1m Cherche:$UUID \033[0m"
if [[ "$(echo $(cat /etc/fstab) | grep "$UUID")" || "$(echo $(cat /etc/fstab) | grep "/dev/$CLE_USB")" ]]; then
echo -e "\033[1;47;31m Erreur le disque sélectionné fait partie de fstab,
ce script est fait pour des volumes amovibles
et /dev/$CLE_USB ne devrait pas figurer dans fstab\!... Sortie \033[0m" ;
zenity --error --text "Erreur le disque sélectionné fait partie de fstab
ce script est fait pour des volumes amovibles
et /dev/${CLE_USB} UUID=$UUID
ne devrait pas figurer dans fstab\!
"
exit 0
fi
done

TEST_DISKUSB=`ls -la /dev/disk/by-id/usb-* | grep "${CLE_USB}"`
TEST_WRITE=$(hdparm -v /dev/${CLE_USB} | grep readonly | awk '{print $3}')

if ! [ -e /dev/${CLE_USB} ]; then #n'existe pas
echo -e "\033[1;47;31m /dev/${CLE_USB} n\'existe pas \! \033[0m" ;
zenity --error --text "/dev/${CLE_USB} n\'existe pas \!"
exit 0

elif ! [ "$(echo "/dev/${CLE_USB}" | grep -i "/dev/sd.*[0-9]")" == "" ]; then #erreur pas racine
echo -e "\033[1;47;31m veuillez sélectionner un disque et non une partition\! Ex: sda,sdb;sdc,... \033[0m" ;
zenity --error --text "veuillez sélectionner un disque et non une partition\! Ex: sda,sdb;sdc,..."
exit 0

elif ! [ "${TEST_DISKUSB}" ]; then #erreur pas monté dans usb!
echo -e "\033[1;47;31m Erreur: pas trouvé dans /dev/disk/by-id/usb-* \033[0m" ;
zenity --error --text "Erreur: pas trouvé ${CLE_USB} dans /dev/disk/by-id/usb-*"
exit 0

elif [ "$TEST_WRITE" != "0" ]; then #test unlock
echo -e "\033[1;47;31m Erreur: suppport accessible en lecture uniquement, verouillé? \033[0m" ;
zenity --error --text "Erreur: suppport accessible en lecture uniquement, verouillé?"
exit 0

elif [ -e /dev/${CLE_USB} ]; then #ok existe 
echo -e '\E[37;44m'"\033[1m ok existe ${CLE_USB} \033[0m"
CHOIX_DD=$(fdisk -l | grep -i ^/dev/${CLE_USB})
echo -e '\E[37;44m'"\033[1m CHOIX_DD ==> ${CHOIX_DD} \033[0m"

LISTE_PART_SUPP=()
NBPART=$(fdisk -lu /dev/${CLE_USB} | grep -i "^/dev/${CLE_USB}[0-9]" | awk  '{print $1}'  | tr "\n" " " > /tmp/LISTE_PART_SUPP.txt)
LISTE_PART_SUPP=(${LISTE_PART_SUPP[@]} `cat /tmp/LISTE_PART_SUPP.txt`)
zenity --question --title="Alerte" --text="Votre clé USB à été détectée en <b>/dev/${CLE_USB}</b>
si cela ne vous semble pas exact, veuillez utiliser le bouton Annuler.

Attention vous allez effacer \"${#LISTE_PART_SUPP[@]}\" partition(s)\!
${CHOIX_DD}"

test $? -ne 0 && exit 0 # Bouton Annuler
#verif taille clé
TEST_TAILLE=$(($(sfdisk -s /dev/${CLE_USB}) / 1000))

echo "/dev/${CLE_USB} ${TEST_TAILLE}"
if  [ "$TEST_TAILLE" -ge "950" ]; then
echo -e '\E[37;44m'"\033[1m ok sup à 950Mo, on laisse passer $TEST_TAILLE Mo Utilisable \033[0m"
else
echo -e "\033[1;47;31m Erreur: clé de trop petite taille doit etre mini de 950Mo\! \033[0m" ;
zenity --error --text "Erreur: clé de trop petite taille doit etre mini de 950Mo\!"
exit 0
fi
fi
}
#_______________________________________________________________________________________________


#_______________________________________________________________________________________________
#________________________________________MOD_DEMONTE____________________________________________
function MOD_DEMONTE()
{
if [[ "${CLE_USB}" && "$(fdisk -l /dev/${CLE_USB})" ]]; then
#demonter
function DEMONTE()
{
while [ "$(mount -l | grep /dev/${CLE_USB})" ]
do
echo -e "\033[1;33;44m Démonter:$(mount -l | grep /dev/${CLE_USB} | awk '{print $1}' | xargs) \033[00m"
umount $(mount -l | grep /dev/${CLE_USB} | awk '{print $1}' | xargs)
sleep 2
done
}
#Attente tant que pas demonté
while true; do
if [ "$(mount -l | grep /dev/${CLE_USB})" ]; then
echo -e "\033[1;33;44m Démonter \033[00m"
DEMONTE
else
break
fi
done
else
echo -e "\033[1;47;31m erreur sur la fonction MOD_DEMONTE() CLE_USB:${CLE_USB} \033[0m" ;
fi
}
#_______________________________________________________________________________________________


#_______________________________________________________________________________________________
#demonter tous les .iso
function MOD_DEMONTEISO()
{
if [ -n "$(mount -l | grep -i ".iso")" ]; then
#demonter
function DEMONTE()
{
while [ "$(mount -l | grep -i ".iso")" ]
do
echo -e "\033[1;33;44m Démonter:$(mount -l | grep -i ".iso" | awk '{print $3}' | xargs) \033[00m"
umount $(mount -l | grep -i ".iso" | awk '{print $3}' | xargs)
sleep 2
done
}
#Attente tant que pas demonté
while true; do
if [ "$(mount -l | grep -i ".iso")" ]; then
echo -e "\033[1;33;44m Démonter \033[00m"
DEMONTE
else
break
fi
done
fi
}
#_______________________________________________________________________________________________


TEST_CONNEXION
COMPIL_SYSLINUX
MOD_DETECTION_AUTOMATIQUE
MOD_DEMONTE
MOD_DEMONTEISO


#rajouter install dependances
#rajouter install dependances
#rajouter install dependances
#rajouter install dependances

LISTE_ISO=()
cheminiso1=""; cheminiso2=""; cheminiso3=""; cheminiso4=""
T1="60" #partage-rw mini vital
T2="60" #boot-rw  +60 a refaire pour coller au plus pres...
T3=""; T4=""; T5=""; T6=""
T7="250" #casper-rw mini vital


#ici inserer gui de AnsuzPeorth
#ici inserer gui de AnsuzPeorth
#ici inserer gui de AnsuzPeorth
#ici inserer gui de AnsuzPeorth
#ici inserer gui de AnsuzPeorth

cheminiso1="$HOME/Bureau/ubuntu-8.10-desktop-i386.iso"
cheminiso2="$HOME/Bureau/kubuntu-8.10-desktop-i386.iso"
cheminiso3="$HOME/Bureau/xubuntu-8.10-desktop-i386.iso"
cheminiso4=""
label1="ubuntu"
label2="kubuntu"
label3="xubuntu"
label4=""


#on monte les .iso dans /tmp/...
#et calcul taille des .iso et verifs structure
cd /tmp
if [[ "$cheminiso1" && -f "$cheminiso1" ]]; then
mkdir mountlivecd1  &>/dev/null
TAILLE=$(($(du -sB 1 ${cheminiso1} | awk '{print $1}')/1000/1000))
T3="$(($TAILLE + (($TAILLE*5/100))))" #+5%
mount -o loop $cheminiso1 /tmp/mountlivecd1
test ! -e /tmp/mountlivecd1/casper && echo Erreur casper iso1 && exit 0
test ! -e /tmp/mountlivecd1/.disk && echo Erreur .disk iso1 && exit 0
test ! "$(echo -e "$cheminiso1" | grep -Ei "*.iso")" && echo Erreur .iso iso1 && exit 0
LISTE_ISO=(${LISTE_ISO[@]} $T3)
fi

if [[ "$cheminiso2" && -f "$cheminiso2" ]]; then
mkdir mountlivecd2 &>/dev/null
TAILLE=$(($(du -sB 1 ${cheminiso2} | awk '{print $1}')/1000/1000))
T4="$(($TAILLE + (($TAILLE*5/100))))" #+5%
mount -o loop $cheminiso2 /tmp/mountlivecd2
test ! -e /tmp/mountlivecd2/casper && echo Erreur casper iso2 && exit 0
test ! -e /tmp/mountlivecd2/.disk && echo Erreur .disk iso2 && exit 0
test ! "$(echo -e "$cheminiso2" | grep -Ei "*.iso")" && echo Erreur .iso iso2 && exit 0
LISTE_ISO=(${LISTE_ISO[@]} $T4)
fi

if [[ "$cheminiso3" && -f "$cheminiso3" ]]; then
mkdir mountlivecd3 &>/dev/null
TAILLE=$(($(du -sB 1 ${cheminiso3} | awk '{print $1}')/1000/1000))
T5="$(($TAILLE + (($TAILLE*5/100))))" #+5%
mount -o loop $cheminiso3 /tmp/mountlivecd3
test ! -e /tmp/mountlivecd3/casper && echo Erreur casper iso3 && exit 0
test ! -e /tmp/mountlivecd3/.disk && echo Erreur .disk iso3 && exit 0
test ! "$(echo -e "$cheminiso3" | grep -Ei "*.iso")" && echo Erreur .iso iso3 && exit 0
LISTE_ISO=(${LISTE_ISO[@]} $T5)
fi

if [[ "$cheminiso4" && -f "$cheminiso4" ]]; then
mkdir mountlivecd4 &>/dev/null
TAILLE=$(($(du -sB 1 ${cheminiso4} | awk '{print $1}')/1000/1000))
T6="$(($TAILLE + (($TAILLE*5/100))))" #+5%
mount -o loop $cheminiso4 /tmp/mountlivecd4
test ! -e /tmp/mountlivecd4/casper && echo Erreur casper iso4 && exit 0
test ! -e /tmp/mountlivecd4/.disk && echo Erreur .disk iso4 && exit 0
test ! "$(echo -e "$cheminiso4" | grep -Ei "*.iso")" && echo Erreur .iso iso4 && exit 0
LISTE_ISO=(${LISTE_ISO[@]} $T6)
fi


#renvoyer 0 si est vide, methode a revoir...
test -z "$T3" && T3=0
test -z "$T4" && T4=0
test -z "$T5" && T5=0
test -z "$T6" && T6=0


#ici reste a calculer la taille de partage-rw et de casper-rw $T1 et $T7
#calcul taille hors partage-rw et casper-rw avec 250 qui est le minimum vital!
#et pour partage-rw un minimum de 60 ?

TOTAL_VITAL="$(($T1+$T2+$T3+$T4+$T5+$T6+$T7))"
if [ "$TOTAL_VITAL" -le "$TEST_TAILLE" ]; then #si inf ou egal ok <=
echo -e '\E[37;44m'"\033[1m TOTAL_VITAL:$TOTAL_VITAL \033[0m"
else
echo "Erreur: pas assez de d\'espace! sur votre clé usb
Minimal:$TOTAL_VITAL
Disponible:$TEST_TAILLE"
#balancer message erreur et remonter gui
#balancer message erreur et remonter gui
#balancer message erreur et remonter gui
#balancer message erreur et remonter gui
#balancer message erreur et remonter gui
exit 0 #supprimer ce exit apres insertion gui
fi


#si reste + de 100 MB dispo monter proposition calcul tailles
UTILISABLE=$(($TEST_TAILLE-$TOTAL_VITAL+$T1))
if [ "$UTILISABLE" -ge  "100" ]; then #>=
MIN=8
MAX=${UTILISABLE}
DEF=$((${UTILISABLE}/2))
TAILLE_PARTAGE=$(zenity \
--width "400" \
--height "200" \
--text "<b><big><span color=\"red\"><span font-family=\"Helvetica\">Attention\!</span></span></big></b>
Taille souhaitée pour la partition de partage (partage-rw)
le reste ira a casper-rw le mode persistent" \
--scale \
--step=8 \
--value=$DEF \
--min-value=$MIN \
--max-value=$MAX \
)
T1=$TAILLE_PARTAGE
#T7 = UTILISABLE - TAILLE_PARTAGE + T7
CASPER_CALCUL=$(($(($UTILISABLE-$TAILLE_PARTAGE))+$T7))
T7=$CASPER_CALCUL
else
#sinon tout mettre a partage-rw
T1=$UTILISABLE
fi


if [ "$TEST_TAILLE" == "$(($T1+$T2+$T3+$T4+$T5+$T6+$T7))" ]; then
echo -e '\E[37;44m'"\033[1m VERIF_OK:$(($T1+$T2+$T3+$T4+$T5+$T6+$T7)) \033[0m"
else
echo -e "\033[1;47;31m Erreur: Veuillez contacter l'auteur du script erreur de calcul, vos données n'ont pas été modifiées. \033[0m" ;
exit 0
fi

#taille de la clé usb
echo TEST_TAILLE:$TEST_TAILLE
echo T1:$T1 #partage-rw
echo T2:$T2 #boot-rw
#taille des .iso dans etendue
echo T3:$T3 #.iso 1
echo T4:$T4 #.iso 2
echo T5:$T5 #.iso 3
echo T6:$T6 #.iso 4
echo T7:$T7 #casper-rw dans etendue
#ajouter swap ?
#ajouter part supp ?

#recalculer partitions sur des tailles valides pour parted
echo "LISTE_ISO:${LISTE_ISO[@]}"


function PARTITIONNER()
{
MOD_DEMONTE
#on formate premiere partition P1 en fat32
echo -e '\E[37;44m'"\033[1m début du préformatage \033[0m"
dd if=/dev/zero of=/dev/${CLE_USB} bs=512 count=1
parted -s /dev/${CLE_USB} mklabel msdos
parted -s /dev/${CLE_USB} mkpart primary ext2 1 100% # test
sleep 10
umount /dev/${CLE_USB}1
mke2fs -j -L extlinux-ro /dev/${CLE_USB}1 #formate et pose label
echo -e '\E[37;44m'"\033[1m fin  du préformatage \033[0m"
sleep 3

#verif structure
heads=$(sfdisk -G /dev/${CLE_USB} | awk '{print $4}')
sectors=$(sfdisk -G /dev/${CLE_USB} | awk '{print $6}')
cylinders=$(sfdisk -G /dev/${CLE_USB} | awk '{print $2}')

#supprimer test
MOD_DEMONTE
parted -s /dev/${CLE_USB} rm 1
sleep 5

#part primaire partage-rw
NOUVELLE="$T1"
i=0
while [ $i -lt $cylinders ]
do
i=$(($i+1))
RETOUR=$(($i*$(($heads * $sectors * 512))/1000/1000+1))
if [ $RETOUR -gt $NOUVELLE ]; then
echo -e '\E[37;44m'"\033[1m TAILLE A FORMATER ==> RETOUR:$RETOUR \033[0m"
break
fi
done
P1=$RETOUR
echo P1:$P1
MOD_DEMONTE
parted -s /dev/${CLE_USB} unit MB mkpart primary fat32 1 $P1 #partage-rw
sleep 10
mkfs.vfat -F 32 -n partage-rw /dev/${CLE_USB}1
sleep 10

#part primaire boot-rw
NOUVELLE="$(($P1+$T2))"
i=0
while [ $i -lt $cylinders ]
do
i=$(($i+1))
RETOUR=$(($i*$(($heads * $sectors * 512))/1000/1000+1))
if [ $RETOUR -gt $NOUVELLE ]; then
echo -e '\E[37;44m'"\033[1m TAILLE A FORMATER ==> RETOUR:$RETOUR \033[0m"
break
fi
done
P2=$RETOUR
echo P2:$P2
MOD_DEMONTE
parted -s /dev/${CLE_USB} unit MB mkpart primary ext2 $P1 $P2 #boot-rw
sleep 10
MOD_DEMONTE
mke2fs -j -L boot-rw /dev/${CLE_USB}2

#part etendue
NOUVELLE="$((P2+$T3+$T4+$T5+$T6))"
i=0
while [ $i -lt $cylinders ]
do
i=$(($i+1))
RETOUR=$(($i*$(($heads * $sectors * 512))/1000/1000+1))
if [ $RETOUR -gt $NOUVELLE ]; then
echo -e '\E[37;44m'"\033[1m TAILLE A FORMATER ==> RETOUR:$RETOUR \033[0m"
break
fi
done
P3=$RETOUR
echo P3:$P3
MOD_DEMONTE
parted -s /dev/${CLE_USB} unit MB mkpart extended $P2 $P3 #etendue
sleep 10

echo "LISTE_ISO:${LISTE_ISO[@]}"
#nombre de iso choisies
echo NB de LISTE_ISO:${#LISTE_ISO[@]}

#part logique 1
if [ "1" -le "${#LISTE_ISO[@]}" ]; then #<=
echo logique 1
NOUVELLE="$(($P2+$T3))"
i=0
while [ $i -lt $cylinders ]
do
i=$(($i+1))
RETOUR=$(($i*$(($heads * $sectors * 512))/1000/1000+1))
if [ $RETOUR -gt $NOUVELLE ]; then
echo -e '\E[37;44m'"\033[1m TAILLE A FORMATER ==> RETOUR:$RETOUR \033[0m"
break
fi
done
P4=$RETOUR
echo P4:$P4
MOD_DEMONTE
if [ "${#LISTE_ISO[@]}" != "1" ]; then
parted -s /dev/${CLE_USB} unit MB mkpart logical ext2 $P2 $P4 #iso1
else
parted -s /dev/${CLE_USB} unit MB mkpart logical ext2 $P2 $P3 #iso1
fi
sleep 10
MOD_DEMONTE
mke2fs -j -L distro1-ro /dev/${CLE_USB}5
fi

#part logique 2
if [ "2" -le "${#LISTE_ISO[@]}" ]; then #<=
echo logique 2
NOUVELLE="$(($P4+$T4))"
i=0
while [ $i -lt $cylinders ]
do
i=$(($i+1))
RETOUR=$(($i*$(($heads * $sectors * 512))/1000/1000+1))
if [ $RETOUR -gt $NOUVELLE ]; then
echo -e '\E[37;44m'"\033[1m TAILLE A FORMATER ==> RETOUR:$RETOUR \033[0m"
break
fi
done
P5=$RETOUR
echo P5:$P5
MOD_DEMONTE
if [ "${#LISTE_ISO[@]}" != "2" ]; then
parted -s /dev/${CLE_USB} unit MB mkpart logical ext2 $P4 $P5 #iso2
else
parted -s /dev/${CLE_USB} unit MB mkpart logical ext2 $P4 $P3 #iso2
fi
sleep 10
MOD_DEMONTE
mke2fs -j -L distro2-ro /dev/${CLE_USB}6
fi

#part logique 3
if [ "3" -le "${#LISTE_ISO[@]}" ]; then #<=
echo logique 3
NOUVELLE="$(($P5+$T5))"
i=0
while [ $i -lt $cylinders ]
do
i=$(($i+1))
RETOUR=$(($i*$(($heads * $sectors * 512))/1000/1000+1))
if [ $RETOUR -gt $NOUVELLE ]; then
echo -e '\E[37;44m'"\033[1m TAILLE A FORMATER ==> RETOUR:$RETOUR \033[0m"
break
fi
done
P6=$RETOUR
echo P6:$P6
MOD_DEMONTE
if [ "${#LISTE_ISO[@]}" != "3" ]; then
parted -s /dev/${CLE_USB} unit MB mkpart logical ext2 $P5 $P6 #iso3
else
parted -s /dev/${CLE_USB} unit MB mkpart logical ext2 $P5 $P3 #iso3
fi
sleep 10
MOD_DEMONTE
mke2fs -j -L distro3-ro /dev/${CLE_USB}7
fi

#part logique 4
if [ "4" -le "${#LISTE_ISO[@]}" ]; then #<=
echo logique 4
NOUVELLE="$(($P6+$T6))"
i=0
while [ $i -lt $cylinders ]
do
i=$(($i+1))
RETOUR=$(($i*$(($heads * $sectors * 512))/1000/1000+1))
if [ $RETOUR -gt $NOUVELLE ]; then
echo -e '\E[37;44m'"\033[1m TAILLE A FORMATER ==> RETOUR:$RETOUR \033[0m"
break
fi
done
P7=$RETOUR
echo P7:$P7
MOD_DEMONTE
if [ "${#LISTE_ISO[@]}" != "4" ]; then
parted -s /dev/${CLE_USB} unit MB mkpart logical ext2 $P6 $P3 #iso4
else
parted -s /dev/${CLE_USB} unit MB mkpart logical ext2 $P6 $P3 #iso4
fi
sleep 10
MOD_DEMONTE
mke2fs -j -L distro4-ro /dev/${CLE_USB}8
fi

#casper-rw
MOD_DEMONTE
parted -s /dev/${CLE_USB} unit MB mkpart primary ext2 $P3 100% #casper-rw
sleep 10
MOD_DEMONTE
mke2fs -j -L casper-rw /dev/${CLE_USB}4

parted -s /dev/${CLE_USB} print
fdisk -l /dev/${CLE_USB}
#marquer bootable part boot-rw
parted -s /dev/${CLE_USB} set 2 boot on

#mbr
cat /usr/share/syslinux/mbr.bin  >/dev/${CLE_USB}
MOD_DEMONTE
#sudo -u $SUDO_USER nautilus -q &>/dev/null
}
PARTITIONNER


function COPIEISO()
{
cd /tmp
mkdir mountiso &>/dev/null
mkdir mountboot &>/dev/null
mkdir mountusb &>/dev/null

#_________________________________________________________________
#boot-rw 
if [ "1" -le "${#LISTE_ISO[@]}" ]; then
MOD_DEMONTEISO
MOD_DEMONTE
#cheminiso1

mount -o loop $cheminiso1 /tmp/mountiso
mount /dev/${CLE_USB}2 /tmp/mountboot

mkdir /tmp/mountboot/extlinux
sudo cp /tmp/mountiso/isolinux/f[0-9].txt /tmp/mountboot/extlinux
sudo cp /tmp/mountiso/isolinux/f10.txt /tmp/mountboot/extlinux
sudo wget ${HEBERGEMENT}/background/splash.jpg -O /tmp/mountboot/extlinux/splash.jpg
sudo cp -f /boot/extlinux/vesamenu.c32 /tmp/mountboot/extlinux/vesamenu.c32

#generer ici haut de extlinux.conf
HAUT="default vesamenu.c32
prompt 0
timeout 300

F1 /extlinux/f1.txt
F2 /extlinux/f2.txt
F3 /extlinux/f3.txt
F4 /extlinux/f4.txt
F5 /extlinux/f5.txt
F6 /extlinux/f6.txt
F7 /extlinux/f7.txt
F8 /extlinux/f8.txt
F9 /extlinux/f9.txt
F0 /extlinux/f10.txt

MENU BACKGROUND /extlinux/splash.jpg

MENU TITLE LiveUSB Custom, Presser [tab] affiche options
MENU DEFAULT live1
"
echo -e "${HAUT}" | tee /tmp/mountboot/extlinux/extlinux.conf
fi
#_________________________________________________________________

#_________________________________________________________________
#isocd 1
if [ "1" -le "${#LISTE_ISO[@]}" ]; then
MOD_DEMONTEISO
MOD_DEMONTE
mount -o loop $cheminiso1 /tmp/mountiso
mount /dev/${CLE_USB}5 /tmp/mountusb
cp -Rf /tmp/mountiso/casper /tmp/mountusb/
cp -Rf /tmp/mountiso/.disk /tmp/mountusb/
cd /tmp/mountusb/
find . -type f -print0 | xargs -0 md5sum | tee md5sum.txt
cd -
#ajouter initrd et vmlinuz à boot-rw
MOD_DEMONTEISO
MOD_DEMONTE
mount -o loop $cheminiso1 /tmp/mountiso
mount /dev/${CLE_USB}2 /tmp/mountboot
cp -f /tmp/mountiso/casper/initrd.gz /tmp/mountboot/$(vol_id -l /dev/${CLE_USB}5)-initrd.gz
cp -f /tmp/mountiso/casper/vmlinuz /tmp/mountboot/$(vol_id -l /dev/${CLE_USB}5)-vmlinuz
FICHIER_EXTLINUX="LABEL live1
  menu label Mode $(vol_id -l /dev/${CLE_USB}5) live
  kernel /$(vol_id -l /dev/${CLE_USB}5)-vmlinuz
  append union=aufs root=LABEL=$(vol_id -l /dev/${CLE_USB}5) locale=${MODLANG[0]}_${MODLANG[1]} kbd-chooser/method=${MODLANG[3]} console-setup/layoutcode=${MODLANG[4]} console-setup/variantcode=${MODLANG[5]} console-setup/modelcode=${MODLANG[6]} boot=casper initrd=/$(vol_id -l /dev/${CLE_USB}5)-initrd.gz noprompt verbose splash --

LABEL live_toram1
  menu label Mode $(vol_id -l /dev/${CLE_USB}5) live toram 2Gio de ram au minimun
  kernel /iso1-vmlinuz
  append union=aufs root=LABEL=$(vol_id -l /dev/${CLE_USB}5) locale=${MODLANG[0]}_${MODLANG[1]} kbd-chooser/method=${MODLANG[3]} console-setup/layoutcode=${MODLANG[4]} console-setup/variantcode=${MODLANG[5]} console-setup/modelcode=${MODLANG[6]} boot=casper toram initrd=/$(vol_id -l /dev/${CLE_USB}5)-initrd.gz noprompt verbose splash --

LABEL persistent1
  menu label Mode $(vol_id -l /dev/${CLE_USB}5) persistent ATTENTION rend le PC proprietaire
  kernel /iso1-vmlinuz
  append union=aufs root=LABEL=$(vol_id -l /dev/${CLE_USB}5) locale=${MODLANG[0]}_${MODLANG[1]} kbd-chooser/method=${MODLANG[3]} console-setup/layoutcode=${MODLANG[4]} console-setup/variantcode=${MODLANG[5]} console-setup/modelcode=${MODLANG[6]} boot=casper persistent initrd=/$(vol_id -l /dev/${CLE_USB}5)-initrd.gz noprompt verbose splash --

MENU SEPARATOR
"
echo -e "${FICHIER_EXTLINUX}" | tee -a /tmp/mountboot/extlinux/extlinux.conf
fi
#_________________________________________________________________


#_________________________________________________________________
#isocd 2
if [ "2" -le "${#LISTE_ISO[@]}" ]; then
MOD_DEMONTEISO
MOD_DEMONTE
mount -o loop $cheminiso2 /tmp/mountiso
mount /dev/${CLE_USB}6 /tmp/mountusb
cp -Rf /tmp/mountiso/casper /tmp/mountusb/
cp -Rf /tmp/mountiso/.disk /tmp/mountusb/
cd /tmp/mountusb/
find . -type f -print0 | xargs -0 md5sum | tee md5sum.txt
cd -
#ajouter initrd et vmlinuz à boot-rw
MOD_DEMONTEISO
MOD_DEMONTE
mount -o loop $cheminiso2 /tmp/mountiso
mount /dev/${CLE_USB}2 /tmp/mountboot
cp -f /tmp/mountiso/casper/initrd.gz /tmp/mountboot/$(vol_id -l /dev/${CLE_USB}6)-initrd.gz
cp -f /tmp/mountiso/casper/vmlinuz /tmp/mountboot/$(vol_id -l /dev/${CLE_USB}6)-vmlinuz
FICHIER_EXTLINUX="LABEL live2
  menu label Mode $(vol_id -l /dev/${CLE_USB}6) live
  kernel /$(vol_id -l /dev/${CLE_USB}6)-vmlinuz
  append union=aufs root=LABEL=$(vol_id -l /dev/${CLE_USB}6) locale=${MODLANG[0]}_${MODLANG[1]} kbd-chooser/method=${MODLANG[3]} console-setup/layoutcode=${MODLANG[4]} console-setup/variantcode=${MODLANG[5]} console-setup/modelcode=${MODLANG[6]} boot=casper initrd=/$(vol_id -l /dev/${CLE_USB}6)-initrd.gz noprompt verbose splash --

LABEL live_toram2
  menu label Mode $(vol_id -l /dev/${CLE_USB}6) live toram 2Gio de ram au minimun
  kernel /iso1-vmlinuz
  append union=aufs root=LABEL=$(vol_id -l /dev/${CLE_USB}6) locale=${MODLANG[0]}_${MODLANG[1]} kbd-chooser/method=${MODLANG[3]} console-setup/layoutcode=${MODLANG[4]} console-setup/variantcode=${MODLANG[5]} console-setup/modelcode=${MODLANG[6]} boot=casper toram initrd=/$(vol_id -l /dev/${CLE_USB}6)-initrd.gz noprompt verbose splash --

LABEL persistent2
  menu label Mode $(vol_id -l /dev/${CLE_USB}6) persistent ATTENTION rend le PC proprietaire
  kernel /iso1-vmlinuz
  append union=aufs root=LABEL=$(vol_id -l /dev/${CLE_USB}6) locale=${MODLANG[0]}_${MODLANG[1]} kbd-chooser/method=${MODLANG[3]} console-setup/layoutcode=${MODLANG[4]} console-setup/variantcode=${MODLANG[5]} console-setup/modelcode=${MODLANG[6]} boot=casper persistent initrd=/$(vol_id -l /dev/${CLE_USB}6)-initrd.gz noprompt verbose splash --

MENU SEPARATOR
"
echo -e "${FICHIER_EXTLINUX}" | tee -a /tmp/mountboot/extlinux/extlinux.conf
fi
#_________________________________________________________________


#_________________________________________________________________
#isocd 3
if [ "3" -le "${#LISTE_ISO[@]}" ]; then
MOD_DEMONTEISO
MOD_DEMONTE
mount -o loop $cheminiso3 /tmp/mountiso
mount /dev/${CLE_USB}7 /tmp/mountusb
cp -Rf /tmp/mountiso/casper /tmp/mountusb/
cp -Rf /tmp/mountiso/.disk /tmp/mountusb/
cd /tmp/mountusb/
find . -type f -print0 | xargs -0 md5sum | tee md5sum.txt
cd -
#ajouter initrd et vmlinuz à boot-rw
MOD_DEMONTEISO
MOD_DEMONTE
mount -o loop $cheminiso3 /tmp/mountiso
mount /dev/${CLE_USB}2 /tmp/mountboot
cp -f /tmp/mountiso/casper/initrd.gz /tmp/mountboot/$(vol_id -l /dev/${CLE_USB}7)-initrd.gz
cp -f /tmp/mountiso/casper/vmlinuz /tmp/mountboot/$(vol_id -l /dev/${CLE_USB}7)-vmlinuz
FICHIER_EXTLINUX="LABEL live3
  menu label Mode $(vol_id -l /dev/${CLE_USB}7) live
  kernel /$(vol_id -l /dev/${CLE_USB}7)-vmlinuz
  append union=aufs root=LABEL=$(vol_id -l /dev/${CLE_USB}7) locale=${MODLANG[0]}_${MODLANG[1]} kbd-chooser/method=${MODLANG[3]} console-setup/layoutcode=${MODLANG[4]} console-setup/variantcode=${MODLANG[5]} console-setup/modelcode=${MODLANG[6]} boot=casper initrd=/$(vol_id -l /dev/${CLE_USB}7)-initrd.gz noprompt verbose splash --

LABEL live_toram3
  menu label Mode $(vol_id -l /dev/${CLE_USB}7) live toram 2Gio de ram au minimun
  kernel /iso1-vmlinuz
  append union=aufs root=LABEL=$(vol_id -l /dev/${CLE_USB}7) locale=${MODLANG[0]}_${MODLANG[1]} kbd-chooser/method=${MODLANG[3]} console-setup/layoutcode=${MODLANG[4]} console-setup/variantcode=${MODLANG[5]} console-setup/modelcode=${MODLANG[6]} boot=casper toram initrd=/$(vol_id -l /dev/${CLE_USB}7)-initrd.gz noprompt verbose splash --

LABEL persistent3
  menu label Mode $(vol_id -l /dev/${CLE_USB}7) persistent ATTENTION rend le PC proprietaire
  kernel /iso1-vmlinuz
  append union=aufs root=LABEL=$(vol_id -l /dev/${CLE_USB}7) locale=${MODLANG[0]}_${MODLANG[1]} kbd-chooser/method=${MODLANG[3]} console-setup/layoutcode=${MODLANG[4]} console-setup/variantcode=${MODLANG[5]} console-setup/modelcode=${MODLANG[6]} boot=casper persistent initrd=/$(vol_id -l /dev/${CLE_USB}7)-initrd.gz noprompt verbose splash --

MENU SEPARATOR"
echo -e "${FICHIER_EXTLINUX}" | tee -a /tmp/mountboot/extlinux/extlinux.conf
fi
#_________________________________________________________________


#_________________________________________________________________
#isocd 4
if [ "4" -le "${#LISTE_ISO[@]}" ]; then
MOD_DEMONTEISO
MOD_DEMONTE
mount -o loop $cheminiso4 /tmp/mountiso
mount /dev/${CLE_USB}8 /tmp/mountusb
cp -Rf /tmp/mountiso/casper /tmp/mountusb/
cp -Rf /tmp/mountiso/.disk /tmp/mountusb/
cd /tmp/mountusb/
find . -type f -print0 | xargs -0 md5sum | tee md5sum.txt
cd -
#ajouter initrd et vmlinuz à boot-rw
MOD_DEMONTEISO
MOD_DEMONTE
mount -o loop $cheminiso4 /tmp/mountiso
mount /dev/${CLE_USB}2 /tmp/mountboot
cp -f /tmp/mountiso/casper/initrd.gz /tmp/mountboot/$(vol_id -l /dev/${CLE_USB}8)-initrd.gz
cp -f /tmp/mountiso/casper/vmlinuz /tmp/mountboot/$(vol_id -l /dev/${CLE_USB}8)-vmlinuz
FICHIER_EXTLINUX="LABEL live4
  menu label Mode $(vol_id -l /dev/${CLE_USB}8) live
  kernel /$(vol_id -l /dev/${CLE_USB}8)-vmlinuz
  append union=aufs root=LABEL=$(vol_id -l /dev/${CLE_USB}8) locale=${MODLANG[0]}_${MODLANG[1]} kbd-chooser/method=${MODLANG[3]} console-setup/layoutcode=${MODLANG[4]} console-setup/variantcode=${MODLANG[5]} console-setup/modelcode=${MODLANG[6]} boot=casper initrd=/$(vol_id -l /dev/${CLE_USB}8)-initrd.gz noprompt verbose splash --

LABEL live_toram4
  menu label Mode $(vol_id -l /dev/${CLE_USB}8) live toram 2Gio de ram au minimun
  kernel /iso1-vmlinuz
  append union=aufs root=LABEL=$(vol_id -l /dev/${CLE_USB}8) locale=${MODLANG[0]}_${MODLANG[1]} kbd-chooser/method=${MODLANG[3]} console-setup/layoutcode=${MODLANG[4]} console-setup/variantcode=${MODLANG[5]} console-setup/modelcode=${MODLANG[6]} boot=casper toram initrd=/$(vol_id -l /dev/${CLE_USB}8)-initrd.gz noprompt verbose splash --

LABEL persistent4
  menu label Mode $(vol_id -l /dev/${CLE_USB}8) persistent ATTENTION rend le PC proprietaire
  kernel /iso1-vmlinuz
  append union=aufs root=LABEL=$(vol_id -l /dev/${CLE_USB}8) locale=${MODLANG[0]}_${MODLANG[1]} kbd-chooser/method=${MODLANG[3]} console-setup/layoutcode=${MODLANG[4]} console-setup/variantcode=${MODLANG[5]} console-setup/modelcode=${MODLANG[6]} boot=casper persistent initrd=/$(vol_id -l /dev/${CLE_USB}8)-initrd.gz noprompt verbose splash --

MENU SEPARATOR"
echo -e "${FICHIER_EXTLINUX}" | tee -a /tmp/mountboot/extlinux/extlinux.conf
fi
#_________________________________________________________________


if [ "1" -le "${#LISTE_ISO[@]}" ]; then
MOD_DEMONTEISO
MOD_DEMONTE
mount /dev/${CLE_USB}2 /tmp/mountboot
BAS="MENU TABMSG Pressez [Tab] pour afficher les options de boot"
echo -e "${BAS}" | tee -a /tmp/mountboot/extlinux/extlinux.conf
#extlinux
extlinux -i /tmp/mountboot/extlinux
fi
}
COPIEISO

#preparer isocd amorce
#MOD_DEMONTEISO
#MOD_DEMONTE
#mount /dev/${CLE_USB}2 /tmp/mountboot
#cp -f /tmp/mountboot/extlinux/extlinux.conf /oooooooooo


#lancer qemu pour test
#qemu -k fr -std-vga -no-acpi -boot c -usb -usbdevice "/dev/sdc" -hda "/dev/sdc2" -m 512
#QEMU_INSTALL

echo -e '\E[37;44m'"\033[1m F.I.N \033[0m"
read
exit 0

multiboot1.png

Dernière modification par frafa (Le 10/12/2008, à 18:58)

Hors ligne

#54 Le 10/12/2008, à 18:57

AnsuzPeorth

Re : MultiBoot LiveUSB & ModCustom LiveCD

ok, pas de probleme, mais j'ai a faire aussi ce soir et dans la nuit, mais je traine dans le coin !


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#55 Le 10/12/2008, à 21:36

AnsuzPeorth

Re : MultiBoot LiveUSB & ModCustom LiveCD

Vite fait  (non fonctionnel), pour voir.

Si, lors de la boucle sur l'acceuil (espace disque insuffisant), si on veut garder les données deja saisise par l'utilisateur, faut exporter toutes les variables.

Un truc du genre (mais c toi le 'codeur', pas moi ..)

# exporter les variables (necessaire sinon erreurs), pour les retrouver si boucle
export filechooserbutton1=""
export filechooserbutton2=""
export filechooserbutton3=""
export filechooserbutton4=""


espace_disque_suffisant="1"

# un truc du genre (since ou until )
#on sort de la boucle quand on a cliquer sur "quitter" ou que l'espace disque est suffisant (+ autres controle si besoin)

since [ "$retval" = "0" ]  && [ "$espace_disque_suffisant" = "1" ]
do
ACCEUIL=`autoglade multiboot0.7.glade`
retval=$?
eval $ACCEUIL

#expporter pour retrouver si boucle (j'ai essayé un export autoargs, mais ca le faisait pas ! a confirmer)
export filechooserbutton1
export filechooserbutton2
export filechooserbutton3
export filechooserbutton4
export entry1
export entry2
export entry3
export entry4

 # verif espace disque
 if espace disque suffisant
  espace_disque_suffisant="0"
 else
 espace_disque_suffisant="1"
fi
done

Mais bon, l'export c vraiment optionnel, surtout si tu ne controle pas combien de distrib ont ete choisi (via checkbutton).

Dernière modification par AnsuzPeorth (Le 10/12/2008, à 21:52)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#56 Le 10/12/2008, à 22:31

frafa

Re : MultiBoot LiveUSB & ModCustom LiveCD

==> AnsuzPeorth
euhhhhhhh
dit moi le bouton Quitter tu detecte comment que user fait Quitter ?

Hors ligne

#57 Le 10/12/2008, à 23:03

AnsuzPeorth

Re : MultiBoot LiveUSB & ModCustom LiveCD

frafa a écrit :

==> AnsuzPeorth
euhhhhhhh
dit moi le bouton Quitter tu detecte comment que user fait Quitter ?

Après autoglade je mets $? dans  une variable.

ACCEUIL=`autoglade multiboot0.7.glade`
retval=$?

Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#58 Le 10/12/2008, à 23:13

frafa

Re : MultiBoot LiveUSB & ModCustom LiveCD

y a des moments j'te jure , je pose vraiment des questions a la con...
j'ai presque honte!

Hors ligne

#59 Le 10/12/2008, à 23:22

AnsuzPeorth

Re : MultiBoot LiveUSB & ModCustom LiveCD

frafa a écrit :

y a des moments j'te jure , je pose vraiment des questions a la con...
j'ai presque honte!

Ca me rassure, je suis pas le seul !


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#60 Le 10/12/2008, à 23:29

AnsuzPeorth

Re : MultiBoot LiveUSB & ModCustom LiveCD

Finalement, c pas une bonne idée d'exporter les données saisies en cas de boucle...Ca risquerait de foutre le bordel, ce serait mieux de revenir sur interface initialisé ! ( surtout qd tu vois ce qui se passe qd tu decoche la deuxieme distrib par exemple, ca fout la pagaille, donc a eviter). A toi de me dire ?
Sinon, faudra rendre visible les 4 zones de saisie, pas d'effets d'apparition...(juste grisée, ca pourrait etre pas mal aussi !

Dernière modification par AnsuzPeorth (Le 10/12/2008, à 23:31)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#61 Le 11/12/2008, à 00:21

frafa

Re : MultiBoot LiveUSB & ModCustom LiveCD

j'ai integré ton interface
reste a voir comment je calcule taille patrage-rw casper-rw
en pourcentage avec ton interface ou de maniere precise
avec zenity juste derriere...

si te dit passe sur msn
frafa2 (\arobase) hotmail (\point) fr

Hors ligne

#62 Le 11/12/2008, à 01:14

AnsuzPeorth

Re : MultiBoot LiveUSB & ModCustom LiveCD

me suis connecté→→→yoanne


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#63 Le 11/12/2008, à 01:41

AnsuzPeorth

Re : MultiBoot LiveUSB & ModCustom LiveCD

Ben je t'ai mis dans mes contact, tu devrais avoir une demande , non

Dernière modification par AnsuzPeorth (Le 11/12/2008, à 02:26)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#64 Le 11/12/2008, à 06:19

frafa

Re : MultiBoot LiveUSB & ModCustom LiveCD

Bon c'est quasi fini
me reste a faire du debogage....
et je vous livre une version a tester...

si tout va bien ce soir , je pense.

#!/bin/bash

#	│▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
#	│                    multiboot.sh                    │
#	│              écrit par François Fabre              │
#	│    interface graphique réalisé par AnsuzPeorth     │
#	│             mer 10 déc 2008 18:42:14 CET           │
#	│                                                    │
#	│                 Multiboot LiveUSB                  │
#	│▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│

#E-Mail: liveusb@gmail.com En Français SVP !
#Copyright: (C) 2007  Fabre François
#License: GNU General Public License (GPL)
#Ce programme est un logiciel libre: vous pouvez le redistribuer
#et/ou le modifier selon les termes de la "GNU General Public
#License", tels que publiés par la "Free Software Foundation"; soit
#la version 2 de cette licence ou (à votre choix) toute version
#ultérieure.
#
#Ce programme est distribué dans l'espoir qu'il sera utile, mais
#SANS AUCUNE GARANTIE, ni explicite ni implicite; sans même les
#garanties de commercialisation ou d'adaptation dans un but spécifique.
#
#Se référer à la "GNU General Public License" pour plus de détails.
#
#Vous devriez avoir reçu une copie de la "GNU General Public License"
#en même temps que ce programme; sinon, écrivez a la "Free Software
#Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA".
#http://www.gnu.org/licenses/gpl-howto.fr.html

HEBERGEMENT="http://liveusb.info/multiboot"
MODLANG=(fr FR UTF-8 fr fr nodeadkeys pc105 Europe/Paris)
#temporaire penser a modifier url de dl AnsuzPeorth
URLGUI="http://liveusb.info/multiboot/multiboot0.9.glade"
SPLASHIMG="http://liveusb.info/multiboot/splash.jpg"
CHEMIN_SCRIPT="$(dirname $0)"
NOM_SCRIPT="$(basename $0)"
FULL_NOM=$CHEMIN_SCRIPT/$NOM_SCRIPT
export HEBERGEMENT
export MODLANG
export URLGUI

#_______________________________________________________________________________________________
#_________________________________________Test_sudo_____________________________________________
function LANCEUR()
{
if [ ! "$(ps ax | grep sudo | grep xterm | grep $0 | grep -v grep)" ]; then
xterm -e "sudo $0"
read
exit 0
fi
if [ ! "$SUDO_USER" ]; then
echo -e "\033[1;47;31m Erreur: Pas en root! utilisez ==> sudo $0 \033[0m" ;
read
exit 0
fi
}
LANCEUR
#_______________________________________________________________________________________________


#_______________________________________________________________________________________________
#________________________________________TIMEOUT________________________________________________
function TIMEOUT()
{
echo $(date +%s) > "/tmp/Log_liveusb.txt"
DATE_BEGIN=`cat /tmp/Log_liveusb.txt`;
function BTN_ANNULER()
{
if [ "$?" -ne "0" ]; then
MOD_CONFIRM="$(zenity \
--title="Live CD/USB" \
--text="Demande arrêt du script" \
--width=380 \
--height=10 \
--list \
--checklist \
--print-column="2" \
--separator=" " \
--hide-column="2" \
--column="*" \
--column="*" \
--column="Description" \
FALSE A "Veuiller cocher pour confirmer arrêt du script")"
if [ "$MOD_CONFIRM" == "A" ]; then
echo -e "\033[1;47;31m Process N°$PID_SCRIPT annulé par utilisateur: $MESSAGE \"$?\" \033[0m" ;
rm /tmp/Log_liveusb.txt &>/dev/null
kill -9 $PID_SCRIPT
read
exit 0
fi
fi
}
function BOUCLE()
{
echo "1" ; 
while true; do
echo "#${MESSAGE}" ; 
sleep 1; 
if ! [ -e "/tmp/Log_liveusb.txt" ]; then 
break ;
fi;
done; 
echo "100" ; 
}
BOUCLE | zenity --progress --pulsate --width 600 --auto-close || BTN_ANNULER
DATE_END=`date +%s` ; 
((ECART=DATE_END-DATE_BEGIN)) ;
((MIN=ECART/60)) ; 
((SEC=ECART%60)) ;
echo -e '\E[37;44m'"\033[1m fin de $MESSAGE \033[0m"
echo -e '\E[37;44m'"\033[1m Temps d'execution: $MIN Minutes et $SEC Secondes \033[0m"
}
#_______________________________________________________________________________________________


#_______________________________________________________________________________________________
#__________________________________Test connexion internet______________________________________
function TEST_CONNEXION()
{
MESSAGE="Test connexion internet, veuillez patienter..."
TIMEOUT&
while true; do
#TEST="$(ping -q -c 2 www.google.fr &>/dev/null 2>&1)"
TEST="$(ping -q -c 2 $(echo $HEBERGEMENT | sed 's/.*\/\///;s/\/.*//') &>/dev/null 2>&1)"
if [ $? -eq 0 ]; then
echo -e '\E[37;44m'"\033[1m Connexion internet ok. \033[0m"
rm /tmp/Log_liveusb.txt
sleep 2
break
else
echo -e "\033[1;47;31m Vérifiez votre connexion internet.\n$HEBERGEMENT\nle site répond pas... \033[0m" ;
sleep 2
fi
done
}
#_______________________________________________________________________________________________


#_______________________________________________________________________________________________
#______________________________________CHECK_VERSION____________________________________________
function MOD_CHECK_VERSION()
{
wget ${HEBERGEMENT}/$NOM_SCRIPT -O /tmp/$NOM_SCRIPT
TV1_md5="$(md5sum "/tmp/$NOM_SCRIPT" | awk '{print $1}')"
TV2_md5="$(md5sum "$0" | awk '{print $1}')"
if [ ! "$(cat /tmp/$NOM_SCRIPT)" ]; then
echo -e "\033[1;47;31m Erreur: script impossible à télécharger \033[0m" ;
exit 0
fi
if [ "$TV1_md5" == "$TV2_md5" ] ; then
echo -e '\E[37;44m'"\033[1m $TV1_md5 \033[0m"
echo -e '\E[37;44m'"\033[1m $TV2_md5 \033[0m"
echo -e '\E[37;44m'"\033[1m Vous utilisez bien la dernière version du script. \033[0m"
else
echo -e "\033[1;47;31m Nouvelle version:$TV1_md5 \033[0m" ;
echo -e "\033[1;47;31m Version actuelle:$TV2_md5 \033[0m" ;
DIFFERENCES=$(diff $FULL_NOM /tmp/$NOM_SCRIPT)
echo -e "Une nouvelle version du script est disponible.
E-Mail: frafaster@gmail.com
La fenêtre suivante va vous proposer
de télécharger la dernière version du script.

Détail des différences:
${DIFFERENCES}
" | zenity \
--title="Live CD/USB" \
--width=640 \
--height=480 \
--text-info
fi
rm /tmp/$NOM_SCRIPT

function UPGRADE_LIVEUSB()
{
UPDATE=$(zenity \
--title="Live CD/USB" \
--text="Choisir l'option désirée dans la liste ci-dessous\n$NOM_SCRIPT" \
--window-icon="/usr/share/pixmaps/gnome-debian.png" \
--width=400 \
--height=180 \
--list \
--print-column="2" \
--radiolist \
--separator=" " \
--column="*" \
--column="Val" \
--column="Fonction à exécuter" \
--hide-column="2" \
TRUE "A" "Ne pas mettre à jour le script" \
FALSE "B" "Mettre à jour le script" \
)
test $? -ne 0 && exit 0 # Bouton Annuler

if [ "${UPDATE}" == "A" ]; then 
echo -e '\E[37;44m'"\033[1m Ne pas mettre à jour le script \033[0m"

elif [ "${UPDATE}" == "B" ]; then
echo -e '\E[37;44m'"\033[1m Mettre à jour le script \033[0m"
cd $HOME
rm ./$NOM_SCRIPT*
wget ${HEBERGEMENT}/$NOM_SCRIPT
chown $SUDO_USER:$SUDO_USER ./$NOM_SCRIPT
chmod 644 ./$NOM_SCRIPT
chmod +x ./$NOM_SCRIPT
./$NOM_SCRIPT&
exit 0
fi
}

if [ "$TV1_md5" != "$TV2_md5" ] ; then
echo "Propose Upgrade"
UPGRADE_LIVEUSB
fi
}
MOD_CHECK_VERSION
#_______________________________________________________________________________________________


#_______________________________________________________________________________________________
#______________________Vérification des dépendances manquantes__________________________________
function VERIF_DEPENDENCES
{
MESSAGE="Vérification des dépendances en cours, veuillez patienter..."
TIMEOUT&
MANQUE=();

if [ "$(lsb_release -si)" == "Ubuntu" ]; then
LISTEDEPENDANCES=(autoglade zenity w3m nmap bc genisoimage nasm build-essential rsync grub hdparm whois util-linux coreutils mtools mbr e2fsprogs parted dosfstools wget sleuthkit sed unaccent)
else
echo -e "\033[1;47;31m Erreur: lsb_release:$(lsb_release -si) != Ubuntu \033[0m" ;
rm /tmp/Log_liveusb.txt
sleep 2
read
exit 0
fi

i=0
while (( i < ${#LISTEDEPENDANCES[@]} ))
do
LI="${LISTEDEPENDANCES[$i]}"
#TEST=`dpkg-query -W -f='${Status}\n' $LI | grep -i "install ok installed"`
TEST=`dpkg -s $LI | grep -i "Status"`
(( i = i + 1 ))
if ! [ "${TEST}" == "Status: install ok installed" ]; then
echo -e "\033[1;47;31m Manque: ${LI} \033[0m" ;
MANQUE=(${MANQUE[@]} $LI)
fi
done

rm /tmp/Log_liveusb.txt
sleep 2

if ! [ -z "${MANQUE}" ]; then

function ACTIVER_SOURCES()
{
echo -e '\E[37;44m'"\033[1m Activer toute les sources et recharger \033[0m"
for source in main universe restricted multiverse
do
software-properties-gtk -n -e $source > /dev/null 2>&1
done
apt-get update
}
ACTIVER_SOURCES

INSTALLER="${MANQUE[@]}"
echo -e "\033[1;47;31m il manque des dépendances, pour les installer:\nsudo apt-get install -y $INSTALLER \033[0m" ;
INSTALL_DEP=$(zenity \
--title="Live CD/USB" \
--text="Choisir l'option désirée dans la liste ci-dessous" \
--window-icon="/usr/share/pixmaps/gnome-debian.png" \
--width=440 \
--height=220 \
--list \
--print-column="2" \
--radiolist \
--separator=" " \
--column="*" \
--column="Val" \
--column="Fonction à exécuter" \
--hide-column="2" \
TRUE "A" "Installer les dépendances manquantes ${INSTALLER}" \
FALSE "B" "Non merçi, je préfère les installer manuellement" \
)
test $? -ne 0 && read && exit 0 # Bouton Annuler
if [ "${INSTALL_DEP}" == "A" ]; then 
INSTALLER=$(echo -e "$INSTALLER" | grep -v "^#" | xargs)
INSTALLER=(${INSTALLER[@]})
i=0
while (( i < ${#INSTALLER[@]} ))
do
echo "${INSTALLER[$i]}"
xterm -e "apt-get install -y --force-yes ${INSTALLER[$i]}"
apt-get clean &>/dev/null
(( i = i + 1 ))
done
apt-get autoremove -y &>/dev/null
apt-get autoclean &>/dev/null
fi
echo -e "\033[1;47;31m Relancer le script \033[0m" ;
. $NOM_SCRIPT&
exit 0
fi
}
#_______________________________________________________________________________________________


#_______________________________________________________________________________________________
#_____________________________________QEMU_INSTALL______________________________________________
#suggéré par smo ==> http://forum.ubuntu-fr.org/viewtopic.php?id=132294
## installe qemu et compile kqemu
function QEMU_INSTALL()
{
#CHERCHE_CLE
MESSAGE="Vérification et mise en place de quemu et kqemu (acceleration)"
TIMEOUT&
if [ ! -e /usr/bin/qemu ]; then
echo "installation de qemu"
    aptitude -y install qemu kqemu-common module-assistant &>/dev/null
fi

if [ "$(lsmod |  grep kqemu)" == "" ]; then
modprobe kqemu &>/dev/null
mknod /dev/kqemu c 250 0 &>/dev/null
chmod 666 /dev/kqemu &>/dev/null
fi

if [ "$(lsmod |  grep kqemu)" == "" ]; then
echo "Compile et met en place kqemu (acceleration)"
    m-a a-i kqemu &>/dev/null
modprobe kqemu &>/dev/null
mknod /dev/kqemu c 250 0 &>/dev/null
chmod 666 /dev/kqemu &>/dev/null
fi

rm "/tmp/Log_liveusb.txt"
sleep 2

RAM_LIBRE="$(free | grep -e "-/+" | awk '{print $4}')"
if [ "$RAM_LIBRE" -gt "512" ]; then
RAM_LIBRE=512
elif [ "$RAM_LIBRE" -gt "256" ]; then
echo -e '\E[37;44m'"\033[1m Espace ram disponible $RAM_LIBRE Mio \033[0m"
RAM_LIBRE=256
elif [ "$RAM_LIBRE" -lt "256" ]; then
echo -e "\033[1;47;31m Erreur: pas assez de ram libre disponible:$RAM_LIBRE souhaité:256 Mio \033[0m" ;
read
exit 0
fi

echo "Démarrer qemu pour vérification de boot"
zenity --info --text="Attention!
pour démarrer clé USB avec qemu pour test,
veuillez utiliser le dernier menu extlinux a savoir:
Mode live qemu generic.all_generic_ide=1"
qemu -k fr -std-vga -no-acpi -boot c -usb -usbdevice "/dev/${CLE_USB}" -hda "/dev/${CLE_USB}2" -m $RAM_LIBRE
}
#_______________________________________________________________________________________________
#___________________________________F.I.N_QEMU_INSTALL__________________________________________


#_______________________________________________________________________________________________
#______________________________________syslinux_________________________________________________
function COMPIL_SYSLINUX()
{
#check espace dans /tmp si boot livecd
POINTMONTAGE="$(df -T -P -B 1M /tmp  | grep "^tmpfs" | awk '{print $7}')"
DISPO="$(df -T -P -B 1M /tmp | grep "^tmpfs" | awk '{print $5}')"
echo POINTMONTAGE:$POINTMONTAGE
echo DISPO:$DISPO
if [[ $POINTMONTAGE == "/tmp" && "$DISPO" -lt "120" ]]; then
echo -e "\033[1;47;31m Erreur: /tmp est chargé en ram et il ne reste pas assez d\'espace libre pour compiler syslinux Libre:$DISPO Mib \033[0m" ;
#essayer de liberer de la place!
#sudo umount /dev/shm
#sudo mount -o remount,size=512m /dev/shm
fi

#compiler syslinux
#http://syslinux.zytor.com/download.php
#http://freshmeat.net/projects/syslinux/
#http://www.kernel.org/pub/linux/utils/boot/syslinux/
SYL_VERSION="3.72"
function TEST_VERSION()
{
echo $(/sbin/extlinux -v 2>&1 | awk '{print $2}')
}
MESSAGE="Suppression/Purge de syslinux en cours..."
TIMEOUT&
apt-get remove --purge -y syslinux &>/dev/null
rm "/tmp/Log_liveusb.txt"
sleep 2
if [[ "$(TEST_VERSION)" != "${SYL_VERSION}" || ! -e /usr/share/syslinux/mbr.bin || ! -e /boot/extlinux/vesamenu.c32 ]]; then
echo -e '\E[37;44m'"\033[1m Compilation de syslinux ${SYL_VERSION} \033[0m"
test -e /usr/lib/syslinux && rm -Rf /usr/lib/syslinux/* ;
cd /tmp
#wget -r -nd http://ftp.free.fr/mirrors/ftp.kernel.org/linux/utils/boot/syslinux//syslinux-${SYL_VERSION}.tar.bz2 2>&1 \
#wget -r -nd http://freshmeat.net/redir/syslinux/10177/url_bz2/syslinux-${SYL_VERSION}.tar.bz2 2>&1 \
wget -r -nd http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-${SYL_VERSION}.tar.bz2 2>&1 \
| sed -u 's/\([ 0-9]\+K\)[ \.]*\([0-9]\+%\) \(.*\)/\2\n#Transfert : \1 (\2) à \3/' \
| zenity --progress --auto-close --width 400 --title "Téléchargement de syslinux-${SYL_VERSION}"
MESSAGE="Compilation/Installation de syslinux-${SYL_VERSION}, veuillez patienter..."
TIMEOUT&
tar jxvf syslinux-${SYL_VERSION}.tar.bz2
rm syslinux-${SYL_VERSION}.tar.bz2*
cd syslinux-${SYL_VERSION}
#make all &>/dev/null
make all
make install
make netinstall
make extbootinstall
#ldconfig -v
cd $HOME
rm -R /tmp/syslinux-${SYL_VERSION}
rm "/tmp/Log_liveusb.txt"
sleep 2
else
echo -e '\E[37;44m'"\033[1m Version installée de syslinux:$(TEST_VERSION) \033[0m"
fi
#test extlinux
if [ "$(TEST_VERSION)" != "${SYL_VERSION}" ]; then
echo -e "\033[1;47;31m Erreur: pas trouvé extlinux \"${SYL_VERSION}\" ==> trouvé:\"$(TEST_VERSION)\" \033[0m" ;
read
exit 0
fi
#test install syslinux
if [ ! "$(ls -l /usr/share/syslinux/mbr.bin)" ]; then
echo -e "\033[1;47;31m Erreur: /usr/share/syslinux/mbr.bin \033[0m" ;
read
exit 0
fi
if [ ! "$(ls -l /boot/extlinux/vesamenu.c32)" ]; then
echo -e "\033[1;47;31m Erreur: /boot/extlinux/vesamenu.c32 \033[0m" ;
read
exit 0
fi
if [ ! "$(ls -l /usr/share/syslinux/isolinux.bin)" ]; then
echo -e "\033[1;47;31m Erreur: /usr/share/syslinux/isolinux.bin \033[0m" ;
read
exit 0
fi
}
#_______________________________________________________________________________________________


#_______________________________________________________________________________________________
#______________________________________MOD_DETECTION_AUTOMATIQUE_____________________________________________
function MOD_DETECTION_AUTOMATIQUE()
{
rm /tmp/RESULT_SD /tmp/CHECK_SD /tmp/CHECK_SD2 &>/dev/null;
CLE_USB="";LIMIT=30;a=0;
echo $(date +%s) > "/tmp/Log_liveusb.txt"
function BTN_ANNULER()
{
echo -e "\033[1;47;31m Process annulé par utilisateur \033[0m" ;
rm /tmp/Log_liveusb.txt
echo -e "\033[1;47;31m Tuer ces process: $PID_SCRIPT \033[0m" ;
kill -9 $PID_SCRIPT
read
exit 0
}
if [ ! -e /proc/partitions ]; then
echo -e "\033[1;47;31m Erreur: impossible de détecter /proc/partitions \033[0m" ;
read
exit 0
fi; 
function LOOP()
{
cat /proc/partitions | grep "sd[a-z]$" | awk '{print $4}' >/tmp/CHECK_SD
while (( a <= LIMIT )); do
let a++
echo $(echo "scale=1; (( $a / $LIMIT * 100))" | bc)
echo "#Détection automatique de votre clé USB\nVeuillez brancher ou débrancher puis rebrancher votre clé USB."
cat /proc/partitions | grep "sd[a-z]$" | awk '{print $4}' >/tmp/CHECK_SD2
sleep 2 ;

DIFF=$(diff -a /tmp/CHECK_SD /tmp/CHECK_SD2 | sed -n 2p | awk '{print $2}')

if ! [ -e "/tmp/Log_liveusb.txt" ]; then #annulation
break ;

elif [[ "$DIFF" && ! -e /dev/$DIFF ]]; then #eject
echo "#eject clé $DIFF"
cat /proc/partitions | grep "sd[a-z]$" | awk '{print $4}' >/tmp/CHECK_SD
sleep 2 ;

elif [[ "$DIFF" && -e /dev/$DIFF ]]; then #ok trouvé
echo "$DIFF" >/tmp/RESULT_SD
break ; 

elif [ "${a}" -ge "${LIMIT}" ]; then #timeout dépassé fin
zenity --error --text "Fin du script, pas réussit à détecter votre clé USB dans le délai imparti."&
rm /tmp/Log_liveusb.txt
kill -9 $PID_SCRIPT
read
exit 0

else #boucle
echo "#Recherche... Timeout Attente $(( ${a} * 4 )) secondes (Max $(($LIMIT*4)) secondes)"
sleep 2 ; 
fi

done ;
}
LOOP | zenity --progress --progress --auto-close || BTN_ANNULER
CLE_USB=$(cat /tmp/RESULT_SD)
echo -e '\E[37;44m'"\033[1m CLE_USB ==> /dev/ $CLE_USB \033[0m"

#cherche UUID et sd? de la clé usb, et verifie que n'est pas dans fstab
blkid -s UUID | grep /dev/$CLE_USB | while read line
do
UUID="$(echo $line  | awk  '{print $2}' | awk -F\" '{print $2}')"
echo -e '\E[37;44m'"\033[1m Cherche:$UUID \033[0m"
if [[ "$(echo $(cat /etc/fstab) | grep "$UUID")" || "$(echo $(cat /etc/fstab) | grep "/dev/$CLE_USB")" ]]; then
echo -e "\033[1;47;31m Erreur le disque sélectionné fait partie de fstab,
ce script est fait pour des volumes amovibles
et /dev/$CLE_USB ne devrait pas figurer dans fstab\!... Sortie \033[0m" ;
zenity --error --text "Erreur le disque sélectionné fait partie de fstab
ce script est fait pour des volumes amovibles
et /dev/${CLE_USB} UUID=$UUID
ne devrait pas figurer dans fstab\!
"
read
exit 0
fi
done

TEST_DISKUSB=`ls -la /dev/disk/by-id/usb-* | grep "${CLE_USB}"`
TEST_WRITE=$(hdparm -v /dev/${CLE_USB} | grep readonly | awk '{print $3}')

if ! [ -e /dev/${CLE_USB} ]; then #n'existe pas
echo -e "\033[1;47;31m /dev/${CLE_USB} n\'existe pas \! \033[0m" ;
zenity --error --text "/dev/${CLE_USB} n\'existe pas \!"
read
exit 0

elif ! [ "$(echo "/dev/${CLE_USB}" | grep -i "/dev/sd.*[0-9]")" == "" ]; then #erreur pas racine
echo -e "\033[1;47;31m veuillez sélectionner un disque et non une partition\! Ex: sda,sdb;sdc,... \033[0m" ;
zenity --error --text "veuillez sélectionner un disque et non une partition\! Ex: sda,sdb;sdc,..."
read
exit 0

elif ! [ "${TEST_DISKUSB}" ]; then #erreur pas monté dans usb!
echo -e "\033[1;47;31m Erreur: pas trouvé dans /dev/disk/by-id/usb-* \033[0m" ;
zenity --error --text "Erreur: pas trouvé ${CLE_USB} dans /dev/disk/by-id/usb-*"
read
exit 0

elif [ "$TEST_WRITE" != "0" ]; then #test unlock
echo -e "\033[1;47;31m Erreur: suppport accessible en lecture uniquement, verouillé? \033[0m" ;
zenity --error --text "Erreur: suppport accessible en lecture uniquement, verouillé?"
read
exit 0

elif [ -e /dev/${CLE_USB} ]; then #ok existe 
echo -e '\E[37;44m'"\033[1m ok existe ${CLE_USB} \033[0m"
CHOIX_DD=$(fdisk -l | grep -i ^/dev/${CLE_USB})
echo -e '\E[37;44m'"\033[1m CHOIX_DD ==> ${CHOIX_DD} \033[0m"

LISTE_PART_SUPP=()
NBPART=$(fdisk -lu /dev/${CLE_USB} | grep -i "^/dev/${CLE_USB}[0-9]" | awk  '{print $1}'  | tr "\n" " " > /tmp/LISTE_PART_SUPP.txt)
LISTE_PART_SUPP=(${LISTE_PART_SUPP[@]} `cat /tmp/LISTE_PART_SUPP.txt`)
zenity --question --title="Alerte" --text="Votre clé USB à été détectée en <b>/dev/${CLE_USB}</b>
si cela ne vous semble pas exact, veuillez utiliser le bouton Annuler.

Attention vous allez effacer \"${#LISTE_PART_SUPP[@]}\" partition(s)\!
${CHOIX_DD}"

test $? -ne 0 && read && exit 0 # Bouton Annuler
#verif taille clé
TEST_TAILLE=$(($(sfdisk -s /dev/${CLE_USB}) / 1000))

echo "/dev/${CLE_USB} ${TEST_TAILLE}"
if  [ "$TEST_TAILLE" -ge "950" ]; then
echo -e '\E[37;44m'"\033[1m ok sup à 950Mo, on laisse passer $TEST_TAILLE Mo Utilisable \033[0m"
else
echo -e "\033[1;47;31m Erreur: clé de trop petite taille doit etre mini de 950Mo\! \033[0m" ;
zenity --error --text "Erreur: clé de trop petite taille doit etre mini de 950Mo\!"
read
exit 0
fi
fi
}
#_______________________________________________________________________________________________


#_______________________________________________________________________________________________
#________________________________________MOD_DEMONTE____________________________________________
function MOD_DEMONTE()
{
if [[ "${CLE_USB}" && "$(fdisk -l /dev/${CLE_USB})" ]]; then
#demonter
function DEMONTE()
{
while [ "$(mount -l | grep /dev/${CLE_USB})" ]
do
echo -e "\033[1;33;44m Démonter:$(mount -l | grep /dev/${CLE_USB} | awk '{print $1}' | xargs) \033[00m"
umount $(mount -l | grep /dev/${CLE_USB} | awk '{print $1}' | xargs)
sleep 2
done
}
#Attente tant que pas demonté
while true; do
if [ "$(mount -l | grep /dev/${CLE_USB})" ]; then
echo -e "\033[1;33;44m Démonter \033[00m"
DEMONTE
else
break
fi
done
else
echo -e "\033[1;47;31m erreur sur la fonction MOD_DEMONTE() CLE_USB:${CLE_USB} \033[0m" ;
fi
}
#_______________________________________________________________________________________________


#_______________________________________________________________________________________________
#demonter tous les .iso
function MOD_DEMONTEISO()
{
if [ -n "$(mount -l | grep -i ".iso")" ]; then
#demonter
function DEMONTE()
{
while [ "$(mount -l | grep -i ".iso")" ]
do
echo -e "\033[1;33;44m Démonter:$(mount -l | grep -i ".iso" | awk '{print $3}' | xargs) \033[00m"
umount $(mount -l | grep -i ".iso" | awk '{print $3}' | xargs)
sleep 2
done
}
#Attente tant que pas demonté
while true; do
if [ "$(mount -l | grep -i ".iso")" ]; then
echo -e "\033[1;33;44m Démonter \033[00m"
DEMONTE
else
break
fi
done
fi
}
#_______________________________________________________________________________________________


TEST_CONNEXION
VERIF_DEPENDENCES
COMPIL_SYSLINUX
#MOD_DETECTION_AUTOMATIQUE
#MOD_DEMONTE
MOD_DEMONTEISO


LISTE_ISO=()
filechooserbutton1="None"; filechooserbutton2="None"; filechooserbutton3="None"; filechooserbutton4="None"
checkbutton1="False"; checkbutton2="False"; checkbutton3="False"; checkbutton4="False"
entry1=""; entry2=""; entry3=""; entry4=""
checkbuttonQemu="True"; checkbuttonBoot="True"


T1="60" #partage-rw mini vital
T2="60" #boot-rw  +60 a refaire pour coller au plus pres...
T3=""; T4=""; T5=""; T6=""
T7="250" #casper-rw mini vital

#telecharger gui
wget "$URLGUI" -O /tmp/multiboot.glade

#sudo apt-get install autoglade
#http://autoglade.sourceforge.net/
function MOD_AUTOGLADE()
{

function MOD_BOUCLE()
{
radiobutton=""
>/tmp/menu-autoglade.txt
cd $HOME
MENU_ACCEUIL="$(autoglade /tmp/multiboot.glade 2>/dev/null)"
retval=$?
echo "$MENU_ACCEUIL" | sed "s/='/=\"/;s/'$/\"/" >/tmp/menu-autoglade.txt
. /tmp/menu-autoglade.txt
export autoargs
}

while true; do
MOD_BOUCLE
if [ "$checkbutton1" == "True" ]; then
echo $checkbutton1
if [ "$filechooserbutton1" != "None" ]; then
echo $filechooserbutton1
break
fi
fi

if [ "$checkbutton2" == "True" ]; then
echo $checkbutton2
if [ "$filechooserbutton2" != "None" ]; then
echo $filechooserbutton2
break
fi
fi

if [ "$checkbutton3" == "True" ]; then
echo $checkbutton3
if [ "$filechooserbutton3" != "None" ]; then
echo $filechooserbutton3
break
fi
fi

if [ "$checkbutton4" == "True" ]; then
echo $checkbutton4
if [ "$filechooserbutton4" != "None" ]; then
echo $filechooserbutton4
break
fi
fi

if [ "$retval" == "1" ]; then
exit 0
fi

#export autoargs
#export filechooserbutton1
#export filechooserbutton2
#export filechooserbutton3
#export filechooserbutton4
#export checkbutton1
#export checkbutton2
#export checkbutton3
#export checkbutton4
#export entry1
#export entry2
#export entry3
#export entry4
#export hscale1
#export checkbuttonQemu 
#export checkbuttonBoot

echo -e "\033[1;33;44m Info: $HOME debog autoargs:$autoargs \033[00m"
#export
echo 
done;

}


function MOD_CHECK()
{
veriftaille=""
MOD_DEMONTEISO
MOD_DEMONTE

#on monte les .iso dans /tmp/...
#et calcul taille des .iso et verifs structure
cd /tmp
if [[ "$filechooserbutton1" != "None" && -f "$filechooserbutton1" ]]; then
mkdir mountlivecd1  &>/dev/null
TAILLE=$(($(du -sB 1 ${filechooserbutton1} | awk '{print $1}')/1000/1000))
T3="$(($TAILLE + (($TAILLE*5/100))))" #+5%
mount -o loop $filechooserbutton1 /tmp/mountlivecd1
test ! -e /tmp/mountlivecd1/casper && echo Erreur casper iso1 && read && exit 0
test ! -e /tmp/mountlivecd1/.disk && echo Erreur .disk iso1 && read && exit 0
test ! "$(echo -e "$filechooserbutton1" | grep -Ei "*.iso")" && echo Erreur .iso iso1 && read && exit 0
LISTE_ISO=(${LISTE_ISO[@]} $T3)
fi

if [[ "$filechooserbutton2" != "None" && -f "$filechooserbutton2" ]]; then
mkdir mountlivecd2 &>/dev/null
TAILLE=$(($(du -sB 1 ${filechooserbutton2} | awk '{print $1}')/1000/1000))
T4="$(($TAILLE + (($TAILLE*5/100))))" #+5%
mount -o loop $filechooserbutton2 /tmp/mountlivecd2
test ! -e /tmp/mountlivecd2/casper && echo Erreur casper iso2 && read && exit 0
test ! -e /tmp/mountlivecd2/.disk && echo Erreur .disk iso2 && read && exit 0
test ! "$(echo -e "$filechooserbutton2" | grep -Ei "*.iso")" && echo Erreur .iso iso2 && read && exit 0
LISTE_ISO=(${LISTE_ISO[@]} $T4)
fi

if [[ "$filechooserbutton3" != "None" && -f "$filechooserbutton3" ]]; then
mkdir mountlivecd3 &>/dev/null
TAILLE=$(($(du -sB 1 ${filechooserbutton3} | awk '{print $1}')/1000/1000))
T5="$(($TAILLE + (($TAILLE*5/100))))" #+5%
mount -o loop $filechooserbutton3 /tmp/mountlivecd3
test ! -e /tmp/mountlivecd3/casper && echo Erreur casper iso3 && read && exit 0
test ! -e /tmp/mountlivecd3/.disk && echo Erreur .disk iso3 && read && exit 0
test ! "$(echo -e "$filechooserbutton3" | grep -Ei "*.iso")" && echo Erreur .iso iso3 && read && exit 0
LISTE_ISO=(${LISTE_ISO[@]} $T5)
fi

if [[ "$filechooserbutton4" != "None" && -f "$filechooserbutton4" ]]; then
mkdir mountlivecd4 &>/dev/null
TAILLE=$(($(du -sB 1 ${filechooserbutton4} | awk '{print $1}')/1000/1000))
T6="$(($TAILLE + (($TAILLE*5/100))))" #+5%
mount -o loop $filechooserbutton4 /tmp/mountlivecd4
test ! -e /tmp/mountlivecd4/casper && echo Erreur casper iso4 && read && exit 0
test ! -e /tmp/mountlivecd4/.disk && echo Erreur .disk iso4 && read && exit 0
test ! "$(echo -e "$filechooserbutton4" | grep -Ei "*.iso")" && echo Erreur .iso iso4 && read && exit 0
LISTE_ISO=(${LISTE_ISO[@]} $T6)
fi

#renvoyer 0 si est vide, methode a revoir...
test -z "$T3" && T3=0
test -z "$T4" && T4=0
test -z "$T5" && T5=0
test -z "$T6" && T6=0

TOTAL_VITAL="$(($T1+$T2+$T3+$T4+$T5+$T6+$T7))"
if [ "$TOTAL_VITAL" -le "$TEST_TAILLE" ]; then #si inf ou egal ok <=
echo -e '\E[37;44m'"\033[1m TOTAL_VITAL:$TOTAL_VITAL \033[0m"
veriftaille="True"
else
veriftaille=""
echo -e "\033[1;47;31m Erreur: pas assez de d\'espace! sur votre clé usb
Minimal:$TOTAL_VITAL
Disponible:$TEST_TAILLE \033[0m" ;
#balancer message erreur et remonter gui
fi
}


#boucler tant que erreur veriftaille
while [ "$veriftaille"  != "True" ]
do
MOD_AUTOGLADE
#detecter clé usb
MOD_DETECTION_AUTOMATIQUE
MOD_CHECK
MOD_DEMONTEISO
echo -e "\033[1;33;44m veriftaille:$veriftaille \033[00m"
done


#ici reste a calculer la taille de partage-rw et de casper-rw $T1 et $T7
#calcul taille hors partage-rw et casper-rw avec 250 qui est le minimum vital!
#et pour partage-rw un minimum de 60 ?
#si reste + de 100 MB dispo monter proposition calcul tailles
UTILISABLE=$(($TEST_TAILLE-$TOTAL_VITAL+$T1))
if [ "$UTILISABLE" -ge  "100" ]; then #>=
#MIN=8
#MAX=${UTILISABLE}
#DEF=$((${UTILISABLE}/2))

#TAILLE_PARTAGE=$(zenity \
#--width "400" \
#--height "200" \
#--text "<b><big><span color=\"red\"><span font-family=\"Helvetica\">Attention\!</span></span></big></b>
#Taille souhaitée pour la partition de partage (partage-rw)
#le reste ira a casper-rw le mode persistent" \
#--scale \
#--step=8 \
#--value=$DEF \
#--min-value=$MIN \
#--max-value=$MAX \
#)

#TAILLE_PARTAGE = UTILISABLE * hscale1 / 100
echo -e "\033[1;33;44m Info: UTILISABLE:$UTILISABLE hscale1:$hscale1 R:$(($UTILISABLE*$hscale1/100)) \033[00m"
TAILLE_PARTAGE="$(($UTILISABLE*$hscale1/100))"

T1=$TAILLE_PARTAGE
#T7 = UTILISABLE - TAILLE_PARTAGE + T7
CASPER_CALCUL=$(($(($UTILISABLE-$TAILLE_PARTAGE))+$T7))
T7=$CASPER_CALCUL
else
#sinon tout mettre a partage-rw
T1=$UTILISABLE
fi


#verifier si somme des partitions correspond bien à taille de la clé usb
if [ "$TEST_TAILLE" == "$(($T1+$T2+$T3+$T4+$T5+$T6+$T7))" ]; then
echo -e '\E[37;44m'"\033[1m VERIF_OK:$(($T1+$T2+$T3+$T4+$T5+$T6+$T7)) \033[0m"
else
echo -e "\033[1;47;31m Erreur: Veuillez contacter l'auteur du script erreur de calcul, vos données n'ont pas été modifiées. \033[0m" ;
read
exit 0
fi


#taille de la clé usb
echo ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
echo TEST_TAILLE:$TEST_TAILLE
echo T1:$T1 #partage-rw
echo T2:$T2 #boot-rw
#taille des .iso dans etendue
echo T3:$T3 #.iso 1
echo T4:$T4 #.iso 2
echo T5:$T5 #.iso 3
echo T6:$T6 #.iso 4
echo T7:$T7 #casper-rw dans etendue
#ajouter swap ?
#ajouter part supp ?
echo "LISTE_ISO:${LISTE_ISO[@]}"
echo ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

MESSAGE="Veuillez patienter création de votre LiveUSB MultiBoot en cours..."
TIMEOUT&


#attribution des LABEL disk
LABEL1="distro1-ro"
LABEL2="distro2-ro"
LABEL3="distro3-ro"
LABEL4="distro4-ro"
if [ "${entry1}" ]; then
LABEL1="$(echo "${entry1}" | unaccent utf8 | sed "s/[ \?\!',;\t\.\+-]/_/g")-ro"
fi
if [ "${entry2}" ]; then
LABEL2="$(echo "${entry2}" | unaccent utf8 | sed "s/[ \?\!',;\t\.\+-]/_/g")-ro"
fi
if [ "${entry3}" ]; then
LABEL3="$(echo "${entry3}" | unaccent utf8 | sed "s/[ \?\!',;\t\.\+-]/_/g")-ro"
fi
if [ "${entry4}" ]; then
LABEL4="$(echo "${entry4}" | unaccent utf8 | sed "s/[ \?\!',;\t\.\+-]/_/g")-ro"
fi


#_______________________________________________________________________________________________
#recalculer partitions sur des tailles valides pour parted
function PARTITIONNER()
{
MOD_DEMONTE
#on formate premiere partition P1 en fat32
echo -e '\E[37;44m'"\033[1m début du préformatage \033[0m"
dd if=/dev/zero of=/dev/${CLE_USB} bs=512 count=1
parted -s /dev/${CLE_USB} mklabel msdos
parted -s /dev/${CLE_USB} mkpart primary ext2 1 100% # test
sleep 10
umount /dev/${CLE_USB}1
mke2fs -j -L extlinux-ro /dev/${CLE_USB}1 #formate et pose label
echo -e '\E[37;44m'"\033[1m fin  du préformatage \033[0m"
sleep 3

#verif structure
heads=$(sfdisk -G /dev/${CLE_USB} | awk '{print $4}')
sectors=$(sfdisk -G /dev/${CLE_USB} | awk '{print $6}')
cylinders=$(sfdisk -G /dev/${CLE_USB} | awk '{print $2}')

#supprimer test
MOD_DEMONTE
parted -s /dev/${CLE_USB} rm 1
sleep 5

#part primaire partage-rw
NOUVELLE="$T1"
i=0
while [ $i -lt $cylinders ]
do
i=$(($i+1))
RETOUR=$(($i*$(($heads * $sectors * 512))/1000/1000+1))
if [ $RETOUR -gt $NOUVELLE ]; then
echo -e '\E[37;44m'"\033[1m TAILLE A FORMATER ==> RETOUR:$RETOUR \033[0m"
break
fi
done
P1=$RETOUR
echo P1:$P1
MOD_DEMONTE
parted -s /dev/${CLE_USB} unit MB mkpart primary fat32 1 $P1 #partage-rw
sleep 10
mkfs.vfat -F 32 -n partage-rw /dev/${CLE_USB}1
sleep 10

#part primaire boot-rw
NOUVELLE="$(($P1+$T2))"
i=0
while [ $i -lt $cylinders ]
do
i=$(($i+1))
RETOUR=$(($i*$(($heads * $sectors * 512))/1000/1000+1))
if [ $RETOUR -gt $NOUVELLE ]; then
echo -e '\E[37;44m'"\033[1m TAILLE A FORMATER ==> RETOUR:$RETOUR \033[0m"
break
fi
done
P2=$RETOUR
echo P2:$P2
MOD_DEMONTE
parted -s /dev/${CLE_USB} unit MB mkpart primary ext2 $P1 $P2 #boot-rw
sleep 10
MOD_DEMONTE
mke2fs -j -L boot-rw /dev/${CLE_USB}2

#part etendue
NOUVELLE="$((P2+$T3+$T4+$T5+$T6))"
i=0
while [ $i -lt $cylinders ]
do
i=$(($i+1))
RETOUR=$(($i*$(($heads * $sectors * 512))/1000/1000+1))
if [ $RETOUR -gt $NOUVELLE ]; then
echo -e '\E[37;44m'"\033[1m TAILLE A FORMATER ==> RETOUR:$RETOUR \033[0m"
break
fi
done
P3=$RETOUR
echo P3:$P3
MOD_DEMONTE
parted -s /dev/${CLE_USB} unit MB mkpart extended $P2 $P3 #etendue
sleep 10

echo "LISTE_ISO:${LISTE_ISO[@]}"
#nombre de iso choisies
echo NB de LISTE_ISO:${#LISTE_ISO[@]}

#part logique 1
if [ "1" -le "${#LISTE_ISO[@]}" ]; then #<=
echo logique 1
NOUVELLE="$(($P2+$T3))"
i=0
while [ $i -lt $cylinders ]
do
i=$(($i+1))
RETOUR=$(($i*$(($heads * $sectors * 512))/1000/1000+1))
if [ $RETOUR -gt $NOUVELLE ]; then
echo -e '\E[37;44m'"\033[1m TAILLE A FORMATER ==> RETOUR:$RETOUR \033[0m"
break
fi
done
P4=$RETOUR
echo P4:$P4
MOD_DEMONTE
if [ "${#LISTE_ISO[@]}" != "1" ]; then
parted -s /dev/${CLE_USB} unit MB mkpart logical ext2 $P2 $P4 #iso1
else
parted -s /dev/${CLE_USB} unit MB mkpart logical ext2 $P2 $P3 #iso1
fi
sleep 10
MOD_DEMONTE
mke2fs -j -L $LABEL1 /dev/${CLE_USB}5
fi

#part logique 2
if [ "2" -le "${#LISTE_ISO[@]}" ]; then #<=
echo logique 2
NOUVELLE="$(($P4+$T4))"
i=0
while [ $i -lt $cylinders ]
do
i=$(($i+1))
RETOUR=$(($i*$(($heads * $sectors * 512))/1000/1000+1))
if [ $RETOUR -gt $NOUVELLE ]; then
echo -e '\E[37;44m'"\033[1m TAILLE A FORMATER ==> RETOUR:$RETOUR \033[0m"
break
fi
done
P5=$RETOUR
echo P5:$P5
MOD_DEMONTE
if [ "${#LISTE_ISO[@]}" != "2" ]; then
parted -s /dev/${CLE_USB} unit MB mkpart logical ext2 $P4 $P5 #iso2
else
parted -s /dev/${CLE_USB} unit MB mkpart logical ext2 $P4 $P3 #iso2
fi
sleep 10
MOD_DEMONTE
mke2fs -j -L $LABEL2 /dev/${CLE_USB}6
fi

#part logique 3
if [ "3" -le "${#LISTE_ISO[@]}" ]; then #<=
echo logique 3
NOUVELLE="$(($P5+$T5))"
i=0
while [ $i -lt $cylinders ]
do
i=$(($i+1))
RETOUR=$(($i*$(($heads * $sectors * 512))/1000/1000+1))
if [ $RETOUR -gt $NOUVELLE ]; then
echo -e '\E[37;44m'"\033[1m TAILLE A FORMATER ==> RETOUR:$RETOUR \033[0m"
break
fi
done
P6=$RETOUR
echo P6:$P6
MOD_DEMONTE
if [ "${#LISTE_ISO[@]}" != "3" ]; then
parted -s /dev/${CLE_USB} unit MB mkpart logical ext2 $P5 $P6 #iso3
else
parted -s /dev/${CLE_USB} unit MB mkpart logical ext2 $P5 $P3 #iso3
fi
sleep 10
MOD_DEMONTE
mke2fs -j -L $LABEL3 /dev/${CLE_USB}7
fi

#part logique 4
if [ "4" -le "${#LISTE_ISO[@]}" ]; then #<=
echo logique 4
NOUVELLE="$(($P6+$T6))"
i=0
while [ $i -lt $cylinders ]
do
i=$(($i+1))
RETOUR=$(($i*$(($heads * $sectors * 512))/1000/1000+1))
if [ $RETOUR -gt $NOUVELLE ]; then
echo -e '\E[37;44m'"\033[1m TAILLE A FORMATER ==> RETOUR:$RETOUR \033[0m"
break
fi
done
P7=$RETOUR
echo P7:$P7
MOD_DEMONTE
if [ "${#LISTE_ISO[@]}" != "4" ]; then
parted -s /dev/${CLE_USB} unit MB mkpart logical ext2 $P6 $P3 #iso4
else
parted -s /dev/${CLE_USB} unit MB mkpart logical ext2 $P6 $P3 #iso4
fi
sleep 10
MOD_DEMONTE
mke2fs -j -L $LABEL4 /dev/${CLE_USB}8
fi

#casper-rw
MOD_DEMONTE
parted -s /dev/${CLE_USB} unit MB mkpart primary ext2 $P3 100% #casper-rw
sleep 10
MOD_DEMONTE
mke2fs -j -L casper-rw /dev/${CLE_USB}4

parted -s /dev/${CLE_USB} print
fdisk -l /dev/${CLE_USB}
#marquer bootable part boot-rw
parted -s /dev/${CLE_USB} set 2 boot on

#mbr
cat /usr/share/syslinux/mbr.bin  >/dev/${CLE_USB}
MOD_DEMONTE
#sudo -u $SUDO_USER nautilus -q &>/dev/null
}
#_______________________________________________________________________________________________
PARTITIONNER


#_______________________________________________________________________________________________
function COPIEISO()
{
cd /tmp
mkdir mountiso &>/dev/null
mkdir mountboot &>/dev/null
mkdir mountusb &>/dev/null

#_________________________________________________________________
#boot-rw 
if [ "1" -le "${#LISTE_ISO[@]}" ]; then
MOD_DEMONTEISO
MOD_DEMONTE
#filechooserbutton1

mount -o loop $filechooserbutton1 /tmp/mountiso
mount /dev/${CLE_USB}2 /tmp/mountboot

mkdir /tmp/mountboot/extlinux
cp /tmp/mountiso/isolinux/f[0-9].txt /tmp/mountboot/extlinux
cp /tmp/mountiso/isolinux/f10.txt /tmp/mountboot/extlinux
wget $SPLASHIMG -O /tmp/mountboot/extlinux/splash.jpg
cp -f /boot/extlinux/vesamenu.c32 /tmp/mountboot/extlinux/vesamenu.c32

#generer ici haut de extlinux.conf
HAUT="default vesamenu.c32
prompt 0
timeout 300

F1 /extlinux/f1.txt
F2 /extlinux/f2.txt
F3 /extlinux/f3.txt
F4 /extlinux/f4.txt
F5 /extlinux/f5.txt
F6 /extlinux/f6.txt
F7 /extlinux/f7.txt
F8 /extlinux/f8.txt
F9 /extlinux/f9.txt
F0 /extlinux/f10.txt

MENU BACKGROUND /extlinux/splash.jpg

MENU TITLE LiveUSB Custom, Presser [tab] affiche options
MENU DEFAULT live1
"
echo -e "${HAUT}" | tee /tmp/mountboot/extlinux/extlinux.conf
fi
#_________________________________________________________________

#_________________________________________________________________
#isocd 1
if [ "1" -le "${#LISTE_ISO[@]}" ]; then
MOD_DEMONTEISO
MOD_DEMONTE
mount -o loop $filechooserbutton1 /tmp/mountiso
mount /dev/${CLE_USB}5 /tmp/mountusb
cp -Rf /tmp/mountiso/casper /tmp/mountusb/
cp -Rf /tmp/mountiso/.disk /tmp/mountusb/
cd /tmp/mountusb/
find . -type f -print0 | xargs -0 md5sum | tee md5sum.txt
cd -
#ajouter initrd et vmlinuz à boot-rw
MOD_DEMONTEISO
MOD_DEMONTE
mount -o loop $filechooserbutton1 /tmp/mountiso
mount /dev/${CLE_USB}2 /tmp/mountboot
cp -f /tmp/mountiso/casper/initrd.gz /tmp/mountboot/$(vol_id -l /dev/${CLE_USB}5)-initrd.gz
cp -f /tmp/mountiso/casper/vmlinuz /tmp/mountboot/$(vol_id -l /dev/${CLE_USB}5)-vmlinuz
FICHIER_EXTLINUX="LABEL live1
  menu label Mode $(vol_id -l /dev/${CLE_USB}5) live
  kernel /$(vol_id -l /dev/${CLE_USB}5)-vmlinuz
  append union=aufs root=LABEL=$(vol_id -l /dev/${CLE_USB}5) locale=${MODLANG[0]}_${MODLANG[1]} kbd-chooser/method=${MODLANG[3]} console-setup/layoutcode=${MODLANG[4]} console-setup/variantcode=${MODLANG[5]} console-setup/modelcode=${MODLANG[6]} boot=casper initrd=/$(vol_id -l /dev/${CLE_USB}5)-initrd.gz noprompt verbose splash --

LABEL live_toram1
  menu label Mode $(vol_id -l /dev/${CLE_USB}5) live toram 2Gio de ram au minimun
  kernel /iso1-vmlinuz
  append union=aufs root=LABEL=$(vol_id -l /dev/${CLE_USB}5) locale=${MODLANG[0]}_${MODLANG[1]} kbd-chooser/method=${MODLANG[3]} console-setup/layoutcode=${MODLANG[4]} console-setup/variantcode=${MODLANG[5]} console-setup/modelcode=${MODLANG[6]} boot=casper toram initrd=/$(vol_id -l /dev/${CLE_USB}5)-initrd.gz noprompt verbose splash --

LABEL persistent1
  menu label Mode $(vol_id -l /dev/${CLE_USB}5) persistent ATTENTION rend le PC proprietaire
  kernel /iso1-vmlinuz
  append union=aufs root=LABEL=$(vol_id -l /dev/${CLE_USB}5) locale=${MODLANG[0]}_${MODLANG[1]} kbd-chooser/method=${MODLANG[3]} console-setup/layoutcode=${MODLANG[4]} console-setup/variantcode=${MODLANG[5]} console-setup/modelcode=${MODLANG[6]} boot=casper persistent initrd=/$(vol_id -l /dev/${CLE_USB}5)-initrd.gz noprompt verbose splash --

MENU SEPARATOR
"
echo -e "${FICHIER_EXTLINUX}" | tee -a /tmp/mountboot/extlinux/extlinux.conf
fi
#_________________________________________________________________


#_________________________________________________________________
#isocd 2
if [ "2" -le "${#LISTE_ISO[@]}" ]; then
MOD_DEMONTEISO
MOD_DEMONTE
mount -o loop $filechooserbutton2 /tmp/mountiso
mount /dev/${CLE_USB}6 /tmp/mountusb
cp -Rf /tmp/mountiso/casper /tmp/mountusb/
cp -Rf /tmp/mountiso/.disk /tmp/mountusb/
cd /tmp/mountusb/
find . -type f -print0 | xargs -0 md5sum | tee md5sum.txt
cd -
#ajouter initrd et vmlinuz à boot-rw
MOD_DEMONTEISO
MOD_DEMONTE
mount -o loop $filechooserbutton2 /tmp/mountiso
mount /dev/${CLE_USB}2 /tmp/mountboot
cp -f /tmp/mountiso/casper/initrd.gz /tmp/mountboot/$(vol_id -l /dev/${CLE_USB}6)-initrd.gz
cp -f /tmp/mountiso/casper/vmlinuz /tmp/mountboot/$(vol_id -l /dev/${CLE_USB}6)-vmlinuz
FICHIER_EXTLINUX="LABEL live2
  menu label Mode $(vol_id -l /dev/${CLE_USB}6) live
  kernel /$(vol_id -l /dev/${CLE_USB}6)-vmlinuz
  append union=aufs root=LABEL=$(vol_id -l /dev/${CLE_USB}6) locale=${MODLANG[0]}_${MODLANG[1]} kbd-chooser/method=${MODLANG[3]} console-setup/layoutcode=${MODLANG[4]} console-setup/variantcode=${MODLANG[5]} console-setup/modelcode=${MODLANG[6]} boot=casper initrd=/$(vol_id -l /dev/${CLE_USB}6)-initrd.gz noprompt verbose splash --

LABEL live_toram2
  menu label Mode $(vol_id -l /dev/${CLE_USB}6) live toram 2Gio de ram au minimun
  kernel /iso1-vmlinuz
  append union=aufs root=LABEL=$(vol_id -l /dev/${CLE_USB}6) locale=${MODLANG[0]}_${MODLANG[1]} kbd-chooser/method=${MODLANG[3]} console-setup/layoutcode=${MODLANG[4]} console-setup/variantcode=${MODLANG[5]} console-setup/modelcode=${MODLANG[6]} boot=casper toram initrd=/$(vol_id -l /dev/${CLE_USB}6)-initrd.gz noprompt verbose splash --

LABEL persistent2
  menu label Mode $(vol_id -l /dev/${CLE_USB}6) persistent ATTENTION rend le PC proprietaire
  kernel /iso1-vmlinuz
  append union=aufs root=LABEL=$(vol_id -l /dev/${CLE_USB}6) locale=${MODLANG[0]}_${MODLANG[1]} kbd-chooser/method=${MODLANG[3]} console-setup/layoutcode=${MODLANG[4]} console-setup/variantcode=${MODLANG[5]} console-setup/modelcode=${MODLANG[6]} boot=casper persistent initrd=/$(vol_id -l /dev/${CLE_USB}6)-initrd.gz noprompt verbose splash --

MENU SEPARATOR
"
echo -e "${FICHIER_EXTLINUX}" | tee -a /tmp/mountboot/extlinux/extlinux.conf
fi
#_________________________________________________________________


#_________________________________________________________________
#isocd 3
if [ "3" -le "${#LISTE_ISO[@]}" ]; then
MOD_DEMONTEISO
MOD_DEMONTE
mount -o loop $filechooserbutton3 /tmp/mountiso
mount /dev/${CLE_USB}7 /tmp/mountusb
cp -Rf /tmp/mountiso/casper /tmp/mountusb/
cp -Rf /tmp/mountiso/.disk /tmp/mountusb/
cd /tmp/mountusb/
find . -type f -print0 | xargs -0 md5sum | tee md5sum.txt
cd -
#ajouter initrd et vmlinuz à boot-rw
MOD_DEMONTEISO
MOD_DEMONTE
mount -o loop $filechooserbutton3 /tmp/mountiso
mount /dev/${CLE_USB}2 /tmp/mountboot
cp -f /tmp/mountiso/casper/initrd.gz /tmp/mountboot/$(vol_id -l /dev/${CLE_USB}7)-initrd.gz
cp -f /tmp/mountiso/casper/vmlinuz /tmp/mountboot/$(vol_id -l /dev/${CLE_USB}7)-vmlinuz
FICHIER_EXTLINUX="LABEL live3
  menu label Mode $(vol_id -l /dev/${CLE_USB}7) live
  kernel /$(vol_id -l /dev/${CLE_USB}7)-vmlinuz
  append union=aufs root=LABEL=$(vol_id -l /dev/${CLE_USB}7) locale=${MODLANG[0]}_${MODLANG[1]} kbd-chooser/method=${MODLANG[3]} console-setup/layoutcode=${MODLANG[4]} console-setup/variantcode=${MODLANG[5]} console-setup/modelcode=${MODLANG[6]} boot=casper initrd=/$(vol_id -l /dev/${CLE_USB}7)-initrd.gz noprompt verbose splash --

LABEL live_toram3
  menu label Mode $(vol_id -l /dev/${CLE_USB}7) live toram 2Gio de ram au minimun
  kernel /iso1-vmlinuz
  append union=aufs root=LABEL=$(vol_id -l /dev/${CLE_USB}7) locale=${MODLANG[0]}_${MODLANG[1]} kbd-chooser/method=${MODLANG[3]} console-setup/layoutcode=${MODLANG[4]} console-setup/variantcode=${MODLANG[5]} console-setup/modelcode=${MODLANG[6]} boot=casper toram initrd=/$(vol_id -l /dev/${CLE_USB}7)-initrd.gz noprompt verbose splash --

LABEL persistent3
  menu label Mode $(vol_id -l /dev/${CLE_USB}7) persistent ATTENTION rend le PC proprietaire
  kernel /iso1-vmlinuz
  append union=aufs root=LABEL=$(vol_id -l /dev/${CLE_USB}7) locale=${MODLANG[0]}_${MODLANG[1]} kbd-chooser/method=${MODLANG[3]} console-setup/layoutcode=${MODLANG[4]} console-setup/variantcode=${MODLANG[5]} console-setup/modelcode=${MODLANG[6]} boot=casper persistent initrd=/$(vol_id -l /dev/${CLE_USB}7)-initrd.gz noprompt verbose splash --

MENU SEPARATOR"
echo -e "${FICHIER_EXTLINUX}" | tee -a /tmp/mountboot/extlinux/extlinux.conf
fi
#_________________________________________________________________


#_________________________________________________________________
#isocd 4
if [ "4" -le "${#LISTE_ISO[@]}" ]; then
MOD_DEMONTEISO
MOD_DEMONTE
mount -o loop $filechooserbutton4 /tmp/mountiso
mount /dev/${CLE_USB}8 /tmp/mountusb
cp -Rf /tmp/mountiso/casper /tmp/mountusb/
cp -Rf /tmp/mountiso/.disk /tmp/mountusb/
cd /tmp/mountusb/
find . -type f -print0 | xargs -0 md5sum | tee md5sum.txt
cd -
#ajouter initrd et vmlinuz à boot-rw
MOD_DEMONTEISO
MOD_DEMONTE
mount -o loop $filechooserbutton4 /tmp/mountiso
mount /dev/${CLE_USB}2 /tmp/mountboot
cp -f /tmp/mountiso/casper/initrd.gz /tmp/mountboot/$(vol_id -l /dev/${CLE_USB}8)-initrd.gz
cp -f /tmp/mountiso/casper/vmlinuz /tmp/mountboot/$(vol_id -l /dev/${CLE_USB}8)-vmlinuz
FICHIER_EXTLINUX="LABEL live4
  menu label Mode $(vol_id -l /dev/${CLE_USB}8) live
  kernel /$(vol_id -l /dev/${CLE_USB}8)-vmlinuz
  append union=aufs root=LABEL=$(vol_id -l /dev/${CLE_USB}8) locale=${MODLANG[0]}_${MODLANG[1]} kbd-chooser/method=${MODLANG[3]} console-setup/layoutcode=${MODLANG[4]} console-setup/variantcode=${MODLANG[5]} console-setup/modelcode=${MODLANG[6]} boot=casper initrd=/$(vol_id -l /dev/${CLE_USB}8)-initrd.gz noprompt verbose splash --

LABEL live_toram4
  menu label Mode $(vol_id -l /dev/${CLE_USB}8) live toram 2Gio de ram au minimun
  kernel /iso1-vmlinuz
  append union=aufs root=LABEL=$(vol_id -l /dev/${CLE_USB}8) locale=${MODLANG[0]}_${MODLANG[1]} kbd-chooser/method=${MODLANG[3]} console-setup/layoutcode=${MODLANG[4]} console-setup/variantcode=${MODLANG[5]} console-setup/modelcode=${MODLANG[6]} boot=casper toram initrd=/$(vol_id -l /dev/${CLE_USB}8)-initrd.gz noprompt verbose splash --

LABEL persistent4
  menu label Mode $(vol_id -l /dev/${CLE_USB}8) persistent ATTENTION rend le PC proprietaire
  kernel /iso1-vmlinuz
  append union=aufs root=LABEL=$(vol_id -l /dev/${CLE_USB}8) locale=${MODLANG[0]}_${MODLANG[1]} kbd-chooser/method=${MODLANG[3]} console-setup/layoutcode=${MODLANG[4]} console-setup/variantcode=${MODLANG[5]} console-setup/modelcode=${MODLANG[6]} boot=casper persistent initrd=/$(vol_id -l /dev/${CLE_USB}8)-initrd.gz noprompt verbose splash --

MENU SEPARATOR"
echo -e "${FICHIER_EXTLINUX}" | tee -a /tmp/mountboot/extlinux/extlinux.conf
fi
#_________________________________________________________________


if [ "1" -le "${#LISTE_ISO[@]}" ]; then
MOD_DEMONTEISO
MOD_DEMONTE
mount /dev/${CLE_USB}2 /tmp/mountboot
BAS="MENU TABMSG Pressez [Tab] pour afficher les options de boot"
echo -e "${BAS}" | tee -a /tmp/mountboot/extlinux/extlinux.conf
#extlinux
extlinux -i /tmp/mountboot/extlinux
fi
}
#_______________________________________________________________________________________________
COPIEISO

#fin message
rm "/tmp/Log_liveusb.txt"
sleep 2

if [ "$checkbuttonBoot" == "True" ]; then
#_______________________________________________________________________________________________
#________________________________________CD_BOOT________________________________________________
function CD_BOOT
{
MESSAGE="Veuillez patienter création .iso de cd amorce en cours..."
TIMEOUT&

#preparer isocd amorce
MOD_DEMONTEISO
MOD_DEMONTE

#on cree la structure du cd de boot
mkdir /tmp/boot-cd &>/dev/null
mkdir /tmp/mountboot &>/dev/null
#on monte la partition
mount /dev/${CLE_USB}2 /tmp/mountboot

cp -Rf /tmp/mountboot/* /tmp/boot-cd
mv /tmp/boot-cd/extlinux /tmp/boot-cd/isolinux
mv /tmp/boot-cd/isolinux/extlinux.conf /tmp/boot-cd/isolinux/isolinux.cfg

#copie isolinux.bin
cp /usr/share/syslinux/isolinux.bin /tmp/boot-cd/isolinux
chattr -R -i /tmp/boot-cd/isolinux/extlinux.sys &>/dev/null
rm /tmp/boot-cd/isolinux/extlinux.sys
rm -Rf /tmp/boot-cd/lost+found
sed -i "s/extlinux/isolinux/g" /tmp/boot-cd/isolinux/isolinux.cfg

#demonter
MOD_DEMONTE

#on crée iso cd
cd /tmp/boot-cd
echo -e '\E[37;44m'"\033[1m Création du cd iso \033[0m"
mkisofs -r -V "CustomLiveCD" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o "$HOME/cd-boot-liveusb.iso" /tmp/boot-cd

echo -e '\E[37;44m'"\033[1m Ménage en cours... \033[0m"
#on vire
rm -R /tmp/boot-cd
#graver cd
chown $SUDO_USER:$SUDO_USER "$HOME/cd-boot-liveusb.iso"
chmod 644 "$HOME/cd-boot-liveusb.iso"
echo -e '\E[37;44m'"\033[1m Veuillez graver image du cd
Chemin: \"$HOME/cd-boot-liveusb.iso\"
(clic droit, graver un disque sur le fichier .iso) \033[0m"
rm "/tmp/Log_liveusb.txt"
sleep 2
zenity --info --text "l\'image du cd d'amorce est disponible,
Chemin: \"$HOME/cd-boot-liveusb.iso\"
(clic droit, graver un disque sur le fichier .iso)

Avant démarrer votre PC si besoin est,
insérez le CD ainsi que votre clé USB"
}
#_______________________________________________________________________________________________
#_____________________________________F.I.N_CD_BOOT_____________________________________________
CD_BOOT
fi


#lancer qemu pour test
if [ "$checkbuttonQemu" == "True" ]; then
QEMU_INSTALL
fi

echo -e '\E[37;44m'"\033[1m ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ F.I.N ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ 033[0m"
read
exit 0

Dernière modification par frafa (Le 11/12/2008, à 18:17)

Hors ligne

#65 Le 11/12/2008, à 12:26

AnsuzPeorth

Re : MultiBoot LiveUSB & ModCustom LiveCD

if [ "${entry2}" ]; then
LABEL2=$(echo "${entry2}" | unaccent utf8 | tr  A-Z a-z | sed 's/[^a-z0-9\.]\+/_/g')-ro""

Y 'a pas un deplacement de guillemets (2 en bout de ligne,manquante au départ) ?

unaccent connaissais pas !

Si je peut me permettre, une petite explication de texte pour ma culture generale:

sed 's/[^a-z0-9\.]\+/_/g')-ro

Le +...?
[^a-z0-9\.].....jamis vu un truc ecrit comme ça (ou me souviens plus alors)

merki


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#66 Le 11/12/2008, à 16:30

frafa

Re : MultiBoot LiveUSB & ModCustom LiveCD

c'est une ligne signée alain.g ca ancore , po de moi....
le + a un \ avant , si tu met pas \ sed  prend le + pour une expression, la il le supprime

EDIT: et merci pour le guillemet " qui etait partis en vadrouille...
EDIT2: d'ailleur pas adapté ici c'te expression reg j'ai betement copié/collé, je modifie...

Dernière modification par frafa (Le 11/12/2008, à 17:11)

Hors ligne

#67 Le 11/12/2008, à 17:52

AnsuzPeorth

Re : MultiBoot LiveUSB & ModCustom LiveCD

frafa a écrit :

c'est une ligne signée alain.g ca ancore , po de moi....
le + a un \ avant , si tu met pas \ sed  prend le + pour une expression, la il le supprime

EDIT: et merci pour le guillemet " qui était partis en vadrouille...
EDIT2: d'ailleur pas adapté ici c'te expression reg j'ai bêtement copié/collé, je modifie...

Ben ouais, je comprenais pas pourquoi tu virais les majuscules → tr (c pas interdit dans le nom d'une partition?). Et remplace le premier caractère (chiffre ou lettre) par un _ je comprends pas pourquoi !

Tu dois juste virer les caractères spéciaux (unnacent je suppose) et virer les espaces (tr, sed ou autre), c tout ?


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#68 Le 11/12/2008, à 18:00

frafa

Re : MultiBoot LiveUSB & ModCustom LiveCD

bon je viens de faire 3 test de creation d'affilé ,
pas d'erreur et tous les os bootent ok
je continue encore un peu debog et je libere...

remplacé par:
LABEL1="$(echo "${entry1}" | unaccent utf8 | tr  A-Z a-z | sed 's/[ \t\.\+-]//g')-ro"

Hors ligne

#69 Le 11/12/2008, à 18:04

AnsuzPeorth

Re : MultiBoot LiveUSB & ModCustom LiveCD

Pas de majuscules dans le nom alors ? (tr  A-Z a-z)
et tu ne devrrais pas plutot remplacer les espaces,tab,etc par des _ plutot que des les supprimer ('s/[ \t\.\+-]//g')

Juste un avis comme ça en passant wink

edit: Tin un mec qui claque une tab,+ ou - dans le nom....faudrais lui dire de retourner sous window$ fissa....:)

Dernière modification par AnsuzPeorth (Le 11/12/2008, à 18:08)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#70 Le 11/12/2008, à 18:15

frafa

Re : MultiBoot LiveUSB & ModCustom LiveCD

mis:

LABEL1="$(echo "${entry1}" | unaccent utf8 | sed "s/[ \?\!',;\t\.\+-]/_/g")-ro"

si tu fait mieux , fait passer smile ,...

Hors ligne

#71 Le 11/12/2008, à 18:34

frafa

Re : MultiBoot LiveUSB & ModCustom LiveCD

bon faudrait que je trouve un moyen
de faire que nautilus plante pas, car il tendance a
pas aimer quand la clé usb a 8 partitions
et que dans le script je fait des mount umount
a la longue il plante, pas grave pour l'execution du script
mais bon pas joli pour le user

si qqun as une idée...

Hors ligne

#72 Le 11/12/2008, à 18:36

AnsuzPeorth

Re : MultiBoot LiveUSB & ModCustom LiveCD

euhh...non, pas mieux, c pas moi le codeur fou !
Par contre, tant qu'on y est, ajoute les guillemets comme caractères a supprimer.
Autre chose, je viens de tester unaccent, pas installé d'origine (commande introuvable, suis encore sous feisty) !


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#73 Le 11/12/2008, à 18:38

frafa

Re : MultiBoot LiveUSB & ModCustom LiveCD

de toute facon si user met un guillemet
ca pourrit la variable vu que j'utilise "", donc...

Hors ligne

#74 Le 11/12/2008, à 18:53

frafa

Re : MultiBoot LiveUSB & ModCustom LiveCD

unaccent
je sais, l'ai mis dans le liste des dependances:

LISTEDEPENDANCES=(autoglade zenity w3m nmap bc genisoimage nasm build-essential rsync grub hdparm whois util-linux coreutils mtools mbr e2fsprogs parted dosfstools wget sleuthkit sed unaccent)

Dernière modification par frafa (Le 11/12/2008, à 18:55)

Hors ligne

#75 Le 11/12/2008, à 19:03

frafa

Re : MultiBoot LiveUSB & ModCustom LiveCD

Bonjour,
Besoin de testeur(s)
avant de liberer le script...
si vous souhaitez essuyer les plâtres,
et que vous possedez un volume externe clé usb , ddur amovible,... de plus de 2 Gio

Téléchargement:

wget http://liveusb.info/multiboot/multiboot.sh -O multiboot.sh
chmod +x ./multiboot.sh
sudo ./multiboot.sh

Dernière modification par frafa (Le 16/12/2008, à 05:34)

Hors ligne