Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails) *** mise à jour 12/10/2014 ***

#76 Le 08/10/2010, à 15:19

Josepe36

Re : [Live-CD] Linux Secure Remix

page d'acceuil, ha oui ubiquity pardon.

je pense que ce n'est pas une nécessité de passer par ubiquity si l'on a un menu dans la page d'acceuil.
et un lanceur dans administration.
je verrai plutot ça comme un programme à part.


Développeur distribution Hybryde
www.hybryde.org

Hors ligne

#77 Le 08/10/2010, à 16:35

Babdu89

Re : [Live-CD] Linux Secure Remix

@ Josepe36
Je voulais dire par "Accueil" le premier panneau qui s'ouvre quand on met le desktop cd en route...là où on choisit  d'essayer ou installer Ubuntu...  Mais bon YannUbuntu a donné une réponse....


J'ai découvert Ubuntu avec la 07.10.... Et alors?!...  Depuis je regarde de temps en temps si Windows marche toujours....

Hors ligne

#78 Le 08/10/2010, à 16:49

Babdu89

Re : [Live-CD] Linux Secure Remix

Mais bon YannUbuntu a donné une réponse....

Josepe, je t'avais demander comment modifier l'iso,et ajouter une entrée au menu de départ  du live cd/usb  Ubuntu, pour mettre et avoir accès a la   "boîte a outil"  quand je voulais pour faire une usb live custom, avec tes scripts... tu te souviens..., il y a peut-être une idée a piocher la dedans pour arriver a faire ce dont je parlais plus haut....,non??....

Dernière modification par Babdu89 (Le 08/10/2010, à 16:53)


J'ai découvert Ubuntu avec la 07.10.... Et alors?!...  Depuis je regarde de temps en temps si Windows marche toujours....

Hors ligne

#79 Le 08/10/2010, à 17:36

Josepe36

Re : [Live-CD] Linux Secure Remix

oui babdu89

c'est quasiment fait wink

comme j'ai dis plus haut je m'y met sérieusement , me reste a regler comment recuperer l'option passée au noyau.

par exemple pour lancer l'option "installer ubuntu" on donne au noyau l'option "only-ubiquity" ce qui a pour effet de ne lancer qu'ubiquity (bien que la session soit dejas lancée)
donc mon but c'est de savoir comment faire pour lancer "only-notre script".


Développeur distribution Hybryde
www.hybryde.org

Hors ligne

#80 Le 09/10/2010, à 13:31

YannUbuntu

Re : [Live-CD] Linux Secure Remix

Salut ! L'écran d'accueil du live-cd (ci-dessous), c'est quoi comme paquet ? ubiquity aussi ?

1286348674.png


à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison

Hors ligne

#81 Le 09/10/2010, à 14:15

Josepe36

Re : [Live-CD] Linux Secure Remix

salut

oui c'est ubiquity aussi wink


Développeur distribution Hybryde
www.hybryde.org

Hors ligne

#82 Le 09/10/2010, à 19:46

YannUbuntu

Re : [Live-CD] Linux Secure Remix

Bonjour
@Josepe : bien recu ton mail, merci ! Les 2 écrans linux mint apparaissent lorsqu'on clique sur l'icone Installer qui se trouve sur le bureau du live-cd, c'est bien ca? Pour l'écran d'accueil du live-CD, sais-tu comment le modifier ?

En bash, comment passe-t-on des arguments dans une fonction ? (si possible dans les 2 sens...)

j'ai fait un premier script qui s'approche du schéma post #66.
Normalement il permet de faire au moins la même chose que le script de Josepe (vu que je suis parti de ce script), à savoir :
- sauvegarde du MBR windows (si installé sur NTFS)
- restauration du MBR windows a la demande de l'utilisateur

Et normalement il devrait apporter quelques améliorations :
- prend en compte le cas des (vieux) Windows qui sont installés sur partition FAT32
- prend en compte le cas des MacOS qui sont installes sur partition HFS
- prend en compte le cas des ordinateurs avec Linux pré-installé
- sauvegarde silencieuse (invisible par l'utilisateur)
- sauvegardes de sécurité (au cas où un virus ou une maladresse viendrait supprimer la sauvegarde qui se trouvait sur la partition windows)
- script séparé pour l'insérer dans le menu Administration-Systeme du live-CD et sur la page d'accueil du live-CD
- menu de désinstallation proposant : soit de désinstaller Ubuntu, soit de restaurer le MBR  (c'est pour la transition, je ne sais pas si il faut le garder ainsi)
- possibilité de désinstaller n'importe-quelle distribution Linux compatible, dans le cas où il n'y a qu'une seule distribution Linux sur le PC.

Je mets les 2 scripts ci-dessous pour information. Pour tests et discussion seulement. A NE PAS UTILISER EN PRODUCTION !

SCRIPT D'INSTALLATION D'UBUNTU :

#! /bin/bash

## YannUbuntu le 09/10/2010

## SAUVE AUTOMATIQUE DES 63 SECTEURS D'ORIGINE SUR LES PARTITIONS Windows, Mac et Linux (si besoin), puis lance Ubiquity.
## pour les tests, il suffit de modifier le lanceur "Installation Ubuntu" qui se trouve sur le bureau du live-CD par ce script.
## Amelioration possible : si un OS se trouve sur sdb (sdc..), y sauver le MBR de sdb (sdc..)




save63sectors_on_ntfs(){
##BOUCLE DE MONTAGE DES PARTITIONS NTFS, POUR DEFINIR LA PARTITION SYSTEME ET Y INSTALLER UNE SAUVEGARDE DU MBR
ntfs=$(fdisk -l|grep -i "ntfs"|cut -c1-9) ;
for i in $ntfs
do
    mount $i /mnt;
    windows=$(ls /mnt |grep -i "windows");
    if [ "$windows" ]
      then dd if=/dev/sda of=/mnt/save-63-sectors.img bs=512 count=63 ;zenity --info --timeout=2 --text="La sauvegarde des 63 secteurs a été faite dans $i "       
    fi
    umount $i ;
done
}
#__________________________________________________________________________________________________________________________________________________________________


save63sectors_on_w95(){
##BOUCLE DE MONTAGE DES PARTITIONS W95, POUR DEFINIR LA PARTITION SYSTEME ET Y INSTALLER UNE SAUVEGARDE DU MBR
w95=$(fdisk -l|grep -i "w95"|cut -c1-9) ;
for i in $w95
    mount $i /mnt;
    windows=$(ls /mnt |grep -i "windows");
    if [ "$windows" ]
      then dd if=/dev/sda of=/mnt/save-63-sectors.img bs=512 count=63 ;zenity --info --timeout=2 --text="La sauvegarde des 63 secteurs a été faite dans $i "       
    fi
    umount $i ;
done
}
#__________________________________________________________________________________________________________________________________________________________________



save63sectors_on_hfs(){
##BOUCLE DE MONTAGE DES PARTITIONS HFS (MAC), POUR Y INSTALLER UNE SAUVEGARDE DU MBR
hfs=$(fdisk -l|grep -i "hfs"|cut -c1-9) ;
for i in $hfs
do
    mount $i /mnt;
    boot=$(ls /mnt |grep -i "boot");
    if [ "$boot" ]
      then dd if=/dev/sda of=/mnt/save-63-sectors.img bs=512 count=63 ;zenity --info --timeout=2 --text="La sauvegarde des 63 secteurs a été faite dans $i "       
    fi
    umount $i ;
done
}
#__________________________________________________________________________________________________________________________________________________________________


save63sectors_on_linux(){
##BOUCLE DE MONTAGE DES PARTITIONS LINUX, POUR DEFINIR LA OU LES PARTITIONS SYSTEME (QUI POSSEDENT UN DOSSIER /BOOT) ET Y METTRE UNE SAUVEGARDE DU MBR
linux=$(fdisk -l|grep -i "linux"|cut -c1-9) ;
for i in $linux
    mount $i /mnt;
    boot=$(ls /mnt |grep -i "boot");
    if [ "$boot" ]
      then dd if=/dev/sda of=/mnt/save-63-sectors.img bs=512 count=63 ;zenity --info --timeout=2 --text="La sauvegarde des 63 secteurs a été faite dans $i "       
    fi
    umount $i ;
done
}
#__________________________________________________________________________________________________________________________________________________________________


## DEBUT DU SCRIPT

## CONTROLE SI UN BACKUP DES 63 SECTEURS EXISTE DEJA SUR LE DISQUE OU PAS
DETECTED_BACKUP=0
ntfs=$(fdisk -l|grep -i "ntfs"|cut -c1-9) ;
if [ "$ntfs" ]; then
   echo "voici les partitons ntfs existantes = $ntfs" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS NTFS, DETECTE CELLES QUI SONT PARTITION SYSTEME (ont un dossier Windows) ET CELLES QUI ONT UNE SAUVEGARDE DU MBR
   for i in $ntfs
     do
       mount $i /mnt;
       windows=$(ls /mnt |grep -i "windows");
       if [ "$windows" ]; then
         echo "la partition $i est une partion NTFS windows"; control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ]
           then echo "la partition $i contient un backup"; DETECTED_BACKUP=$(($DETECTED_BACKUP+1))
         fi
       fi
       umount $i ;
   done
else echo "Il n'y a pas de partition NTFS" ;
fi

w95=$(fdisk -l|grep -i "w95"|cut -c1-9) ;
if [[ "$w95" ] && [ "$DETECTED_BACKUP"=0 ]; then
   echo "voici les partitons w95 existantes = $w95" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS w95, DETECTE CELLES QUI SONT PARTITION SYSTEME ET CELLES QUI ONT UNE SAUVEGARDE DU MBR
   for i in $w95
     do
       mount $i /mnt;
       windows=$(ls /mnt |grep -i "windows");
       if [ "$windows" ]; then
         echo "la partition $i est une partion w95 windows"; control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ]
           then echo "la partition $i contient un backup"; DETECTED_BACKUP=$(($DETECTED_BACKUP+1))
         fi
       fi
       umount $i ;
   done
else echo "Il n'y a pas de partition w95" ;
fi

hfs=$(fdisk -l|grep -i "hfs"|cut -c1-9) ;
if [[ "$hfs" ] && [ "$DETECTED_BACKUP"=0 ]; then
   echo "voici les partitons hfs existantes = $hfs" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS hfs (Mac), DETECTE CELLES QUI SONT PARTITION SYSTEME ET CELLES QUI ONT UNE SAUVEGARDE DU MBR
   for i in $hfs
     do
       mount $i /mnt;
       boot=$(ls /mnt |grep -i "boot");
       if [ "$boot" ]; then
         echo "la partition $i est une partion hfs Mac"; control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ]
           then echo "la partition $i contient un backup"; DETECTED_BACKUP=$(($DETECTED_BACKUP+1))
         fi
       fi
       umount $i ;
   done
else echo "Il n'y a pas de partition hfs" ;
fi

linux=$(fdisk -l|grep -i "linux"|cut -c1-9) ;
if [[ "$linux" ] && [ "$DETECTED_BACKUP"=0 ]; then
   echo "voici les partitons linux existantes = $linux" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS linux, DETECTE CELLES QUI SONT PARTITION SYSTEME ET CELLES QUI ONT UNE SAUVEGARDE DU MBR
   for i in $linux
     do
       mount $i /mnt;
       boot=$(ls /mnt |grep -i "boot");
       if [ "$boot" ]; then
         echo "la partition $i est une partion linux systeme"; control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ]
           then echo "la partition $i contient un backup"; DETECTED_BACKUP=$(($DETECTED_BACKUP+1))
         fi
       fi
       umount $i ;
   done
else echo "Il n'y a pas de partition linux" ;
fi


##SI AUCUN BACKUP N'A ETE DETECTE, ON EN FAIT UN AUTOMATIQUEMENT
if [ "$DETECTED_BACKUP"=0 ]; then
   echo "We will backup the 63 sectors on all existing systems"
   save63sectors_on_ntfs
   save63sectors_on_w95
   save63sectors_on_hfs
   save63sectors_on_linux
fi

##LANCE UBIQUITY (comme le fait normalement l'icone sur le bureau du live-CD)
ubiquity --desktop %k gtk_ui

##La pour bien faire il faudrait dupliquer le backup dans le boot de la nouvelle installation Ubuntu. (pour si le backup sur la partition windows est supprime par erreur).


exit 0

SCRIPT DE DESINSTALATION D'UBUNTU :

#! /bin/bash

## YannUbuntu le 09/10/2010

## DESINSTALLATION D'UBUNTU
## pour les tests, il suffit de modifier le lanceur "Installation Ubuntu" qui se trouve sur le bureau du live-CD par ce script.
## le code est crade, si vous pouviez m'expliquer comment passer des arguments dans une fonction ca m'aiderait ;)
## A ameliorer : menu, controle de la qualite des backup, etc...


restauration_63_secteurs()
{
## CONTROLE SI UN BACKUP DES 63 SECTEURS EXISTE DEJA SUR LE DISQUE OU PAS
DETECTED_BACKUP=0
ntfs=$(fdisk -l|grep -i "ntfs"|cut -c1-9) ;
if [ "$ntfs" ]; then
   echo "voici les partitons ntfs existantes = $ntfs" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS NTFS, DETECTE CELLES QUI SONT PARTITION SYSTEME (ont un dossier Windows) ET CELLES QUI ONT UNE SAUVEGARDE DU MBR
   for i in $ntfs
     do
       mount $i /mnt;
       windows=$(ls /mnt |grep -i "windows");
       if [ "$windows" ]; then
         echo "la partition $i est une partion NTFS windows"; control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ]
           then echo "Restauration du backup de la partition $i"; DETECTED_BACKUP=$(($DETECTED_BACKUP+1))
                ### sauvegarde de la table de partition actuelle (il s'agit en fait du 1er secteur)
                dd if=/dev/sda of=/mnt/tp.img bs=512 count=1 ;
                ### restauration de la sauvegarde dans les 63 premiers secteurs
                dd if=/mnt/save-63-sectors.img of=/dev/sda bs=512 count=63 ;
                ### restauration de la table de partition actuelle
                sudo dd if=/mnt/tp.img of=/dev/sda bs=1 skip=446 count=64
         fi
       fi
       umount $i ;
   done
else echo "Il n'y a pas de partition NTFS" ;
fi

w95=$(fdisk -l|grep -i "w95"|cut -c1-9) ;
if [[ "$w95" ] && [ "$DETECTED_BACKUP"=0 ]; then
   echo "voici les partitons w95 existantes = $w95" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS w95, DETECTE CELLES QUI SONT PARTITION SYSTEME ET CELLES QUI ONT UNE SAUVEGARDE DU MBR
   for i in $w95
     do
       mount $i /mnt;
       windows=$(ls /mnt |grep -i "windows");
       if [ "$windows" ]; then
         echo "la partition $i est une partion w95 windows"; control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ]
           then echo "la partition $i contient un backup"; DETECTED_BACKUP=$(($DETECTED_BACKUP+1))
                ### sauvegarde de la table de partition actuelle (il s'agit en fait du 1er secteur)
                dd if=/dev/sda of=/mnt/tp.img bs=512 count=1 ;
                ### restauration de la sauvegarde dans les 63 premiers secteurs
                dd if=/mnt/save-63-sectors.img of=/dev/sda bs=512 count=63 ;
                ### restauration de la table de partition actuelle
                sudo dd if=/mnt/tp.img of=/dev/sda bs=1 skip=446 count=64
         fi
       fi
       umount $i ;
   done
else echo "Il n'y a pas de partition w95" ;
fi

hfs=$(fdisk -l|grep -i "hfs"|cut -c1-9) ;
if [[ "$hfs" ] && [ "$DETECTED_BACKUP"=0 ]; then
   echo "voici les partitons hfs existantes = $hfs" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS hfs (Mac), DETECTE CELLES QUI SONT PARTITION SYSTEME ET CELLES QUI ONT UNE SAUVEGARDE DU MBR
   for i in $hfs
     do
       mount $i /mnt;
       boot=$(ls /mnt |grep -i "boot");
       if [ "$boot" ]; then
         echo "la partition $i est une partion hfs Mac"; control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ]
           then echo "la partition $i contient un backup"; DETECTED_BACKUP=$(($DETECTED_BACKUP+1))
                ### sauvegarde de la table de partition actuelle (il s'agit en fait du 1er secteur)
                dd if=/dev/sda of=/mnt/tp.img bs=512 count=1 ;
                ### restauration de la sauvegarde dans les 63 premiers secteurs
                dd if=/mnt/save-63-sectors.img of=/dev/sda bs=512 count=63 ;
                ### restauration de la table de partition actuelle
                sudo dd if=/mnt/tp.img of=/dev/sda bs=1 skip=446 count=64
         fi
       fi
       umount $i ;
   done
else echo "Il n'y a pas de partition hfs" ;
fi

linux=$(fdisk -l|grep -i "linux"|cut -c1-9) ;
if [[ "$linux" ] && [ "$DETECTED_BACKUP"=0 ]; then
   echo "voici les partitons linux existantes = $linux" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS linux, DETECTE CELLES QUI SONT PARTITION SYSTEME ET CELLES QUI ONT UNE SAUVEGARDE DU MBR
   for i in $linux
     do
       mount $i /mnt;
       boot=$(ls /mnt |grep -i "boot");
       if [ "$boot" ]; then
         echo "la partition $i est une partion linux systeme"; control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ]
           then echo "la partition $i contient un backup"; DETECTED_BACKUP=$(($DETECTED_BACKUP+1))
                ### sauvegarde de la table de partition actuelle (il s'agit en fait du 1er secteur)
                dd if=/dev/sda of=/mnt/tp.img bs=512 count=1 ;
                ### restauration de la sauvegarde dans les 63 premiers secteurs
                dd if=/mnt/save-63-sectors.img of=/dev/sda bs=512 count=63 ;
                ### restauration de la table de partition actuelle
                sudo dd if=/mnt/tp.img of=/dev/sda bs=1 skip=446 count=64
         fi
       fi
       umount $i ;
   done
else echo "Il n'y a pas de partition linux" ;
fi


##ON PREVIENT L'UTILISATEUR
if [ "$DETECTED_BACKUP"=0 ]; then
   zenity --info --timeout=2 --text="IL N'EXISTE PAS DE SAUVEGARDE D'AMORCAGE SUR CET ORDINATEUR." 
else
   zenity --info --timeout=2 --text="L'amorcage original de cet ordinateur a été restauré. Merci d'avoir essayé Ubuntu, et à bientot !" 
}
#___________________________________________________________________________________________________________________________________________________________________



### MENU DE DESINSTALLATION DES DISTROS INSTALLEES SUR L'ORDINATEUR   -- A TERMINER
desinstallation_linux()
{


DETECTED_BACKUP=0
DETECTED_LINUX=0
linux=$(fdisk -l|grep -i "linux"|cut -c1-9) ;
if [[ "$linux" ]; then
   echo "voici les partitons linux existantes = $linux" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS linux, DETECTE CELLES QUI SONT PARTITION SYSTEME
   for i in $linux
     do
       mount $i /mnt;
       boot=$(ls /mnt |grep -i "boot");
       if [ "$boot" ]; then
         DETECTED_LINUX=$(($DETECTED_LINUX+1))
         echo "la partition $i est une partion linux systeme"; control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ]
           then echo "la partition $i contient un backup"; DETECTED_BACKUP=$(($DETECTED_BACKUP+1))
         fi
       fi
       umount $i ;
   done
else zenity --info --timeout=2 --text="IL N'EXISTE PAS DE LINUX SUR CET ORDINATEUR." ; menu_initial ; break
fi

##SI UNE SEULE INSTALLATION LINUX, ALORS ON RESTAURE LES 63 SECTEURS ORIGINAUX  (pour bien faire il faudrait demander confirmation)
if [ DETECTED_LINUX=1 ]
then 
{
## RESTAURE LES 63 SECTEURS ORIGINAUX
DETECTED_BACKUP=0
ntfs=$(fdisk -l|grep -i "ntfs"|cut -c1-9) ;
if [ "$ntfs" ]; then
   echo "voici les partitons ntfs existantes = $ntfs" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS NTFS, DETECTE CELLES QUI SONT PARTITION SYSTEME (ont un dossier Windows) ET CELLES QUI ONT UNE SAUVEGARDE DU MBR
   for i in $ntfs
     do
       mount $i /mnt;
       windows=$(ls /mnt |grep -i "windows");
       if [ "$windows" ]; then
         echo "la partition $i est une partion NTFS windows"; control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ]
           then echo "Restauration du backup de la partition $i"; DETECTED_BACKUP=$(($DETECTED_BACKUP+1))
                ### sauvegarde de la table de partition actuelle (il s'agit en fait du 1er secteur)
                dd if=/dev/sda of=/mnt/tp.img bs=512 count=1 ;
                ### restauration de la sauvegarde dans les 63 premiers secteurs
                dd if=/mnt/save-63-sectors.img of=/dev/sda bs=512 count=63 ;
                ### restauration de la table de partition actuelle
                sudo dd if=/mnt/tp.img of=/dev/sda bs=1 skip=446 count=64
         fi
       fi
       umount $i ;
   done
else echo "Il n'y a pas de partition NTFS" ;
fi

w95=$(fdisk -l|grep -i "w95"|cut -c1-9) ;
if [[ "$w95" ] && [ "$DETECTED_BACKUP"=0 ]; then
   echo "voici les partitons w95 existantes = $w95" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS w95, DETECTE CELLES QUI SONT PARTITION SYSTEME ET CELLES QUI ONT UNE SAUVEGARDE DU MBR
   for i in $w95
     do
       mount $i /mnt;
       windows=$(ls /mnt |grep -i "windows");
       if [ "$windows" ]; then
         echo "la partition $i est une partion w95 windows"; control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ]
           then echo "la partition $i contient un backup"; DETECTED_BACKUP=$(($DETECTED_BACKUP+1))
                ### sauvegarde de la table de partition actuelle (il s'agit en fait du 1er secteur)
                dd if=/dev/sda of=/mnt/tp.img bs=512 count=1 ;
                ### restauration de la sauvegarde dans les 63 premiers secteurs
                dd if=/mnt/save-63-sectors.img of=/dev/sda bs=512 count=63 ;
                ### restauration de la table de partition actuelle
                sudo dd if=/mnt/tp.img of=/dev/sda bs=1 skip=446 count=64
         fi
       fi
       umount $i ;
   done
else echo "Il n'y a pas de partition w95" ;
fi

hfs=$(fdisk -l|grep -i "hfs"|cut -c1-9) ;
if [[ "$hfs" ] && [ "$DETECTED_BACKUP"=0 ]; then
   echo "voici les partitons hfs existantes = $hfs" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS hfs (Mac), DETECTE CELLES QUI SONT PARTITION SYSTEME ET CELLES QUI ONT UNE SAUVEGARDE DU MBR
   for i in $hfs
     do
       mount $i /mnt;
       boot=$(ls /mnt |grep -i "boot");
       if [ "$boot" ]; then
         echo "la partition $i est une partion hfs Mac"; control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ]
           then echo "la partition $i contient un backup"; DETECTED_BACKUP=$(($DETECTED_BACKUP+1))
                ### sauvegarde de la table de partition actuelle (il s'agit en fait du 1er secteur)
                dd if=/dev/sda of=/mnt/tp.img bs=512 count=1 ;
                ### restauration de la sauvegarde dans les 63 premiers secteurs
                dd if=/mnt/save-63-sectors.img of=/dev/sda bs=512 count=63 ;
                ### restauration de la table de partition actuelle
                sudo dd if=/mnt/tp.img of=/dev/sda bs=1 skip=446 count=64
         fi
       fi
       umount $i ;
   done
else echo "Il n'y a pas de partition hfs" ;
fi

linux=$(fdisk -l|grep -i "linux"|cut -c1-9) ;
if [[ "$linux" ] && [ "$DETECTED_BACKUP"=0 ]; then
   echo "voici les partitons linux existantes = $linux" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS linux, DETECTE CELLES QUI SONT PARTITION SYSTEME ET CELLES QUI ONT UNE SAUVEGARDE DU MBR
   for i in $linux
     do
       mount $i /mnt;
       boot=$(ls /mnt |grep -i "boot");
       if [ "$boot" ]; then
         echo "la partition $i est une partion linux systeme"; control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ]
           then echo "la partition $i contient un backup"; DETECTED_BACKUP=$(($DETECTED_BACKUP+1))
                ### sauvegarde de la table de partition actuelle (il s'agit en fait du 1er secteur)
                dd if=/dev/sda of=/mnt/tp.img bs=512 count=1 ;
                ### restauration de la sauvegarde dans les 63 premiers secteurs
                dd if=/mnt/save-63-sectors.img of=/dev/sda bs=512 count=63 ;
                ### restauration de la table de partition actuelle
                sudo dd if=/mnt/tp.img of=/dev/sda bs=1 skip=446 count=64
         fi
       fi
       umount $i ;
   done
else echo "Il n'y a pas de partition linux" ;
fi

##ON PREVIENT L'UTILISATEUR
if [ "$DETECTED_BACKUP"=0 ]; then
   zenity --info --timeout=2 --text="IL N'EXISTE PAS DE SAUVEGARDE D'AMORCAGE SUR CET ORDINATEUR. FORMATEZ UBUNTU PUIS METTEZ A JOUR VOTRE AMORCEUR." 
else
   zenity --info --timeout=2 --text="L'amorcage original de cet ordinateur a été restauré. Merci d'avoir essayé Ubuntu, et à bientot !" 
}

##SI PLUSIEURS INSTALLATIONS LINUX, ALORS ON DEMANDE QUELLE DISTRO L'UTILISATEUR VEUT SUPPRIMER, on la supprime ET ON REINSTALLE GRUB sur une distro restante (determinee par l'utilisateur)  -- a terminer
elif [ DETECTED_LINUX!=1 ] && [ DETECTED_LINUX!=0 ]
then
zenity --info --timeout=2 --text="FONCTIONNALITE EN DEVELOPPEMENT. En attendant, vous pouvez le faire vous-meme en formatant la distribution souhaitee puis en mettant a jour votre amorceur." 

}
#___________________________________________________________________________________________________________________________________________________________________



##DEBUT DU SCRIPT

##Ce n'est pas definitif, mais ca se rapproche du schema proposé sur le forum
menu_initial()
{
action=$(zenity --list --title="DESINSTALLATION D'UBUNTU" --text="Choisissez une action" --column=""  "RESTAURER L'AMORCAGE ORIGINAL DE L'ORDINATEUR" "DESINSTALLER UBUNTU DE L'ORDINATEUR") || exit 100;
            
                if [ "$action" = "RESTAURER L'AMORCAGE ORIGINAL DE L'ORDINATEUR" ]
                  then restauration_63_secteurs 
                elif [ "$action" = "DESINSTALLER UBUNTU DE L'ORDINATEUR" ]
                  then desinstallation_linux
                fi
}
#___________________________________________________________________________________________________________________________________________________________________


menu_initial
exit 0

à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison

Hors ligne

#83 Le 09/10/2010, à 22:22

Josepe36

Re : [Live-CD] Linux Secure Remix

super boulot yannubuntu wink

oui c'est ça , en cliquant sur l'icone d'installation du bureau le script ce lance car j'ai entrer une ligne dans /usr/bin/ubiquity
qui demande de lancer le script bash et des que celui se termine python reprend la main.

pour modifier ? je croyais que tu l'avais dejas fait sur tes screeshots ?
pour ça j'utilise  glade, qui est pas mal du tout mais j'ai pas trop compris l'emsemble du code d'ubiquity pour y connecter une action au bouton.

en tout cas chapeau pour ton script wink
a+


Développeur distribution Hybryde
www.hybryde.org

Hors ligne

#84 Le 10/10/2010, à 15:02

YannUbuntu

Re : [Live-CD] Linux Secure Remix

Salut
Je viens de corriger mon 1er script (celui d'installation et sauve), il y avait des bugs. J'ai aussi ajouté quelques fonctionnalités :
- le support du FAT16
- le cas ou des partitions sont deja montées

SCRIPT D'INSTALLATION D'UBUNTU (v2) :

#! /bin/bash

## YannUbuntu le 10/10/2010

## SAUVE AUTOMATIQUE DES 63 SECTEURS D'ORIGINE SUR LES PARTITIONS Windows, Mac et Linux (si besoin), puis lance Ubiquity.
## pour les tests, il suffit de modifier le lanceur "Installation Ubuntu" qui se trouve sur le bureau du live-CD par ce script.
## Ameliorations possibles : augmenter la sécurité en copiant le backup sur les OS qui ne l'ont pas, support du multi-disques (sdb, sdc..), ..




save63sectors_on_ntfs(){
##BOUCLE DE MONTAGE DES PARTITIONS NTFS, POUR DEFINIR LA PARTITION SYSTEME ET Y INSTALLER UNE SAUVEGARDE DU MBR
ntfs=$(sudo fdisk -l|grep -i "ntfs"|cut -c1-9) ;
for i in $ntfs
do
    mount $i /mnt;
    windows=$(ls /mnt |grep -i "windows");
    if [ "$windows" ]
      then dd if=/dev/sda of=/mnt/save-63-sectors.img bs=512 count=63 ;zenity --info --timeout=2 --text="La sauvegarde des 63 secteurs a été faite dans $i "       
    fi
    umount $i ;
done
}
#__________________________________________________________________________________________________________________________________________________________________


save63sectors_on_fat(){
##BOUCLE DE MONTAGE DES PARTITIONS FAT, POUR DEFINIR LA PARTITION SYSTEME ET Y INSTALLER UNE SAUVEGARDE DU MBR
fat=$(sudo fdisk -l|grep -i "fat"|cut -c1-9) ;
for i in $fat
do
    mount $i /mnt;
    windows=$(ls /mnt |grep -i "windows");
    if [ "$windows" ]
      then dd if=/dev/sda of=/mnt/save-63-sectors.img bs=512 count=63 ;zenity --info --timeout=2 --text="La sauvegarde des 63 secteurs a été faite dans $i "       
    fi
    umount $i ;
done
}
#__________________________________________________________________________________________________________________________________________________________________



save63sectors_on_hfs(){
##BOUCLE DE MONTAGE DES PARTITIONS HFS (MAC), POUR Y INSTALLER UNE SAUVEGARDE DU MBR
hfs=$(sudo fdisk -l|grep -i "hfs"|cut -c1-9) ;
for i in $hfs
do
    mount $i /mnt;
    boot=$(ls /mnt |grep -i "boot");
    if [ "$boot" ]
      then dd if=/dev/sda of=/mnt/save-63-sectors.img bs=512 count=63 ;zenity --info --timeout=2 --text="La sauvegarde des 63 secteurs a été faite dans $i "       
    fi
    umount $i ;
done
}
#__________________________________________________________________________________________________________________________________________________________________


save63sectors_on_linux(){
##BOUCLE DE MONTAGE DES PARTITIONS LINUX, POUR DEFINIR LA OU LES PARTITIONS SYSTEME (QUI POSSEDENT UN DOSSIER /BOOT) ET Y METTRE UNE SAUVEGARDE DU MBR
linux=$(sudo fdisk -l|grep -i "linux"|cut -c1-9) ;
for i in $linux
do
    mount $i /mnt;
    boot=$(ls /mnt |grep -i "boot");
    if [ "$boot" ]
      then dd if=/dev/sda of=/mnt/save-63-sectors.img bs=512 count=63 ;zenity --info --timeout=2 --text="La sauvegarde des 63 secteurs a été faite dans $i "       
    fi
    umount $i ;
done
}
#__________________________________________________________________________________________________________________________________________________________________


## DEBUT DU SCRIPT

## CONTROLE SI UN BACKUP DES 63 SECTEURS EXISTE DEJA SUR LE DISQUE OU PAS
DETECTED_BACKUP=0
DETECTED_SYSTEM=0
ntfs=$(sudo fdisk -l|grep -i "NTFS"|cut -c1-9) ;
if [ "$ntfs" ]; then
   echo "voici les partitons ntfs existantes = $ntfs" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS NTFS, DETECTE CELLES QUI SONT PARTITION SYSTEME (ont un dossier Windows) ET CELLES QUI ONT UNE SAUVEGARDE DU MBR
   for i in $ntfs
     do
       umount $i ;
       mount $i /mnt;
       windows=$(ls /mnt |grep -i "windows");
       if [ "$windows" ]; then
         echo "la partition $i est une partion NTFS windows"; DETECTED_SYSTEM=$(($DETECTED_SYSTEM+1)); control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ]
           then echo "la partition $i contient un backup"; DETECTED_BACKUP=$(($DETECTED_BACKUP+1))
         fi
       fi
       umount $i ;
   done
else echo "Il n'y a pas de partition NTFS" ;
fi

fat=$(sudo fdisk -l|grep -i "fat"|cut -c1-9) ;
if [ "$fat" ] && [ "$DETECTED_BACKUP"=0 ]; then
   echo "voici les partitons FAT existantes = $fat" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS fat, DETECTE CELLES QUI SONT PARTITION SYSTEME ET CELLES QUI ONT UNE SAUVEGARDE DU MBR
   for i in $fat
     do
       umount $i ;
       mount $i /mnt;
       windows=$(ls /mnt |grep -i "windows");
       if [ "$windows" ]; then
         echo "la partition $i est une partion FAT windows"; DETECTED_SYSTEM=$(($DETECTED_SYSTEM+1)); control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ]
           then echo "la partition $i contient un backup"; DETECTED_BACKUP=$(($DETECTED_BACKUP+1))
         fi
       fi
       umount $i ;
   done
else echo "Il n'y a pas de partition FAT" ;
fi

hfs=$(sudo fdisk -l|grep -i "hfs"|cut -c1-9) ;
if [ "$hfs" ] && [ "$DETECTED_BACKUP"=0 ]; then
   echo "voici les partitons hfs existantes = $hfs" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS hfs (Mac), DETECTE CELLES QUI SONT PARTITION SYSTEME ET CELLES QUI ONT UNE SAUVEGARDE DU MBR
   for i in $hfs
     do
       umount $i ;
       mount $i /mnt;
       boot=$(ls /mnt |grep -i "boot");
       if [ "$boot" ]; then
         echo "la partition $i est une partion hfs Mac"; DETECTED_SYSTEM=$(($DETECTED_SYSTEM+1)); control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ]
           then echo "la partition $i contient un backup"; DETECTED_BACKUP=$(($DETECTED_BACKUP+1))
         fi
       fi
       umount $i ;
   done
else echo "Il n'y a pas de partition hfs" ;
fi

linux=$(sudo fdisk -l|grep -i "linux"|cut -c1-9) ;
if [ "$linux" ] && [ "$DETECTED_BACKUP"=0 ]; then
   echo "voici les partitons linux existantes = $linux" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS linux, DETECTE CELLES QUI SONT PARTITION SYSTEME ET CELLES QUI ONT UNE SAUVEGARDE DU MBR
   for i in $linux
     do
       umount $i ;
       mount $i /mnt;
       boot=$(ls /mnt |grep -i "boot");
       if [ "$boot" ]; then
         echo "la partition $i est une partion linux systeme"; DETECTED_SYSTEM=$(($DETECTED_SYSTEM+1)); control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ]
           then echo "la partition $i contient un backup"; DETECTED_BACKUP=$(($DETECTED_BACKUP+1))
         fi
       fi
       umount $i ;
   done
else echo "Il n'y a pas de partition linux" ;
fi

echo "Il y a $DETECTED_SYSTEM systemes d'exploitation detectes."
echo "Il y a $DETECTED_BACKUP backups detectes."

##SI AUCUN BACKUP N'A ETE DETECTE, ON EN FAIT UN AUTOMATIQUEMENT
if [ "$DETECTED_BACKUP" = "0" ]; then
   echo "We will backup the 63 sectors on all existing systems"
   save63sectors_on_ntfs
   save63sectors_on_fat
   save63sectors_on_hfs
   save63sectors_on_linux
fi

##LANCE UBIQUITY (comme le fait normalement l'icone sur le bureau du live-CD)
ubiquity --desktop %k gtk_ui

##La pour bien faire il faudrait dupliquer le backup dans le boot de la nouvelle installation Ubuntu. (pour si le backup sur la partition windows est supprime par erreur).


exit 0

Dernière modification par YannUbuntu (Le 10/10/2010, à 15:04)


à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison

Hors ligne

#85 Le 10/10/2010, à 16:28

YannUbuntu

Re : [Live-CD] Linux Secure Remix

Correction de bugs et support du FAT pour le 2e script (celui de restauration du MBR) :

SCRIPT DE DESINSTALATION D'UBUNTU (v2) :

#! /bin/bash

## YannUbuntu le 10/10/2010

## DESINSTALLATION D'UBUNTU
## pour les tests, il suffit de mettre ce script dans le menu Systeme->Administration par exemple.
## le code est crade, si vous pouviez m'expliquer comment passer des arguments dans une fonction ca m'aiderait ;)
## A ameliorer : menu, controle de la qualite des backup, etc...


restauration_63_secteurs()
{
## CONTROLE SI UN BACKUP DES 63 SECTEURS EXISTE DEJA SUR LE DISQUE OU PAS
DETECTED_BACKUP=0
ntfs=$(fdisk -l|grep -i "ntfs"|cut -c1-9) ;
if [ "$ntfs" ]; then
   echo "voici les partitons ntfs existantes = $ntfs" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS NTFS, DETECTE CELLES QUI SONT PARTITION SYSTEME (ont un dossier Windows) ET CELLES QUI ONT UNE SAUVEGARDE DU MBR
   for i in $ntfs
     do
       umount $i ; mount $i /mnt;
       windows=$(ls /mnt |grep -i "windows");
       if [ "$windows" ]; then
         echo "la partition $i est une partion NTFS windows"; control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ]
           then echo "Restauration du backup de la partition $i"; DETECTED_BACKUP=$(($DETECTED_BACKUP+1))
                ### sauvegarde de la table de partition actuelle (il s'agit en fait du 1er secteur)
                dd if=/dev/sda of=/mnt/tp.img bs=512 count=1 ;
                ### restauration de la sauvegarde dans les 63 premiers secteurs
                dd if=/mnt/save-63-sectors.img of=/dev/sda bs=512 count=63 ;
                ### restauration de la table de partition actuelle
                sudo dd if=/mnt/tp.img of=/dev/sda bs=1 skip=446 count=64
         fi
       fi
       umount $i ;
   done
else echo "Il n'y a pas de partition NTFS" ;
fi

fat=$(fdisk -l|grep -i "fat"|cut -c1-9) ;
if [ "$fat" ] && [ "$DETECTED_BACKUP"="0" ]; then
   echo "voici les partitons FAT existantes = $fat" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS fat, DETECTE CELLES QUI SONT PARTITION SYSTEME ET CELLES QUI ONT UNE SAUVEGARDE DU MBR
   for i in $fat
     do
       umount $i ; mount $i /mnt;
       windows=$(ls /mnt |grep -i "windows");
       if [ "$windows" ]; then
         echo "la partition $i est une partion FAT windows"; control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ]
           then echo "la partition $i contient un backup"; DETECTED_BACKUP=$(($DETECTED_BACKUP+1))
                ### sauvegarde de la table de partition actuelle (il s'agit en fait du 1er secteur)
                dd if=/dev/sda of=/mnt/tp.img bs=512 count=1 ;
                ### restauration de la sauvegarde dans les 63 premiers secteurs
                dd if=/mnt/save-63-sectors.img of=/dev/sda bs=512 count=63 ;
                ### restauration de la table de partition actuelle
                sudo dd if=/mnt/tp.img of=/dev/sda bs=1 skip=446 count=64
         fi
       fi
       umount $i ;
   done
else echo "Il n'y a pas de partition FAT" ;
fi

hfs=$(fdisk -l|grep -i "hfs"|cut -c1-9) ;
if [ "$hfs" ] && [ "$DETECTED_BACKUP"="0" ]; then
   echo "voici les partitons hfs existantes = $hfs" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS hfs (Mac), DETECTE CELLES QUI SONT PARTITION SYSTEME ET CELLES QUI ONT UNE SAUVEGARDE DU MBR
   for i in $hfs
     do
       umount $i ; mount $i /mnt;
       boot=$(ls /mnt |grep -i "boot");
       if [ "$boot" ]; then
         echo "la partition $i est une partion hfs Mac"; control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ]
           then echo "la partition $i contient un backup"; DETECTED_BACKUP=$(($DETECTED_BACKUP+1))
                ### sauvegarde de la table de partition actuelle (il s'agit en fait du 1er secteur)
                dd if=/dev/sda of=/mnt/tp.img bs=512 count=1 ;
                ### restauration de la sauvegarde dans les 63 premiers secteurs
                dd if=/mnt/save-63-sectors.img of=/dev/sda bs=512 count=63 ;
                ### restauration de la table de partition actuelle
                sudo dd if=/mnt/tp.img of=/dev/sda bs=1 skip=446 count=64
         fi
       fi
       umount $i ;
   done
else echo "Il n'y a pas de partition hfs" ;
fi

linux=$(fdisk -l|grep -i "linux"|cut -c1-9) ;
if [ "$linux" ] && [ "$DETECTED_BACKUP"="0" ]; then
   echo "voici les partitons linux existantes = $linux" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS linux, DETECTE CELLES QUI SONT PARTITION SYSTEME ET CELLES QUI ONT UNE SAUVEGARDE DU MBR
   for i in $linux
     do
       umount $i ; mount $i /mnt;
       boot=$(ls /mnt |grep -i "boot");
       if [ "$boot" ]; then
         echo "la partition $i est une partion linux systeme"; control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ]
           then echo "la partition $i contient un backup"; DETECTED_BACKUP=$(($DETECTED_BACKUP+1))
                ### sauvegarde de la table de partition actuelle (il s'agit en fait du 1er secteur)
                dd if=/dev/sda of=/mnt/tp.img bs=512 count=1 ;
                ### restauration de la sauvegarde dans les 63 premiers secteurs
                dd if=/mnt/save-63-sectors.img of=/dev/sda bs=512 count=63 ;
                ### restauration de la table de partition actuelle
                sudo dd if=/mnt/tp.img of=/dev/sda bs=1 skip=446 count=64
         fi
       fi
       umount $i ;
   done
else echo "Il n'y a pas de partition linux" ;
fi


##ON PREVIENT L'UTILISATEUR
if [ "$DETECTED_BACKUP"=0 ]; then
   zenity --info --timeout=2 --text="IL N'EXISTE PAS DE SAUVEGARDE D'AMORCAGE SUR CET ORDINATEUR." 
else
   zenity --info --timeout=2 --text="L'amorcage original de cet ordinateur a été restauré. Merci d'avoir essayé Ubuntu, et à bientot !" 
fi
}
#___________________________________________________________________________________________________________________________________________________________________



### MENU DE DESINSTALLATION DES DISTROS INSTALLEES SUR L'ORDINATEUR   -- A TERMINER
desinstallation_linux()
{


DETECTED_BACKUP=0
DETECTED_LINUX=0
linux=$(fdisk -l|grep -i "linux"|cut -c1-9) ;
if [ "$linux" ]; then
   echo "voici les partitons linux existantes = $linux" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS linux, DETECTE CELLES QUI SONT PARTITION SYSTEME
   for i in $linux
     do
       umount $i ; mount $i /mnt;
       boot=$(ls /mnt |grep -i "boot");
       if [ "$boot" ]; then
         DETECTED_LINUX=$(($DETECTED_LINUX+1))
         echo "la partition $i est une partion linux systeme"; control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ]
           then echo "la partition $i contient un backup"; DETECTED_BACKUP=$(($DETECTED_BACKUP+1))
         fi
       fi
       umount $i ;
   done
else zenity --info --timeout=2 --text="IL N'EXISTE PAS DE LINUX SUR CET ORDINATEUR." ; menu_initial ; break
fi

##SI UNE SEULE INSTALLATION LINUX, ALORS ON RESTAURE LES 63 SECTEURS ORIGINAUX  (pour bien faire il faudrait demander confirmation)
if [ "$DETECTED_LINUX"="1" ]
then 
  ## RESTAURE LES 63 SECTEURS ORIGINAUX
  DETECTED_BACKUP=0
  ntfs=$(fdisk -l|grep -i "ntfs"|cut -c1-9) ;
  if [ "$ntfs" ]; then
   echo "voici les partitons ntfs existantes = $ntfs" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS NTFS, DETECTE CELLES QUI SONT PARTITION SYSTEME (ont un dossier Windows) ET CELLES QUI ONT UNE SAUVEGARDE DU MBR
   for i in $ntfs
     do
       umount $i ; mount $i /mnt;
       windows=$(ls /mnt |grep -i "windows");
       if [ "$windows" ]; then
         echo "la partition $i est une partion NTFS windows"; control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ]
           then echo "Restauration du backup de la partition $i"; DETECTED_BACKUP=$(($DETECTED_BACKUP+1))
                ### sauvegarde de la table de partition actuelle (il s'agit en fait du 1er secteur)
                dd if=/dev/sda of=/mnt/tp.img bs=512 count=1 ;
                ### restauration de la sauvegarde dans les 63 premiers secteurs
                dd if=/mnt/save-63-sectors.img of=/dev/sda bs=512 count=63 ;
                ### restauration de la table de partition actuelle
                sudo dd if=/mnt/tp.img of=/dev/sda bs=1 skip=446 count=64
         fi
       fi
       umount $i ;
   done
  else echo "Il n'y a pas de partition NTFS" ;
  fi

  fat=$(fdisk -l|grep -i "fat"|cut -c1-9) ;
  if [ "$fat" ] && [ "$DETECTED_BACKUP"=0 ]; then
   echo "voici les partitons FAT existantes = $fat" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS fat, DETECTE CELLES QUI SONT PARTITION SYSTEME ET CELLES QUI ONT UNE SAUVEGARDE DU MBR
   for i in $fat
     do
       umount $i ; mount $i /mnt;
       windows=$(ls /mnt |grep -i "windows");
       if [ "$windows" ]; then
         echo "la partition $i est une partion FAT windows"; control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ]
           then echo "la partition $i contient un backup"; DETECTED_BACKUP=$(($DETECTED_BACKUP+1))
                ### sauvegarde de la table de partition actuelle (il s'agit en fait du 1er secteur)
                dd if=/dev/sda of=/mnt/tp.img bs=512 count=1 ;
                ### restauration de la sauvegarde dans les 63 premiers secteurs
                dd if=/mnt/save-63-sectors.img of=/dev/sda bs=512 count=63 ;
                ### restauration de la table de partition actuelle
                sudo dd if=/mnt/tp.img of=/dev/sda bs=1 skip=446 count=64
         fi
       fi
       umount $i ;
   done
  else echo "Il n'y a pas de partition FAT" ;
  fi

  hfs=$(fdisk -l|grep -i "hfs"|cut -c1-9) ;
  if [ "$hfs" ] && [ "$DETECTED_BACKUP"=0 ]; then
   echo "voici les partitons hfs existantes = $hfs" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS hfs (Mac), DETECTE CELLES QUI SONT PARTITION SYSTEME ET CELLES QUI ONT UNE SAUVEGARDE DU MBR
   for i in $hfs
     do
       umount $i ; mount $i /mnt;
       boot=$(ls /mnt |grep -i "boot");
       if [ "$boot" ]; then
         echo "la partition $i est une partion hfs Mac"; control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ]
           then echo "la partition $i contient un backup"; DETECTED_BACKUP=$(($DETECTED_BACKUP+1))
                ### sauvegarde de la table de partition actuelle (il s'agit en fait du 1er secteur)
                dd if=/dev/sda of=/mnt/tp.img bs=512 count=1 ;
                ### restauration de la sauvegarde dans les 63 premiers secteurs
                dd if=/mnt/save-63-sectors.img of=/dev/sda bs=512 count=63 ;
                ### restauration de la table de partition actuelle
                sudo dd if=/mnt/tp.img of=/dev/sda bs=1 skip=446 count=64
         fi
       fi
       umount $i ;
   done
  else echo "Il n'y a pas de partition hfs" ;
  fi

  linux=$(fdisk -l|grep -i "linux"|cut -c1-9) ;
  if [ "$linux" ] && [ "$DETECTED_BACKUP"=0 ]; then
   echo "voici les partitons linux existantes = $linux" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS linux, DETECTE CELLES QUI SONT PARTITION SYSTEME ET CELLES QUI ONT UNE SAUVEGARDE DU MBR
   for i in $linux
     do
       umount $i ; mount $i /mnt;
       boot=$(ls /mnt |grep -i "boot");
       if [ "$boot" ]; then
         echo "la partition $i est une partion linux systeme"; control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ]
           then echo "la partition $i contient un backup"; DETECTED_BACKUP=$(($DETECTED_BACKUP+1))
                ### sauvegarde de la table de partition actuelle (il s'agit en fait du 1er secteur)
                dd if=/dev/sda of=/mnt/tp.img bs=512 count=1 ;
                ### restauration de la sauvegarde dans les 63 premiers secteurs
                dd if=/mnt/save-63-sectors.img of=/dev/sda bs=512 count=63 ;
                ### restauration de la table de partition actuelle
                sudo dd if=/mnt/tp.img of=/dev/sda bs=1 skip=446 count=64
         fi
       fi
       umount $i ;
   done
  else echo "Il n'y a pas de partition linux" ;
  fi

  ##ON PREVIENT L'UTILISATEUR
  if [ "$DETECTED_BACKUP" = "0" ]; then
   zenity --info --timeout=2 --text="IL N'EXISTE PAS DE SAUVEGARDE D'AMORCAGE SUR CET ORDINATEUR. FORMATEZ UBUNTU PUIS METTEZ A JOUR VOTRE AMORCEUR." 
  else
   zenity --info --timeout=2 --text="L'amorcage original de cet ordinateur a été restauré. Merci d'avoir essayé Ubuntu, et à bientot !" 
  fi

fi

##SI PLUSIEURS INSTALLATIONS LINUX, ALORS ON DEMANDE QUELLE DISTRO L'UTILISATEUR VEUT SUPPRIMER, on la supprime ET ON REINSTALLE GRUB sur une distro restante (determinee par l'utilisateur)  -- a terminer
if [ "$DETECTED_LINUX" != "1" ] && [ "$DETECTED_LINUX" != "0" ]
then
  zenity --info --timeout=2 --text="FONCTIONNALITE EN DEVELOPPEMENT. En attendant, vous pouvez le faire vous-meme en formatant la distribution souhaitee puis en mettant a jour votre amorceur." 
fi
}
#___________________________________________________________________________________________________________________________________________________________________



##DEBUT DU SCRIPT

##Ce n'est pas definitif, mais ca se rapproche du schema proposé sur le forum
menu_initial()
{
action=$(zenity --list --title="DESINSTALLATION D'UBUNTU" --text="Choisissez une action" --column=""  "RESTAURER L'AMORCAGE ORIGINAL DE L'ORDINATEUR" "DESINSTALLER UBUNTU DE L'ORDINATEUR") || exit 100;
            
                if [ "$action" = "RESTAURER L'AMORCAGE ORIGINAL DE L'ORDINATEUR" ]
                  then restauration_63_secteurs 
                elif [ "$action" = "DESINSTALLER UBUNTU DE L'ORDINATEUR" ]
                  then desinstallation_linux
                fi
}
#___________________________________________________________________________________________________________________________________________________________________


menu_initial
exit 0

Dernière modification par YannUbuntu (Le 10/10/2010, à 16:30)


à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison

Hors ligne

#86 Le 10/10/2010, à 16:41

Josepe36

Re : [Live-CD] Linux Secure Remix

j'ai une question au passage, est ce que le mbr des differents systemes commerciaux sont protégés par copyright ?
si vous voyez ou je veux en venir ....

Dernière modification par Josepe36 (Le 10/10/2010, à 16:43)


Développeur distribution Hybryde
www.hybryde.org

Hors ligne

#87 Le 10/10/2010, à 16:50

Josepe36

Re : [Live-CD] Linux Secure Remix

Un sacré bosseur ce yannubuntu

j'ai collectionné tout tes scripts, et bien j'ai plus grand chose à faire !!! tongue


Développeur distribution Hybryde
www.hybryde.org

Hors ligne

#88 Le 10/10/2010, à 16:52

YannUbuntu

Re : [Live-CD] Linux Secure Remix

Moi je me pose la question des systèmes MacOS : qu'ont-ils comme dossier "typique" a la racine du systeme installé ?
(j'ai mis "boot" par défaut vu que c'est de l'UNIX, mais je prefere verifier)

@Josepe : mon script de sauve fonctionne bien, par contre il reste des bugs sur le script de restauration... si tu peux y jeter un oeil smile

@tous : pour tester les scripts, je conseille de tester sous VirtualBox, ca permet de creer un disque avec tous types de partitions. wink

Dernière modification par YannUbuntu (Le 10/10/2010, à 16:56)


à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison

Hors ligne

#89 Le 10/10/2010, à 17:05

Josepe36

Re : [Live-CD] Linux Secure Remix

@yannubuntu : je viens de l'essayer, j'ai relever effectivement quelques bricoles mais rien de mechant, je verrai ça demain en grande profondeur wink car plus de temps
en revanche pour la fonction de désinstallation je m'y colle ou tu le fais?  car tu codes a la vitesse de l'éclair là big_smile


Développeur distribution Hybryde
www.hybryde.org

Hors ligne

#90 Le 10/10/2010, à 17:06

angelus1

Re : [Live-CD] Linux Secure Remix

salut,
je vous suis avec depuis le premier post .superbe travail collaboratif (et surtout très utile).
merci pour les futurs utilisateurs.

Hors ligne

#91 Le 10/10/2010, à 17:51

Josepe36

Re : [Live-CD] Linux Secure Remix

salut angelus1

celà fait plaisir, merci.

@yannubuntu : pour passer un argument a une fonction ça se passe comme ça, je te poste une modif que j'ai fait en exemple sur ta derniere fonction pour que tu comprennes :

##DEBUT DU SCRIPT

##Ce n'est pas definitif, mais ca se rapproche du schema proposé sur le forum
menu_initial()
{
echo $1
action=$(zenity --list --title="DESINSTALLATION D'UBUNTU" --text="Choisissez une action" --column=""  "RESTAURER L'AMORCAGE ORIGINAL DE L'ORDINATEUR" "DESINSTALLER UBUNTU DE L'ORDINATEUR") || exit 100;
            
                if [ "$action" = "RESTAURER L'AMORCAGE ORIGINAL DE L'ORDINATEUR" ]
                  then restauration_63_secteurs 
                elif [ "$action" = "DESINSTALLER UBUNTU DE L'ORDINATEUR" ]
                  then desinstallation_linux
                fi
}
#___________________________________________________________________________________________________________________________________________________________________



menu_initial $1 
exit 0

ici tu appel ta fonction menu_initial, $1 recupere l'argument passé dans le terminal.


Développeur distribution Hybryde
www.hybryde.org

Hors ligne

#92 Le 11/10/2010, à 16:08

YannUbuntu

Re : [Live-CD] Linux Secure Remix

Merci Josepe, je vais faire des miracles avec ca wink Je ne suis pas sur d'avoir beaucoup de temps cette semaine, donc je veux bien que tu m'aides sur un point stp : actuellement la commande linux=$(sudo fdisk -l|grep -i "linux"|cut -c1-9) nous fait un tableau du genre :

/dev/sda2
/dev/sda3
/dev/sda5
/dev/sda6

Comment fais-tu pour :
- supprimer la 3-ieme ligne ?
- ajouter une 5-ieme ligne (en y mettant dev/sda7 par exemple) ?


@tous : quelqu'un peut-il se renseigner a propos des dossiers que l'on trouve dans la racine des MacOS svp ? (y a-t-il bien un dossier "boot" ?)


à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison

Hors ligne

#93 Le 11/10/2010, à 23:24

Josepe36

Re : [Live-CD] Linux Secure Remix

salut yannubuntu

tiens voilà un exemple a ta question pour supprimer une ligne et en rajoutter une :

#! /bin/bash

linux=$(sudo fdisk -l|grep -i "linux"|cut -c1-9)

n=0
for i in $linux
        do
              tab[$n]=$i
              n=$(($n+1))

       done

tab[3]=""
tab[5]="/dev/sda8"
echo ${tab[@]}

exit 0

en ésperant que ça t'aide wink

Dernière modification par Josepe36 (Le 11/10/2010, à 23:26)


Développeur distribution Hybryde
www.hybryde.org

Hors ligne

#94 Le 12/10/2010, à 10:33

YannUbuntu

Re : [Live-CD] Linux Secure Remix

Merci beaucoup ! smile

J'y ai retravaillé un peu. Voici la version 3 de mes deux scripts, avec comme nouveautés :
- un code plus propre
- duplication du backup pour augmenter la sécurité
- possibilité de désinstaller n'importe-quelle distro compatible en dual-boot avec Windows ou autre
- nettoyage apres desinstallation dual-boot
- si multi-boot linux (limite actuelle : maximum 5 distros en multiboot), possibilité de choisir la distro que l'on veut désinstaller, et cela réinstalle automatiquement GRUB.


SCRIPT D'INSTALLATION D'UBUNTU (v3) :

#! /bin/bash

## YannUbuntu le 12/10/2010

## SAUVE AUTOMATIQUE DES 63 SECTEURS D'ORIGINE SUR LA RACINE DES PARTITIONS contenant un OS (Windows, Mac et Linux), puis lance Ubiquity, puis duplique le backup sur la partition du Linux nouvellement installé.
## pour les tests, il suffit de modifier le lanceur "Installation Ubuntu" qui se trouve sur le bureau du live-CD par ce script.
## Améliorations possibles : placer le backup dans le dossier /boot au lieu de /, support du multi-disques (sdb, sdc..), ..


duplicate63sectors(){
##ON DUPLIQUE LE BACKUP DANS LES PARTITIONS SYSTEME de type $TEMP_FILESYSTEM
tab=$(sudo fdisk -l|grep -i "$TEMP_FILESYSTEM"|cut -c1-10) ;
for i in $tab
do
    umount $i ;
    mount $i /mnt;
    folder=$(ls /mnt |grep -i "$TEMP_SYSTEMFOLDER");
    if [ "$folder" ]
      then control=$(ls /mnt | grep "save-63-sectors.img") ;
           if [ "$control" ] 
             then echo "la partition $i est une partion $TEMP_FILESYSTEM systeme contenant déjà un backup";
           else
             dd if=/tmp/save-63-sectors.img of=/mnt/save-63-sectors.img bs=512 count=63 ;
             echo "The 63 sectors have been duplicated into partition $i " ; 
             QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP=$(($QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP+1)) ; 
             QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP=$(($QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP-1)) ;  
           fi
    fi
    umount $i ;
done
}
#__________________________________________________________________________________________________________________________________________________________________


save63sectors(){
##BOUCLE DE MONTAGE DES PARTITIONS de type $TEMP_FILESYSTEM, POUR DEFINIR LA PARTITION SYSTEME ET Y INSTALLER UNE SAUVEGARDE Des 63 secteurs
tab=$(sudo fdisk -l|grep -i "$TEMP_FILESYSTEM"|cut -c1-10) ;
for i in $tab
do
    umount $i ;
    mount $i /mnt;
    folder=$(ls /mnt |grep -i "$TEMP_SYSTEMFOLDER");
    if [ "$folder" ]
      then dd if=/dev/sda of=/mnt/save-63-sectors.img bs=512 count=63 ;
           echo "*********The 63 sectors have been saved into partition $i " ; 
           QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP=$(($QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP+1)) ; 
           QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP=$(($QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP-1)) ;  
           if [ "$QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP" = "1" ]; then 
              dd if=/mnt/save-63-sectors.img of=/tmp/save-63-sectors.img bs=512 count=63
           fi 
    fi
    umount $i ;
done
}
#__________________________________________________________________________________________________________________________________________________________________

detect_backup(){
tab=$(sudo fdisk -l|grep -i "$TEMP_FILESYSTEM"|cut -c1-10) ;
if [ "$tab" ]; then
   echo "voici les partitons $TEMP_FILESYSTEM existantes = $tab" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS de type $TEMP_FILESYSTEM, DETECTE CELLES QUI SONT PARTITION SYSTEME ET CELLES QUI ONT UNE SAUVEGARDE DES 63 secteurs
   for i in $tab
     do
       umount $i ;
       mount $i /mnt;
       folder=$(ls /mnt |grep -i "$TEMP_SYSTEMFOLDER");
       if [ "$folder" ]; then
         control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ] 
           then echo "la partition $i est une partion $TEMP_FILESYSTEM systeme contenant un backup"; 
                QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP=$(($QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP+1)) ; 
                if [ "$QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP" = "1" ]; then dd if=/mnt/save-63-sectors.img of=/tmp/save-63-sectors.img bs=512 count=63
                fi
           else echo "la partition $i est une partion $TEMP_FILESYSTEM systeme ne contenant pas de backup"; 
                QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP=$(($QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP+1))
         fi
       fi
       umount $i ;
   done
else echo "Il n'y a pas de partition $TEMP_FILESYSTEM" ;
fi
}
#__________________________________________________________________________________________________________________________________________________________________


## DEBUT DU SCRIPT

echo "Beginning of script."

## CONTROLE SI UN BACKUP DES 63 SECTEURS EXISTE DEJA SUR LE DISQUE, SI OUI IL LE GARDE EN MEMOIRE (dans /tmp)
QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP=0
QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP=0

TEMP_FILESYSTEM="ntfs"; TEMP_SYSTEMFOLDER="windows"
detect_backup $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP
TEMP_FILESYSTEM="fat"; TEMP_SYSTEMFOLDER="windows"
detect_backup $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP
TEMP_FILESYSTEM="hfs"; TEMP_SYSTEMFOLDER="boot"
detect_backup $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP
TEMP_FILESYSTEM="linux"; TEMP_SYSTEMFOLDER="boot"
detect_backup $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP



echo "Nous avons detecté $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP backup(s), et $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP systèmes d'exploitation sans backup."

##SI AUCUN BACKUP N'A ETE DETECTE, ON EN FAIT UN AUTOMATIQUEMENT SUR TOUS LES OS, et on le garde aussi en memoire (/tmp)
if [ "$QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP" = "0" ] && [ "$QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP" != "0" ]; then
   echo "No backup detected. We will backup the 63 sectors on all existing systems"
   ##SAUVE DU MBR DANS LES PARTITIONS NTFS (CONTENANT WINDOWS)
   TEMP_FILESYSTEM="ntfs";   TEMP_SYSTEMFOLDER="windows"
   save63sectors $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP
   ##SAUVE DU MBR DANS LES PARTITIONS FAT (CONTENANT WINDOWS)
   TEMP_FILESYSTEM="fat";   TEMP_SYSTEMFOLDER="windows"
   save63sectors $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP
   ##SAUVE DU MBR DANS LES PARTITIONS HFS (CONTENANT MACOS)
   TEMP_FILESYSTEM="hfs";   TEMP_SYSTEMFOLDER="boot"
   save63sectors $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP
   ##SAUVE DU MBR DANS LES PARTITIONS LINUX (CONTENANT UNE DISTRIBUTION)
   TEMP_FILESYSTEM="linux";   TEMP_SYSTEMFOLDER="boot"
   save63sectors $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP
fi

##Ici pour bien faire, s'il y a plusieurs backups, il faudrait verifier que tous les backups sont identiques. S'il y a des differences (corruption d'un fichier), on garde le plus nombreux et de preference celui sur une partition linux.


##S'IL RESTE DES OS SANS BACKUP, ON Y DUPLIQUE LE BACKUP (pour augmenter la sécurité)
if [ "$QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP" != "0" ] && [ "$QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP" != "0" ]; then
   echo "Some OS without backup have been detected. We will duplicate the backup in all of them."
   ##SAUVE DU MBR DANS LES PARTITIONS NTFS (CONTENANT WINDOWS)
   TEMP_FILESYSTEM="ntfs";   TEMP_SYSTEMFOLDER="windows"
   duplicate63sectors $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP
   if [ "$QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP" != "0" ]; then
     ##SAUVE DU MBR DANS LES PARTITIONS FAT (CONTENANT WINDOWS)
     TEMP_FILESYSTEM="fat";   TEMP_SYSTEMFOLDER="windows"
     duplicate63sectors $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP
     if [ "$QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP" != "0" ]; then
       ##SAUVE DU MBR DANS LES PARTITIONS HFS (CONTENANT MACOS)
       TEMP_FILESYSTEM="hfs";   TEMP_SYSTEMFOLDER="boot"
       duplicate63sectors $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP
       if [ "$QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP" != "0" ]; then
         ##SAUVE DU MBR DANS LES PARTITIONS LINUX (CONTENANT UNE DISTRIBUTION)
         TEMP_FILESYSTEM="linux";   TEMP_SYSTEMFOLDER="boot"
         duplicate63sectors $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP
       fi
     fi
   fi
fi

echo "Avant de lancer Ubiquity, il reste $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP backup(s), et $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP systèmes d'exploitation sans backup."

##LANCE UBIQUITY (comme le fait normalement l'icone sur le bureau du live-CD)
ubiquity --desktop %k gtk_ui

echo "Après avoir lancé Ubiquity, il reste $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP backup(s), et $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP systèmes d'exploitation sans backup."

##Pour finir, on duplique le backup dans la nouvelle installation Ubuntu/Linux. (pour si le backup sur la partition windows est supprimé par erreur).
echo "We will duplicate the backup in the new existing Ubuntu/Linux"
TEMP_FILESYSTEM="linux";   TEMP_SYSTEMFOLDER="boot"
duplicate63sectors $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP

echo "End of script. A backup of the 63 sectors should be present at the root of all existing OS."

exit 0

Dernière modification par YannUbuntu (Le 12/10/2010, à 14:38)


à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison

Hors ligne

#95 Le 12/10/2010, à 10:34

YannUbuntu

Re : [Live-CD] Linux Secure Remix

et le deuxieme script :

SCRIPT DE DESINSTALLATION D'UBUNTU (v3) :

#! /bin/bash

## YannUbuntu le 12/10/2010

## DESINSTALLATION D'UBUNTU
## pour les tests, il suffit de mettre ce script dans le menu Systeme->Administration par exemple.
## A ameliorer : menu, controle de la qualite des backup, multiboot de plus de 5 distros...

detect_backup(){
tab=$(sudo fdisk -l|grep -i "$TEMP_FILESYSTEM"|cut -c1-10) ;
if [ "$tab" ]; then
   echo "voici les partitons $TEMP_FILESYSTEM existantes = $tab" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS de type $TEMP_FILESYSTEM, DETECTE CELLES QUI SONT PARTITION SYSTEME ET CELLES QUI ONT UNE SAUVEGARDE DES 63 secteurs
   for i in $tab
     do
       umount $i ;
       mount $i /mnt;
       folder=$(ls /mnt |grep -i "$TEMP_SYSTEMFOLDER");
       if [ "$folder" ]; then
         control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ] 
           then echo "la partition $i est une partion $TEMP_FILESYSTEM systeme contenant un backup"; 
                QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP=$(($QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP+1)) ; 
                if [ "$QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP" = "1" ]; then dd if=/mnt/save-63-sectors.img of=/tmp/save-63-sectors.img bs=512 count=63
                fi
           else echo "la partition $i est une partion $TEMP_FILESYSTEM systeme ne contenant pas de backup"; 
                QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP=$(($QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP+1))
         fi
         ##Creates a tab with partitions containing an installation of Linux
         if [ "$TEMP_FILESYSTEM" = "linux" ]; then
           QUANTITY_OF_DETECTED_LINUX=$(($QUANTITY_OF_DETECTED_LINUX+1))
           LIST_OF_EXISTING_LINUX[$QUANTITY_OF_DETECTED_LINUX]="$i"
         fi
       fi
       umount $i ;
   done
else echo "Il n'y a pas de partition $TEMP_FILESYSTEM" ;
fi
}
#__________________________________________________________________________________________________________________________________________________________________



restore63sectors(){
## RESTAURE LES BACKUPS se trouvant sur les partitions de type $TEMP_FILESYSTEM , et efface les backups se trouvant sur les partitions
tab=$(sudo fdisk -l|grep -i "$TEMP_FILESYSTEM"|cut -c1-10) ;
if [ "$tab" ]; then
   echo "voici les partitons $TEMP_FILESYSTEM existantes = $tab" ;
   ##BOUCLE DE MONTAGE DES PARTITIONS de type $TEMP_FILESYSTEM, DETECTE CELLES QUI SONT PARTITION SYSTEME ET CELLES QUI ONT UNE SAUVEGARDE DES 63 secteurs
   for i in $tab
     do
       umount $i ;
       mount $i /mnt;
       folder=$(ls /mnt |grep -i "$TEMP_SYSTEMFOLDER");
       if [ "$folder" ]; then
         control=$(ls /mnt | grep "save-63-sectors.img") ;
         if [ "$control" ] 
           then echo "la partition $i est une partion $TEMP_FILESYSTEM systeme contenant un backup, on restaure ce backup dans le MBR de sda."; 
                QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP=$(($QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP+1)) 
                ### sauvegarde de la table de partition actuelle (il s'agit en fait du 1er secteur)
                dd if=/dev/sda of=/tmp/backup_of_current_first_sector.img bs=512 count=1 ;
                ### restauration de la sauvegarde dans les 63 premiers secteurs
                dd if=/mnt/save-63-sectors.img of=/dev/sda bs=512 count=63 ;
                ### restauration de la table de partition actuelle
                dd if=/tmp/backup_of_current_first_sector.img of=/dev/sda bs=1 skip=446 count=64
                ### renomme le backup (afin de ne pas interferer avec le backup de la prochaine installation, tout en le gardant en cas de pépin)
                mv /mnt/save-63-sectors.img /mnt/sav63sectors_old.img
           else echo "la partition $i est une partion $TEMP_FILESYSTEM systeme ne contenant pas de backup"
         fi
       fi
       umount $i ;
   done
else echo "Il n'y a pas de partition $TEMP_FILESYSTEM" ;
fi
}
#__________________________________________________________________________________________________________________________________________________________________




### MENU DE DESINSTALLATION DES DISTROS INSTALLEES SUR L'ORDINATEUR   -- A TERMINER
uninstall_linux()
{

## CONTROLE SI UN BACKUP DES 63 SECTEURS EXISTE DEJA SUR LE DISQUE, SI OUI IL LE GARDE EN MEMOIRE (dans /tmp)
QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP=0
QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP=0
QUANTITY_OF_DETECTED_LINUX=0

TEMP_FILESYSTEM="linux"; TEMP_SYSTEMFOLDER="boot"
detect_backup $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP $QUANTITY_OF_DETECTED_LINUX $LIST_OF_EXISTING_LINUX

##SI AUCUN LINUX N'EST DETECTE
if [ "$QUANTITY_OF_DETECTED_LINUX" = "0" ]; then
  zenity --info --text="Erreur : aucune installation Linux n'a été détectée sur cet ordinateur." 

##SI AU MOINS UN LINUX A ETE DETECTE
else
  TEMP_FILESYSTEM="ntfs"; TEMP_SYSTEMFOLDER="windows"
  detect_backup $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP
  TEMP_FILESYSTEM="fat"; TEMP_SYSTEMFOLDER="windows"
  detect_backup $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP
  TEMP_FILESYSTEM="hfs"; TEMP_SYSTEMFOLDER="boot"
  detect_backup $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP
  
  echo "Nous avons détecté $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP backup(s), et $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP systèmes d'exploitation sans backup."
  echo "Nous avons détecté $QUANTITY_OF_DETECTED_LINUX distribution(s) Linux."

  ##SI UNE SEULE INSTALLATION LINUX, ALORS ON RESTAURE LES 63 SECTEURS ORIGINAUX (en demandant confirmation)
  if [ "$QUANTITY_OF_DETECTED_LINUX" = "1" ]
  then 
    ##SI AUCUN BACKUP N'EST DETECTE
    if [ "$QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP" = "0" ]; then
      zenity --info --text="Il n'existe pas de sauvegarde d'amorcage sur cet ordinateur. Cela signifie que vous aviez installé une distribution Linux ancienne (Ubuntu 10.10 et antérieures). Pour la désinstaller, formatez-la Ubuntu puis mettez à jour votre amorceur." 

      ##SI AU MOINS UN BACKUP A ETE DETECTE
    else
      confirmation=$(zenity --list --title="CONFIRMATION DE DESINSTALLATION D'UBUNTU" --text="Ceci effacera Ubuntu et restaurera l'amorcage initial de votre ordinateur. Attention, toutes vos données contenues dans Ubuntu seront effacées." --column="" "Désinstaller Ubuntu (partition ${LIST_OF_EXISTING_LINUX[1]})") || exit 101;
        
      if [ "$confirmation" = "Désinstaller Ubuntu (partition ${LIST_OF_EXISTING_LINUX[1]})" ]
      then 

        ## RESTAURE LE PREMIER BACKUP DETECTE SUR LE DISQUE, et efface tous les backups des disques
        QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP=0   
        TEMP_FILESYSTEM="linux"; TEMP_SYSTEMFOLDER="boot"
        restore63sectors $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP
        TEMP_FILESYSTEM="ntfs"; TEMP_SYSTEMFOLDER="windows"
        restore63sectors $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP
        TEMP_FILESYSTEM="fat"; TEMP_SYSTEMFOLDER="windows"
        restore63sectors $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP
        TEMP_FILESYSTEM="hfs"; TEMP_SYSTEMFOLDER="boot"
        restore63sectors $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP
        echo "The $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP backup(s) have been renamed into sav63sectors_old.img, so that they won't be detected during next Ubuntu installation."
        ##Efface le contenu de la partition choisie par l'utilisateur
        umount ${LIST_OF_EXISTING_LINUX[1]} ;
        mount ${LIST_OF_EXISTING_LINUX[1]} /mnt;
        rm -r /mnt/*  
        umount ${LIST_OF_EXISTING_LINUX[1]} ;
        zenity --info --text="Ubuntu a été correctement desinstallé. Merci d'avoir essayé Ubuntu, et à bientot !" 
      fi
    fi

  ##SI PLUSIEURS INSTALLATIONS LINUX, ALORS ON DEMANDE QUELLE DISTRO L'UTILISATEUR VEUT SUPPRIMER, on la supprime ET ON REINSTALLE GRUB sur une distro restante (determinee par l'utilisateur)  -- a terminer
  else
      echo "We display the list of all partitions containing Linux installations";  
      ##Pour le moment je me restreins a 5 installations Linux maximum. Il faudrait trouver un moyen d'afficher non pas 5 elements mais un nombre d'elements egal au nombre de distros detectees
      choice=$(zenity --list --title="CONFIRMATION DE DESINSTALLATION" --text="Quelle distribution Linux souhaitez-vous desinstaller ?" --column="" "Désinstaller Ubuntu/Linux (partition ${LIST_OF_EXISTING_LINUX[1]})" "Désinstaller Ubuntu/Linux (partition ${LIST_OF_EXISTING_LINUX[2]})" "Désinstaller Ubuntu/Linux (partition ${LIST_OF_EXISTING_LINUX[3]})" "Désinstaller Ubuntu/Linux (partition ${LIST_OF_EXISTING_LINUX[4]})" "Désinstaller Ubuntu/Linux (partition ${LIST_OF_EXISTING_LINUX[5]})") || exit 102;
      if [ "$choice" = "Désinstaller Ubuntu/Linux (partition ${LIST_OF_EXISTING_LINUX[1]})" ];then 
        ##Efface le contenu de la partition choisie par l'utilisateur
        umount ${LIST_OF_EXISTING_LINUX[1]} ;
        mount ${LIST_OF_EXISTING_LINUX[1]} /mnt;
        rm -r /mnt/*  
        umount ${LIST_OF_EXISTING_LINUX[1]} ;
        ##Reinstalle GRUB dans la 2eme installation Linux
        mount ${LIST_OF_EXISTING_LINUX[2]} /mnt;
        sudo grub-install --root-directory=/mnt /dev/sda
        umount ${LIST_OF_EXISTING_LINUX[2]} 
      elif [ "$choice" = "Désinstaller Ubuntu/Linux (partition ${LIST_OF_EXISTING_LINUX[2]})" ];then
        ##Efface le contenu de la partition choisie par l'utilisateur
        umount ${LIST_OF_EXISTING_LINUX[2]} ;
        mount ${LIST_OF_EXISTING_LINUX[2]} /mnt;
        rm -r /mnt/*   
        umount ${LIST_OF_EXISTING_LINUX[2]} ;
        ##Reinstalle GRUB dans la 1ere installation Linux
        mount ${LIST_OF_EXISTING_LINUX[1]} /mnt;
        sudo grub-install --root-directory=/mnt /dev/sda
        umount ${LIST_OF_EXISTING_LINUX[1]} 
      elif [ "$choice" = "Désinstaller Ubuntu/Linux (partition ${LIST_OF_EXISTING_LINUX[3]})" ];then
        ##Efface le contenu de la partition choisie par l'utilisateur
        umount ${LIST_OF_EXISTING_LINUX[3]} ;
        mount ${LIST_OF_EXISTING_LINUX[3]} /mnt;
        rm -r /mnt/*   
        umount ${LIST_OF_EXISTING_LINUX[3]} ;
        ##Reinstalle GRUB dans la 1ere installation Linux
        mount ${LIST_OF_EXISTING_LINUX[1]} /mnt;
        sudo grub-install --root-directory=/mnt /dev/sda
        umount ${LIST_OF_EXISTING_LINUX[1]} 
      elif [ "$choice" = "Désinstaller Ubuntu/Linux (partition ${LIST_OF_EXISTING_LINUX[4]})" ];then
        ##Efface le contenu de la partition choisie par l'utilisateur
        umount ${LIST_OF_EXISTING_LINUX[4]} ;
        mount ${LIST_OF_EXISTING_LINUX[4]} /mnt;
        rm -r /mnt/*  
        umount ${LIST_OF_EXISTING_LINUX[4]} ;
        ##Reinstalle GRUB dans la 1ere installation Linux
        mount ${LIST_OF_EXISTING_LINUX[1]} /mnt;
        sudo grub-install --root-directory=/mnt /dev/sda
        umount ${LIST_OF_EXISTING_LINUX[1]} 
      elif [ "$choice" = "Désinstaller Ubuntu/Linux (partition ${LIST_OF_EXISTING_LINUX[5]})" ];then
        ##Efface le contenu de la partition choisie par l'utilisateur
        umount ${LIST_OF_EXISTING_LINUX[5]} ;
        mount ${LIST_OF_EXISTING_LINUX[5]} /mnt;
        rm -r /mnt/*  
        umount ${LIST_OF_EXISTING_LINUX[5]} ;
        ##Reinstalle GRUB dans la 1ere installation Linux
        mount ${LIST_OF_EXISTING_LINUX[1]} /mnt;
        sudo grub-install --root-directory=/mnt /dev/sda
        umount ${LIST_OF_EXISTING_LINUX[1]} 
      fi
    fi
  fi
fi

}
#___________________________________________________________________________________________________________________________________________________________________




##Ce n'est pas definitif, mais ca se rapproche du schema proposé sur le forum
menu_initial()
{
action=$(zenity --list --title="DESINSTALLATION D'UBUNTU" --text="Bienvenue dans le desinstallateur d'Ubuntu. Choisissez une action ci-dessous :" --column=""  "Restaurer l'amorcage original de l'ordinateur" "Désinstaller Ubuntu/Linux") || exit 100;
            
if [ "$action" = "Restaurer l'amorcage original de l'ordinateur" ]
then 
  ## RESTAURE LE PREMIER BACKUP DETECTE SUR LE DISQUE, et efface tous les backups des disques
  QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP=0
  TEMP_FILESYSTEM="linux"; TEMP_SYSTEMFOLDER="boot"
  restore63sectors $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP
  TEMP_FILESYSTEM="ntfs"; TEMP_SYSTEMFOLDER="windows"
  restore63sectors $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP
  TEMP_FILESYSTEM="fat"; TEMP_SYSTEMFOLDER="windows"
  restore63sectors $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP
  TEMP_FILESYSTEM="hfs"; TEMP_SYSTEMFOLDER="boot"
  restore63sectors $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP
  ##ON PREVIENT L'UTILISATEUR
  if [ "$QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP" = "0" ]; then
    zenity --info --text="Erreur : il n'existe pas de sauvegarde d'amorcage sur cet ordinateur." 
  else
    echo "The $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP backup(s) have been renamed into sav63sectors_old.img, so that they won't be detected during next Ubuntu installation."
    zenity --info --text="L'amorcage original de cet ordinateur a été restauré. Merci d'avoir essayé Ubuntu, et à bientot !" 
  fi      
elif [ "$action" = "Désinstaller Ubuntu/Linux" ];then
  uninstall_linux
fi
}
#___________________________________________________________________________________________________________________________________________________________________


## DEBUT DU SCRIPT

echo "Beginning of script."
menu_initial
echo "End of script."
exit 0

Dernière modification par YannUbuntu (Le 12/10/2010, à 16:56)


à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison

Hors ligne

#96 Le 12/10/2010, à 15:37

jalobservateur

Re : [Live-CD] Linux Secure Remix

cool Yann , Vraiment la classe !
Bravo!
Que c'est appréciable de voir un intérêt et de la débrouillardise ainsi!
cool


La route est longue vers la maîtrise Linux, Mais...La voie est Libre...
Notre choix 'être 'sous' Windows ou 'sur' Linux'...
http://hybryde.org

Hors ligne

#97 Le 12/10/2010, à 17:16

YannUbuntu

Re : [Live-CD] Linux Secure Remix

Merci Jalob pour tes encouragements smile 

@tous (Jalob?) : Petit test a faire SVP : Ca serait sympa si quelqu'un d'autre pouvait, dans Virtual-Box (avec un disque dur virtuel de 12Go), installer 2 Ubuntu (Ubuntu numero1, puis numero2) en dual-boot via mon script d'INSTALLATION v3, sur le disque dur virtuel de Virtual-Box, puis desinstaller Ubuntu numero2 via mon script de DESINSTALLATION v3, et verifier que GRUB est bien mis a jour : au redemarrage de VirtualBox GRUB devrait n'afficher plus que Ubuntu numero1.

@Josepe : saurais-tu comment faire avec Zenity pour creer les 2 boites de dialogue suivante :
1) Une boite toute simple, du style "Text=Ca va faire ca. Souhaitez vous continuer?  Bouton 1=OK , Bouton2 = Annuler"
2) Une boite avec choix multiple, un peu comme la liste suivante, mais avec un nombre de choix que je pourrais adapter au nombre de distros detectees :

choice=$(zenity --list --title="CONFIRMATION DE DESINSTALLATION" --text="Quelle distribution Linux souhaitez-vous desinstaller ?" --column="" "Désinstaller Ubuntu1" "Désinstaller Ubuntu2" "Désinstaller Ubuntu3" "Désinstaller Ubuntu4" "Désinstaller Ubuntu5") || exit 102;

à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison

Hors ligne

#98 Le 12/10/2010, à 18:04

Josepe36

Re : [Live-CD] Linux Secure Remix

salut yannubuntu

pour la premiere question :

zenity --question

pour la deuxieme :
il te faut integrer une boucle "for" dans ton zenity

exemple :

choice=$(zenity --list --title="CONFIRMATION DE DESINSTALLATION" --text="Quelle distribution Linux souhaitez-vous desinstaller ?" --column="" for i in list; do echo $i; done) || exit 102;


Développeur distribution Hybryde
www.hybryde.org

Hors ligne

#99 Le 12/10/2010, à 22:17

jalobservateur

Re : [Live-CD] Linux Secure Remix

:rolleyes:Salut vs smile
Yann j'aimerais beaucoup le faire, mais j'ai tellement pris de retard dans mon boulot que je dois m'y mettre presto.
J'ai 3 machines à monter en Linux dual-boot justement alors les 3 avec "Équitable'' bien-sûr.
Vraiment dommage, car j'aime bien être alpha ou beta testeur et là la cause m'intéresse au plus haut point, mais j'ai plus le choix, désolé sad


La route est longue vers la maîtrise Linux, Mais...La voie est Libre...
Notre choix 'être 'sous' Windows ou 'sur' Linux'...
http://hybryde.org

Hors ligne

#100 Le 13/10/2010, à 02:56

YannUbuntu

Re : [Live-CD] Linux Secure Remix

@jalob: pas de soucis

@tous : quelqu'un peut-il faire le test svp ?

@Josepe : merci, ca me permettra de faire des menus plus propres smile


à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison

Hors ligne

Haut de page ↑