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.

#101 Le 13/10/2010, à 05:35

bishop

Re : [Live-CD] Linux Secure Remix

Bonjour à tous !
[abonnement] roll


La plus grande surprise que puisse faire un con c'est de faire une pause.

Hors ligne

#102 Le 13/10/2010, à 06:07

jalobservateur

Re : [Live-CD] Linux Secure Remix

big_smile Bienvenu à toi ^^


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

#103 Le 13/10/2010, à 10:01

YannUbuntu

Re : [Live-CD] Linux Secure Remix

Version4 des scripts :

Améliorations par rapport a la v3 :
- place les backups dans /boot (pour Linux et MacOS), et /Boot (pour Windows)
- support d'un nombre illimité de distributions en multi-boot
- amélioration des boites de dialogue
- optimisations afin d'accélérer le script
- barre de progression lors de la détection des backups (script de désinstallation uniquement)

Script d'installation v4

#! /bin/bash

## YannUbuntu le 13/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/$TEMP_SYSTEMFOLDER | 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/$TEMP_SYSTEMFOLDER/save-63-sectors.img bs=512 count=63 ;
             echo "***The 63 sectors have been duplicated into folder $TEMP_SYSTEMFOLDER of 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/$TEMP_SYSTEMFOLDER/save-63-sectors.img bs=512 count=63 ;
           echo "***The 63 sectors have been saved into folder $TEMP_SYSTEMFOLDER of 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/$TEMP_SYSTEMFOLDER/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/$TEMP_SYSTEMFOLDER | 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/$TEMP_SYSTEMFOLDER/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
LINUX_SYSTEM_FOLDER="boot"
MACOS_SYSTEM_FOLDER="boot"
WINDOWS_SYSTEM_FOLDER="Boot"

TEMP_FILESYSTEM="linux"; TEMP_SYSTEMFOLDER="$LINUX_SYSTEM_FOLDER"  #Guess the backup on Linux partition has better reliability (not affected by virus)
detect_backup $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP $LIST_OF_PARTITIONS_WITHOUT_BACKUP
TEMP_FILESYSTEM="hfs"; TEMP_SYSTEMFOLDER="$MACOS_SYSTEM_FOLDER"
detect_backup $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP $LIST_OF_PARTITIONS_WITHOUT_BACKUP
TEMP_FILESYSTEM="ntfs"; TEMP_SYSTEMFOLDER="$WINDOWS_SYSTEM_FOLDER"
detect_backup $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP $LIST_OF_PARTITIONS_WITHOUT_BACKUP
TEMP_FILESYSTEM="fat"; TEMP_SYSTEMFOLDER="$WINDOWS_SYSTEM_FOLDER"
detect_backup $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP $LIST_OF_PARTITIONS_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_SYSTEM_FOLDER"
   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_SYSTEM_FOLDER"
   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="$MACOS_SYSTEM_FOLDER"
   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="$LINUX_SYSTEM_FOLDER"
   save63sectors $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP
fi


##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_SYSTEM_FOLDER"
   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_SYSTEM_FOLDER"
     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="$MACOS_SYSTEM_FOLDER"
       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="$LINUX_SYSTEM_FOLDER"
         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 y a $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP systèmes d'exploitation avec 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="$LINUX_SYSTEM_FOLDER"
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 13/10/2010, à 16:19)


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

Hors ligne

#104 Le 13/10/2010, à 10:32

YannUbuntu

Re : [Live-CD] Linux Secure Remix

Script de désinstallation v4 :

#! /bin/bash

## YannUbuntu le 13/10/2010

## DESINSTALLATION D'UBUNTU
## pour les tests, il suffit de mettre ce script dans le menu Systeme->Administration par exemple.
## A ameliorer : afficher le nom des distros Linux dans le menu, restauration sur disque autre que sda...

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/$TEMP_SYSTEMFOLDER | 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)) ; 
                LIST_OF_PARTITIONS_WITH_BACKUP[$QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP]=$i
                LIST_OF_FOLDERS_WITH_BACKUP[$QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP]=$TEMP_SYSTEMFOLDER
                if [ "$QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP" = "1" ]; then dd if=/mnt/$TEMP_SYSTEMFOLDER/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
         ##Creates a tab with partitions containing an installation of Windows
         if [ "$TEMP_FILESYSTEM" = "ntfs" ] || [ "$TEMP_FILESYSTEM" = "fat" ]; then
           QUANTITY_OF_DETECTED_WINDOWS=$(($QUANTITY_OF_DETECTED_WINDOWS+1))
         fi
         ##Creates a tab with partitions containing an installation of MacOS
         if [ "$TEMP_FILESYSTEM" = "hfs" ] ; then
           QUANTITY_OF_DETECTED_MACOS=$(($QUANTITY_OF_DETECTED_MACOS+1))
         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). Compte aussi le nombre d'OS de chaque type.
QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP=0
QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP=0
QUANTITY_OF_DETECTED_LINUX=0
QUANTITY_OF_DETECTED_WINDOWS=0
QUANTITY_OF_DETECTED_MACOS=0
LINUX_SYSTEM_FOLDER="boot"
MACOS_SYSTEM_FOLDER="boot"
WINDOWS_SYSTEM_FOLDER="Boot"

echo "10"
TEMP_FILESYSTEM="linux"; TEMP_SYSTEMFOLDER="$LINUX_SYSTEM_FOLDER"  #Guess the backup on Linux partition has better reliability (not affected by virus)
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 $LIST_OF_PARTITIONS_WITH_BACKUP $LIST_OF_FOLDERS_WITH_BACKUP

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

##SI AU MOINS UN LINUX A ETE DETECTE
else
  echo "30"
  TEMP_FILESYSTEM="hfs"; TEMP_SYSTEMFOLDER="$MACOS_SYSTEM_FOLDER"
  detect_backup $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP $QUANTITY_OF_DETECTED_MACOS $LIST_OF_PARTITIONS_WITH_BACKUP $LIST_OF_FOLDERS_WITH_BACKUP
  echo "60"
  TEMP_FILESYSTEM="ntfs"; TEMP_SYSTEMFOLDER="$WINDOWS_SYSTEM_FOLDER"
  detect_backup $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP $QUANTITY_OF_DETECTED_WINDOWS $LIST_OF_PARTITIONS_WITH_BACKUP $LIST_OF_FOLDERS_WITH_BACKUP
  echo "80"
  TEMP_FILESYSTEM="fat"; TEMP_SYSTEMFOLDER="$WINDOWS_SYSTEM_FOLDER"
  detect_backup $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP $QUANTITY_OF_DETECTED_WINDOWS $LIST_OF_PARTITIONS_WITH_BACKUP $LIST_OF_FOLDERS_WITH_BACKUP

  echo "100" #Closes the progress indication dialog
  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, $QUANTITY_OF_DETECTED_MACOS installations MacOS, et $QUANTITY_OF_DETECTED_WINDOWS installations Windows."

  ##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
      ##Cas du dual-boot Linux-Windows
      if [ "$QUANTITY_OF_DETECTED_WINDOWS" != "0" ]; then
        zenity --info --text="Il n'existe pas de sauvegarde d'amorcage sur cet ordinateur. Pour désinstaller Ubuntu, il est recommandé d'effacer la partition Ubuntu puis réinstaller un amorceur Windows (avec un CD de réparation Windows par exemple). Il s'agit d'une manipulation non-triviale et risquée, donc pensez à sauver vos données auparavant."
      ##Cas du dual-boot Linux-MacOS
      elif [ "$QUANTITY_OF_DETECTED_MACOS" != "0" ]; then
        zenity --info --text="Il n'existe pas de sauvegarde d'amorcage sur cet ordinateur. Pour désinstaller Ubuntu, il est recommandé d'effacer la partition Ubuntu puis réinstaller un amorceur MacOS (avec un CD de réparation MacOS par exemple). Il s'agit d'une manipulation non-triviale et risquée, donc pensez à sauver vos données auparavant."
      else
      ##Cas où le disque ne contient qu'un seul OS (Linux)
        zenity --info --text="Il n'existe pas d'autre système d'exploitation, ni de sauvegarde d'amorcage sur cet ordinateur. Vous pouvez désinstaller Ubuntu en effacant sa partition, mais votre ordinateur n'aura alors plus de système d'exploitation pour le faire fonctionner."
      fi
 
      ##SI AU MOINS UN BACKUP A ETE DETECTE
    else
      ##Cas du dual-boot Linux-Windows
      if [ "$QUANTITY_OF_DETECTED_WINDOWS" != "0" ]; then
        zenity --question --text="Ceci effacera Ubuntu et restaurera l'amorcage initial de votre ordinateur, vous redonnant accès à Windows uniquement. Attention, toutes vos données contenues dans Ubuntu seront effacées. Souhaitez-vous continuer ?" || exit 101;
      ##Cas du dual-boot Linux-MacOS
      elif [ "$QUANTITY_OF_DETECTED_MACOS" != "0" ]; then
        zenity --question --text="Ceci effacera Ubuntu et restaurera l'amorcage initial de votre ordinateur, vous redonnant accès à MacOS uniquement. Attention, toutes vos données contenues dans Ubuntu seront effacées. Souhaitez-vous continuer ?" || exit 101;
      else
      ##Cas où le disque ne contient qu'un seul OS (Linux)
        zenity --question --text="Il n'existe pas d'autre système d'exploitation sur cet ordinateur. Si vous continuez, Ubuntu sera effacé et l'amorcage initial de votre ordinateur sera restauré. Ceci peut parfois faciliter la réinstallation de l'OS original. Attention, toutes vos données contenues dans Ubuntu seront effacées et votre ordinateur n'aura alors plus de système d'exploitation pour le faire fonctionner. Souhaitez-vous continuer ?" || exit 101;
      fi

      ## RESTAURE LE PREMIER BACKUP DETECTE SUR LE DISQUE
      ### 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=/tmp/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 tous les backups des disques (afin de ne pas interferer avec le backup de la prochaine installation, tout en les gardant en cas de pépin)
      i=1; while [ "$i" != "$(($QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP+1))" ]; do 
        umount ${LIST_OF_PARTITIONS_WITH_BACKUP[$i]} ;
        mount ${LIST_OF_PARTITIONS_WITH_BACKUP[$i]} /mnt;
        mv /mnt/${LIST_OF_FOLDERS_WITH_BACKUP[$i]}/save-63-sectors.img /mnt/${LIST_OF_FOLDERS_WITH_BACKUP[$i]}/sav63sectors_old.img
        umount ${LIST_OF_PARTITIONS_WITH_BACKUP[$i]} ;
        i=$(($i+1)); 
      done;
      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

  ##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)
  else
    echo "We display the list of all partitions containing Linux installations";  
    i=1; while [ "$i" != "$(($QUANTITY_OF_DETECTED_LINUX+1))" ]; do TAB="$TAB ${LIST_OF_EXISTING_LINUX[$i]}";i=$(($i+1)); done;
    echo "$TAB"  #Check of the list to be displayed
    choice=$(zenity --list --title="Désinstallation d'Ubuntu" --text="Quelle distribution Linux souhaitez-vous desinstaller ?" --column="" $TAB) || exit 102;

    ## Si on desinstalle la 1ere distro, on reinstalle GRUB dans la 2eme
    if [ "$choice" = "${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]} 
      zenity --info --text="Ubuntu a été correctement desinstallé, et Grub a été réinstallé dans ${LIST_OF_EXISTING_LINUX[2]}. Merci d'avoir essayé Ubuntu, et à bientot !" 
    else
      ##Si on desinstalle la 2eme distro ou suivante, on reinstalle GRUB dans la 1ere distro
      ##Efface le contenu de la partition choisie par l'utilisateur
      umount $choice ;
      mount $choice /mnt;
      rm -r /mnt/*   
      umount $choice ;
      ##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]} 
      zenity --info --text="Ubuntu a été correctement desinstallé, et Grub a été réinstallé dans ${LIST_OF_EXISTING_LINUX[1]}. Merci d'avoir essayé Ubuntu, et à bientot !" 
    fi
  fi
fi

}
#___________________________________________________________________________________________________________________________________________________________________



## DEBUT DU SCRIPT
(
uninstall_linux
) | zenity --progress --auto-close --title="Désinstallation d'Ubuntu" --text="Détection des systèmes d'exploitation" --percentage=0
echo "End of script."
exit 0

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


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

Hors ligne

#105 Le 13/10/2010, à 16:20

YannUbuntu

Re : [Live-CD] Linux Secure Remix

@tous :
- si vous avez Windows, pouvez-vous svp vérifier qu'il y a bien un dossier "Boot" (avec la majuscule) dans Windows XP et Seven ?
- si vous avez Mac, pouvez-vous svp vérifier qu'il y a bien un dossier "boot" (sans la majuscule) a la racine de la partition ? et vérifier aussi quel est le type de partition ?

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


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

Hors ligne

#106 Le 14/10/2010, à 03:29

YannUbuntu

Re : [Live-CD] Linux Secure Remix

(pour info le bug "grub fails after running Windows" est intéressant: on y apprend que certains logiciels non-libres modifient le secteur de boot entre le MBR et la 1e partition)


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

Hors ligne

#107 Le 14/10/2010, à 04:55

jalobservateur

Re : [Live-CD] Linux Secure Remix

yikes Salut Yann^^
Et là on apprends rien sachant que les logiciels proprios c'est de la M?&((?.
Combien de démarrage Linux plantés avec ces conneries ?
Et nous on cherche ailleurs...
Merci, très instructif roll


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

#108 Le 14/10/2010, à 07:54

YannUbuntu

Re : [Live-CD] Linux Secure Remix

Contre ce problème, on ne peut pas faire grand-chose (vu que ca empêche GRUB de démarrer), à part :
- essayer de ne pas installer GRUB là où écrivent ces #^$tin de logiciels, en tout cas pour les plus connus (Adobe etc..), les devs de GRUB s'en occupent.
- proposer à l'utilisateur un moyen simple via le live-CD de restaurer le boot sector (les 63 secteurs) initial, afin d'au moins récupérer l'accès à Windows : c'est ce que fait le script de cette discussion.


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

Hors ligne

#109 Le 14/10/2010, à 08:04

angelus1

Re : [Live-CD] Linux Secure Remix

salut yann,
je sais pas si tu veux çà mais c'est tout ce que j'ai trouvé dans seven

Boot
dossiers de fichier
C\windows
27,8 Mo (29 179 904 octets)
88 Fichiers, 54 Dossiers

Hors ligne

#110 Le 14/10/2010, à 10:17

YannUbuntu

Re : [Live-CD] Linux Secure Remix

@angelus1 : ca veut dire que tu as bien un dossier c:/Boot ? (avec une majuscule a "Boot"?)
Par exemple dans Vista, il y a :
/Boot
/Windows
/Program Files
etc...

@tous: Ceux qui ont XP , Windows 98 , etc svp pouvez-vous vérifier que vous avez bien les mêmes dossiers dans c:/ , et avec des majuscules ou pas ?


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

Hors ligne

#111 Le 14/10/2010, à 12:54

angelus1

Re : [Live-CD] Linux Secure Remix

désolé pour le temps mais  y des choses a faire
oui
tel que c'est marqué dans le grand dossier C .... Windows......Boot   ('entre assembly et branding)

Hors ligne

#112 Le 14/10/2010, à 13:00

angelus1

Re : [Live-CD] Linux Secure Remix

PS j'aurai peur être aussi du dire que j'ai un ACER X3810   1T de disque dur et 8 g de ram

Hors ligne

#113 Le 14/10/2010, à 15:00

YannUbuntu

Re : [Live-CD] Linux Secure Remix

ok merci


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

Hors ligne

#114 Le 16/10/2010, à 23:17

YannUbuntu

Re : [Live-CD] Linux Secure Remix

Bonjour

Version 5 des scripts.

Nouveautés :
- choix menus anglais ou français
- commentaires du script en anglais
- licence
- ajout d'un 3e script, qui permet de "Réparer l'amorcage" : au choix de l'utilisateur, soit de restaurer l'amorcage tel qu'il était avant installation d'Ubuntu (solution pour contrer le tatouage), soit de restaurer l'amorcage puis reinstaller GRUB (solution pour contrer les programmes non-libres qui écrivent par-dessus GRUB). On aurait donc 2 entrees dans le menu Systeme->Administration du live-CD : "Désinstaller Ubuntu" et "Réparer l'amorcage".

clean_ubuntu_installer (v5):

#! /bin/bash

## YannUbuntu 14/10/2010 - https://launchpad.net/~yannubuntu - licensed under GNU-GPL v3 (http://www.gnu.org/licenses/gpl.html)
## Special thanks to Josepe36 and all contributors of this thread : http://forum.ubuntu-fr.org/viewtopic.php?pid=3786646

## IMPROVED UBUNTU INSTALLER
## AUTOMATICALLY SAVES THE 63 ORIGINAL SECTORS OF THE sda DISK, DUPLICATES THE BACKUP INTO SYSTEM PARTITIONS (Windows, Mac & Linux), THEN LAUNCHES UBIQUITY, THEN DUPLICATES THE BACKUP ON THE NEW UBUNTU PARTITION.
## To test this script, you need to execute it (sudo ./clean_ubuntu_installer) from a live-session .
## For a better integration, you can replace the "Install Ubuntu" launcher on the Desktop of the live-CD by this script.
## To be improved : multi-disk support (sdb, sdc..).
## After installation, you can test the "clean_ubuntu_uninstaller" script that allows to perform clean uninstall of any Linux distribution installed via this "clean_ubuntu_installer" script.

## INSTALLATEUR UBUNTU AMELIORÉ
## SAUVE AUTOMATIQUEMENT LES 63 SECTEURS D'ORIGINE DE sda, LE DUPLIQUE DANS LES PARTITIONS contenant un OS (Windows, Mac et Linux), puis lance Ubiquity, puis duplique le backup sur la partition de l'Uubuntu nouvellement installée.
## Pour tester ce script, il suffit de l'exécuter (sudo ./clean_ubuntu_installer) à partir d'une session-live .
## Pour une meilleure intégration, il suffit de remplacer le lanceur "Installation Ubuntu" qui se trouve sur le bureau du live-CD par ce script. 
## Améliorations possibles : support du multi-disques (sdb, sdc..).
## Après installation, vous pouvez tester le script "clean_ubuntu_uninstaller" qui permet de désinstaller proprement n'importe-quelle distribution Linux ayant été installée via ce script "clean_ubuntu_installer".

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
    sudo umount $i ;
    sudo mount $i /mnt;
    folder=$(sudo ls /mnt |grep -i "$TEMP_SYSTEMFOLDER");
    if [ "$folder" ]
      then control=$(sudo ls /mnt/boot | grep "save-63-sectors.img") ;
           if [ "$control" ] 
             then echo "la partition $i est une partion $TEMP_FILESYSTEM systeme contenant déjà un backup";
           else
             if [ "$TEMP_SYSTEMFOLDER" != "boot" ];then sudo mkdir /mnt/boot ; fi
             sudo dd if=/tmp/save-63-sectors.img of=/mnt/boot/save-63-sectors.img bs=512 count=63 ;
             echo "***The 63 sectors have been duplicated into folder /boot of 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
    sudo 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
    sudo umount $i ;
    sudo mount $i /mnt;
    folder=$(sudo ls /mnt |grep -i "$TEMP_SYSTEMFOLDER");
    if [ "$folder" ]; then 
      if [ "$TEMP_SYSTEMFOLDER" != "boot" ];then sudo mkdir /mnt/boot ; fi
      sudo dd if=/dev/sda of=/mnt/boot/save-63-sectors.img bs=512 count=63 ;
      echo "***The 63 sectors have been saved into folder /boot of 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 
        sudo dd if=/mnt/boot/save-63-sectors.img of=/tmp/save-63-sectors.img bs=512 count=63
      fi 
    fi
    sudo 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
       sudo umount $i ;
       sudo mount $i /mnt;
       folder=$(sudo ls /mnt |grep -i "$TEMP_SYSTEMFOLDER");
       if [ "$folder" ]; then
         control=$(sudo ls /mnt/boot | 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 
                  sudo dd if=/mnt/boot/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
       sudo umount $i ;
   done
else echo "There is no $TEMP_FILESYSTEM partition." ;
fi
}
#__________________________________________________________________________________________________________________________________________________________________


## BEGINNING OF SCRIPT


## CONTROLS IF A BACKUP OF THE 63 FIRST SECTORS ALREADY EXISTS ON THE DISK, IF YES IT IS MEMORIZED IN /tmp.
QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP=0
QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP=0
LINUX_SYSTEM_FOLDER="boot"
HFS_SYSTEM_FOLDER="boot"
NTFS_SYSTEM_FOLDER="Windows"
FAT_SYSTEM_FOLDER="WINDOWS" 

TEMP_FILESYSTEM="linux"; TEMP_SYSTEMFOLDER="$LINUX_SYSTEM_FOLDER"  #Guess the backup on Linux partition has better reliability (not affected by virus)
detect_backup $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP $LIST_OF_PARTITIONS_WITHOUT_BACKUP
TEMP_FILESYSTEM="hfs"; TEMP_SYSTEMFOLDER="$HFS_SYSTEM_FOLDER"
detect_backup $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP $LIST_OF_PARTITIONS_WITHOUT_BACKUP
TEMP_FILESYSTEM="ntfs"; TEMP_SYSTEMFOLDER="$NTFS_SYSTEM_FOLDER"
detect_backup $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP $LIST_OF_PARTITIONS_WITHOUT_BACKUP
TEMP_FILESYSTEM="fat"; TEMP_SYSTEMFOLDER="$FAT_SYSTEM_FOLDER"
detect_backup $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP $LIST_OF_PARTITIONS_WITHOUT_BACKUP


echo "We detected $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP backup(s), et $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP OS without backup."



##IF NO BACKUP HAVE BEEN DETECTED, WE CREATE ONE INTO ALL OS, AND WE ALSO MEMORIZE IT IN /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="$NTFS_SYSTEM_FOLDER"
   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="$FAT_SYSTEM_FOLDER"
   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="$HFS_SYSTEM_FOLDER"
   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="$LINUX_SYSTEM_FOLDER"
   save63sectors $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP
fi


##IF SOME OS WITHOUT BACKUP REMAIN, WE DUPLICATE THE BACKUP INTO THEM (INCREASES SAFETY)
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="$NTFS_SYSTEM_FOLDER"
   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="$FAT_SYSTEM_FOLDER"
     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="$HFS_SYSTEM_FOLDER"
       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="$LINUX_SYSTEM_FOLDER"
         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 y a $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP systèmes d'exploitation avec backup."

##LAUNCH UBIQUITY (same command as the original launcher on the desktop of the 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."

##WE DUPLICATE THE BACKUP INTO THE NEW UBUNTU/LINUX PARTITIONS. (e.g. in case the Windows partition is erased by mistake)
echo "We will duplicate the backup in the new existing Ubuntu/Linux"
TEMP_FILESYSTEM="linux";   TEMP_SYSTEMFOLDER="$LINUX_SYSTEM_FOLDER"
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

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

Hors ligne

#115 Le 17/10/2010, à 00:01

YannUbuntu

Re : [Live-CD] Linux Secure Remix

clean_ubuntu_uninstaller (v5)

#! /bin/bash

## YannUbuntu 17/10/2010 - https://launchpad.net/~yannubuntu - licensed under GNU-GPL v3 (http://www.gnu.org/licenses/gpl.html)
## Special thanks to Josepe36 and all contributors of this thread : http://forum.ubuntu-fr.org/viewtopic.php?pid=3786646

## CLEAN REMOVAL OF UBUNTU
## Allows to perform clean uninstall of any Linux distribution previously installed via the "improved_ubuntu_installer" script.
## To test this script, you need to execute it (sudo ./clean_ubuntu_uninstaller) from a live-session 
## For better integration, a launcher can be created e.g. in System->Administration (http://pix.toile-libre.org/?img=1287036329.png), and a "Uninstall Ubuntu" button can also be added to the live-CD welcome screen (http://pix.toile-libre.org/?img=1287036852.png).
## To be improved : display the name/versions of the Linux distros in the menu (http://pix.toile-libre.org/?img=1287037811.png), take into account disks other than sda...

## DESINSTALLATION D'UBUNTU
## Permet de désinstaller proprement n'importe-quelle distribution Linux ayant été installée via le script "improved_ubuntu_installer".
## Pour tester ce script, il suffit de l'exécuter (sudo ./clean_ubuntu_uninstaller) à partir d'une session-live 
## Pour une meilleure intégration, un lanceur peut etre créé par ex. dans le menu Systeme->Administration (http://pix.toile-libre.org/?img=1286518777.png), on peut aussi ajouter un bouton "Désinstaller Ubuntu" sur l'écran d'accueil du live-CD (http://pix.toile-libre.org/?img=1286348674.png).
## A améliorer : afficher le nom des distros Linux dans le menu (http://pix.toile-libre.org/?img=1286347844.png), restauration sur disque autre que sda...



detect_backup(){
tab=$(sudo fdisk -l|grep -i "$TEMP_FILESYSTEM"|cut -c1-10) ;
if [ "$tab" ]; then
   echo "The existing $TEMP_FILESYSTEM partitions are : $tab" ;
   ##MOUNTS THE $TEMP_FILESYSTEM PARTITIONS, DETECTS WHICH CONTAIN AN OS, AND WHICH CONTAIN A 63 SECTORS BACKUP
   for i in $tab
     do
       sudo umount $i ;
       sudo mount $i /mnt;
       folder=$(sudo ls /mnt |grep -i "$TEMP_SYSTEMFOLDER");
       if [ "$folder" ]; then
         control=$(sudo ls /mnt/$TEMP_SYSTEMFOLDER | grep "save-63-sectors.img") ;
         if [ "$control" ] 
           then echo "$i is a $TEMP_FILESYSTEM partition containing a backup"; 
                QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP=$(($QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP+1)) ; 
                LIST_OF_PARTITIONS_WITH_BACKUP[$QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP]=$i
                LIST_OF_FOLDERS_WITH_BACKUP[$QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP]=$TEMP_SYSTEMFOLDER
                if [ "$QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP" = "1" ]; then sudo dd if=/mnt/$TEMP_SYSTEMFOLDER/save-63-sectors.img of=/tmp/save-63-sectors.img bs=512 count=63
                fi
           else echo "$i is a $TEMP_FILESYSTEM partition without 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
         ##Creates a tab with partitions containing an installation of Windows
         if [ "$TEMP_FILESYSTEM" = "ntfs" ] || [ "$TEMP_FILESYSTEM" = "fat" ]; then
           QUANTITY_OF_DETECTED_WINDOWS=$(($QUANTITY_OF_DETECTED_WINDOWS+1))
         fi
         ##Creates a tab with partitions containing an installation of MacOS
         if [ "$TEMP_FILESYSTEM" = "hfs" ] ; then
           QUANTITY_OF_DETECTED_MACOS=$(($QUANTITY_OF_DETECTED_MACOS+1))
         fi
       fi
       sudo umount $i ;
   done
else echo "There is no $TEMP_FILESYSTEM partition" ;
fi
}
#__________________________________________________________________________________________________________________________________________________________________





### MAIN MENU
uninstall_linux()
{

## CONTROLS IF A BACKUP OF THE 63 FIRST SECTORS ALREADY EXISTS ON THE DISK, IF YES IT IS MEMORIZED IN /tmp. ALSO COUNTS THE QUANTITY OF OS.
QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP=0
QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP=0
QUANTITY_OF_DETECTED_LINUX=0
QUANTITY_OF_DETECTED_WINDOWS=0
QUANTITY_OF_DETECTED_MACOS=0
LINUX_SYSTEM_FOLDER="boot"
HFS_SYSTEM_FOLDER="boot"
NTFS_SYSTEM_FOLDER="Windows"
FAT_SYSTEM_FOLDER="WINDOWS" 

echo "10"
TEMP_FILESYSTEM="linux"; TEMP_SYSTEMFOLDER="$LINUX_SYSTEM_FOLDER"  #I put Linux first because I guess the backups on Linux partitions have better reliability (not affected by virus)
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 $LIST_OF_PARTITIONS_WITH_BACKUP $LIST_OF_FOLDERS_WITH_BACKUP

##IF NO LINUX HAVE BEEN DETECTED
if [ "$QUANTITY_OF_DETECTED_LINUX" = "0" ]; then
  echo "100"
  if [ "$language" = "English" ]; then
    zenity --error --text="No Linux installation has been found on this computer." 
  else
    zenity --error --text="Aucune installation Linux n'a été détectée sur cet ordinateur." 
  fi

##IF MINIMUM ONE LINUX HAS BEEN DETECTED
else
  echo "30"
  TEMP_FILESYSTEM="hfs"; TEMP_SYSTEMFOLDER="$HFS_SYSTEM_FOLDER"
  detect_backup $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP $QUANTITY_OF_DETECTED_MACOS $LIST_OF_PARTITIONS_WITH_BACKUP $LIST_OF_FOLDERS_WITH_BACKUP
  echo "60"
  TEMP_FILESYSTEM="ntfs"; TEMP_SYSTEMFOLDER="$NTFS_SYSTEM_FOLDER"
  detect_backup $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP $QUANTITY_OF_DETECTED_WINDOWS $LIST_OF_PARTITIONS_WITH_BACKUP $LIST_OF_FOLDERS_WITH_BACKUP
  echo "80"
  TEMP_FILESYSTEM="fat"; TEMP_SYSTEMFOLDER="$FAT_SYSTEM_FOLDER"
  detect_backup $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP $QUANTITY_OF_DETECTED_WINDOWS $LIST_OF_PARTITIONS_WITH_BACKUP $LIST_OF_FOLDERS_WITH_BACKUP

  echo "100" #Closes the progress indication dialog  (for safety purpose we need to prevent the user from cancelling in the middle of removal operations)
  echo "We detected $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP backup(s), et $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP OS without backup."
  echo "We detected $QUANTITY_OF_DETECTED_LINUX Linux distribution(s), $QUANTITY_OF_DETECTED_MACOS MacOS, and $QUANTITY_OF_DETECTED_WINDOWS Windows."

  ##IF ONLY ONE LINUX HAS BEEN DETECTED, THEN WE RESTORE THE 63 ORIGINAL SECTORS
  if [ "$QUANTITY_OF_DETECTED_LINUX" = "1" ]
  then 
    ##IF NO BACKUP HAVE BEEN DETECTED
    if [ "$QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP" = "0" ]; then
      ##Dual-boot Linux-Windows
      if [ "$QUANTITY_OF_DETECTED_WINDOWS" != "0" ]; then
        if [ "$language" = "English" ]; then
          zenity --info --title="Automatic removal is impossible" --text="There is no boot backup on this computer. To uninstall Ubuntu, it is recommended to delete the Ubuntu partition then reinstall a Windows bootloader (with a Windows repair CD for example). It is a non-trivial and risky manipulation, so please backup your data before doing it."
        else
          zenity --info --title="Impossible de désinstaller automatiquement" --text="Il n'existe pas de sauvegarde d'amorcage sur cet ordinateur. Pour désinstaller Ubuntu, il est recommandé d'effacer la partition Ubuntu puis réinstaller un amorceur Windows (avec un CD de réparation Windows par exemple). Il s'agit d'une manipulation non-triviale et risquée, donc pensez à sauver vos données auparavant."
        fi
      ##Dual-boot Linux-MacOS
      elif [ "$QUANTITY_OF_DETECTED_MACOS" != "0" ]; then
        if [ "$language" = "English" ]; then
          zenity --info --title="Automatic removal is impossible" --text="There is no boot backup on this computer. To uninstall Ubuntu, it is recommended to delete the Ubuntu partition then reinstall a MacOS bootloader (with a MacOS repair CD for example). It is a non-trivial and risky manipulation, so please backup your data before doing it."
        else
          zenity --info --title="Impossible de désinstaller automatiquement" --text="Il n'existe pas de sauvegarde d'amorcage sur cet ordinateur. Pour désinstaller Ubuntu, il est recommandé d'effacer la partition Ubuntu puis réinstaller un amorceur MacOS (avec un CD de réparation MacOS par exemple). Il s'agit d'une manipulation non-triviale et risquée, donc pensez à sauver vos données auparavant."
        fi
      else
      ##The disk contains only one OS (Linux)
        if [ "$language" = "English" ]; then
          zenity --info --title="Automatic removal is impossible" --text="There is no other operating system nor boot backup on this computer. You can uninstall Ubuntu by deleting its partition, but then your computer won't have any operating system any more."
        else
          zenity --info --title="Impossible de désinstaller automatiquement" --text="Il n'existe pas d'autre système d'exploitation, ni de sauvegarde d'amorcage sur cet ordinateur. Vous pouvez désinstaller Ubuntu en effacant sa partition, mais votre ordinateur n'aura alors plus de système d'exploitation pour le faire fonctionner."
        fi
      fi
 
      ##IF MINIMUM ONE BACKUP HAS BEEN DETECTED
    else
      ##Dual-boot Linux-Windows
      if [ "$QUANTITY_OF_DETECTED_WINDOWS" != "0" ]; then
        if [ "$language" = "English" ]; then
          zenity --question --title="Are you sure you want to uninstall Ubuntu ?" --text="This will delete Ubuntu and restore the initial boot sector of your computer, thus giving back access to Windows only. All your data in Ubuntu will be lost. Do you want to continue ?" || exit 101;
        else
          zenity --question --title="Etes-vous sûr de vouloir désinstaller Ubuntu ?" --text="Ceci effacera Ubuntu et restaurera l'amorcage initial de votre ordinateur, vous redonnant accès à Windows uniquement. Attention, toutes vos données contenues dans Ubuntu seront effacées. Souhaitez-vous continuer ?" || exit 101;
        fi
      ##Dual-boot Linux-MacOS
      elif [ "$QUANTITY_OF_DETECTED_MACOS" != "0" ]; then
        if [ "$language" = "English" ]; then
          zenity --question --title="Are you sure you want to uninstall Ubuntu ?" --text="This will delete Ubuntu and restore the initial boot sector of your computer, thus giving back access to MacOS only. All your data in Ubuntu will be lost. Do you want to continue ?" || exit 101;
        else
          zenity --question --title="Etes-vous sûr de vouloir désinstaller Ubuntu ?" --text="Ceci effacera Ubuntu et restaurera l'amorcage initial de votre ordinateur, vous redonnant accès à MacOS uniquement. Attention, toutes vos données contenues dans Ubuntu seront effacées. Souhaitez-vous continuer ?" || exit 101;
        fi
      else
      ##The disk contains only one OS (Linux)
        if [ "$language" = "English" ]; then
          zenity --question --title="Are you sure you want to uninstall Ubuntu ?" --text="There is no other operating system on this computer. If you continue, Ubuntu will be deleted and the initial boot sector will be restored. This can sometimes be usefull to facilitate the reinstallation of the original operating system. All your data in Ubuntu will be lost, and your computer won't have any operating system any more. Do you want to continue ?" || exit 101;
        else
          zenity --question --title="Etes-vous sûr de vouloir désinstaller Ubuntu ?" --text="Il n'existe pas d'autre système d'exploitation sur cet ordinateur. Si vous continuez, Ubuntu sera effacé et l'amorcage initial de votre ordinateur sera restauré. Ceci peut parfois faciliter la réinstallation de l'OS original. Attention, toutes vos données contenues dans Ubuntu seront effacées et votre ordinateur n'aura alors plus de système d'exploitation pour le faire fonctionner. Souhaitez-vous continuer ?" || exit 101;
        fi
      fi

      ## RESTORES THE FIRST BACKUP DETECTED ON THE DISK
      ### saves temporarily the current first sector (in order to restore the current partition table just after)
      sudo dd if=/dev/sda of=/tmp/backup_of_current_first_sector.img bs=512 count=1 ;
      ### restores the boot backup in the 63 first sectors
      sudo dd if=/tmp/save-63-sectors.img of=/dev/sda bs=512 count=63 ;
      ### restores the current partition table
      sudo dd if=/tmp/backup_of_current_first_sector.img of=/dev/sda bs=1 skip=446 count=64

      ## Renames all the backups (in order to avoid interferences with next Ubuntu installation, while keeping it in case of trouble or for test purpose)
      i=1; while [ "$i" != "$(($QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP+1))" ]; do 
        sudo umount ${LIST_OF_PARTITIONS_WITH_BACKUP[$i]} ;
        sudo mount ${LIST_OF_PARTITIONS_WITH_BACKUP[$i]} /mnt;
        sudo mv /mnt/${LIST_OF_FOLDERS_WITH_BACKUP[$i]}/save-63-sectors.img /mnt/${LIST_OF_FOLDERS_WITH_BACKUP[$i]}/sav63sectors_old.img
        sudo umount ${LIST_OF_PARTITIONS_WITH_BACKUP[$i]} ;
        i=$(($i+1)); 
      done;

      ##Erases the partition chosen by the user
      sudo umount ${LIST_OF_EXISTING_LINUX[1]} ;
      sudo mount ${LIST_OF_EXISTING_LINUX[1]} /mnt;
      sudo rm -r /mnt/*  
      sudo umount ${LIST_OF_EXISTING_LINUX[1]} ;
      if [ "$language" = "English" ]; then
        zenity --info --title="Ubuntu has been successfully uninstalled" --text="Thank you for trying Ubuntu, see you soon !" 
      else
        zenity --info --title="Ubuntu a été correctement desinstallé" --text="Merci d'avoir essayé Ubuntu, et à bientôt !" 
      fi
    fi

  ##IF SEVERAL LINUX HAVE BEEN DETECTED, THEN WE ASK THE USER TO CHOSE ONE, WE DELETE IT AND WE REINSTALL GRUB ON ANOTHER REMAINING DISTRIBUTION
  else
    i=1; while [ "$i" != "$(($QUANTITY_OF_DETECTED_LINUX+1))" ]; do TAB="$TAB ${LIST_OF_EXISTING_LINUX[$i]}";i=$(($i+1)); done;
    if [ "$language" = "English" ]; then
      choice=$(zenity --list --title="Removal of Ubuntu" --text="Which Linux distribution do you want to uninstall ?" --column="" $TAB) || exit 102;
    else
      choice=$(zenity --list --title="Désinstallation d'Ubuntu" --text="Quelle distribution Linux souhaitez-vous desinstaller ?" --column="" $TAB) || exit 102;
    fi

    ## If we uninstall the first distribution of the list, we reinstall GRUB into the 2nd one
    if [ "$choice" = "${LIST_OF_EXISTING_LINUX[1]}" ];then
      ##Erases the partition chosen by the user
      sudo umount ${LIST_OF_EXISTING_LINUX[1]} ;
      sudo mount ${LIST_OF_EXISTING_LINUX[1]} /mnt;
      sudo rm -r /mnt/*  
      sudo umount ${LIST_OF_EXISTING_LINUX[1]} ;
      ##Reinstalls GRUB into the 2nd Linux partition
      sudo mount ${LIST_OF_EXISTING_LINUX[2]} /mnt;
      sudo grub-install --root-directory=/mnt /dev/sda
      sudo umount ${LIST_OF_EXISTING_LINUX[2]} 
      if [ "$language" = "English" ]; then
        zenity --info --title="Ubuntu has been successfully uninstalled" --text="Ubuntu has been successfully removed, and Grub has been reinstalled into ${LIST_OF_EXISTING_LINUX[2]}. Thank you for trying Ubuntu, see you soon !" 
      else
        zenity --info --title="Ubuntu a été correctement desinstallé" --text="Ubuntu a été correctement desinstallé, et Grub a été réinstallé dans ${LIST_OF_EXISTING_LINUX[2]}. Merci d'avoir essayé Ubuntu, et à bientot !" 
      fi
    else
      ##If we uninstall the 2nd (or 3rd or 4th..) distribution of the list, we reinstall GRUB into the 1st one
      ##Erases the partition chosen by the user
      sudo umount $choice ;
      sudo mount $choice /mnt;
      sudo rm -r /mnt/*   
      sudo umount $choice ;
      ##Reinstalls GRUB into the 1st Linux partition
      sudo mount ${LIST_OF_EXISTING_LINUX[1]} /mnt;
      sudo grub-install --root-directory=/mnt /dev/sda
      sudo umount ${LIST_OF_EXISTING_LINUX[1]} 
      if [ "$language" = "English" ]; then
        zenity --info --title="Ubuntu has been successfully uninstalled" --text="Ubuntu has been successfully removed, and Grub has been reinstalled into ${LIST_OF_EXISTING_LINUX[1]}. Thank you for trying Ubuntu, see you soon !" 
      else
        zenity --info --title="Ubuntu a été correctement desinstallé" --text="Ubuntu a été correctement desinstallé, et Grub a été réinstallé dans ${LIST_OF_EXISTING_LINUX[1]}. Merci d'avoir essayé Ubuntu, et à bientot !" 
      fi
    fi
  fi
fi

}
#___________________________________________________________________________________________________________________________________________________________________



## BEGINNING OF SCRIPT

### LANGUAGE MENU
language=$(zenity --list --title="English / French ?" --text="This is a temporary menu. For testing purpose only." --column="" "English" "Français") || exit 102;
if [ "$language" = "English" ]; then
  ( uninstall_linux $language ) | zenity --progress --auto-close --title="Welcome" --text="Scanning systems" --percentage=0
else
  ( uninstall_linux $language ) | zenity --progress --auto-close --title="Bienvenue" --text="Détection des systèmes" --percentage=0
fi
echo "End of script."
exit 0

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

Hors ligne

#116 Le 17/10/2010, à 00:26

YannUbuntu

Re : [Live-CD] Linux Secure Remix

clean_boot_repair (v5)

#! /bin/bash

## YannUbuntu 17/10/2010 - https://launchpad.net/~yannubuntu - licensed under GNU-GPL v3 (http://www.gnu.org/licenses/gpl.html)
## Special thanks to Josepe36 and all contributors of this thread : http://forum.ubuntu-fr.org/viewtopic.php?pid=3786646

## CLEAN BOOT REPAIR
## Allows to restore the initial boot sector or repair the GRUB of any Linux distribution previously installed via the "improved_ubuntu_installer" script.
## To test this script, you need to execute it (sudo ./clean_grub_repair) from a live-session 
## For better integration, a launcher can be created e.g. in System->Administration, and a "Boot repair" button can also be added to the live-CD welcome screen.
## To be improved : take into account disks other than sda...

## REPARATEUR D'AMORCAGE
## Permet de restaurer l'amorcage initial ou réparer le GRUB de n'importe-quelle distribution Linux ayant été installée via le script "improved_ubuntu_installer".
## Pour tester ce script, il suffit de l'exécuter (sudo ./clean_grub_repair) à partir d'une session-live 
## Pour une meilleure intégration, un lanceur peut etre créé par ex. dans le menu Systeme->Administration, on peut aussi ajouter un bouton "Réparer l'amorcage" sur l'écran d'accueil du live-CD.
## A améliorer : restauration sur disque autre que sda...



detect_backup(){
tab=$(sudo fdisk -l|grep -i "$TEMP_FILESYSTEM"|cut -c1-10) ;
if [ "$tab" ]; then
   echo "The existing $TEMP_FILESYSTEM partitions are : $tab" ;
   ##MOUNTS THE $TEMP_FILESYSTEM PARTITIONS, DETECTS WHICH CONTAIN AN OS, AND WHICH CONTAIN A 63 SECTORS BACKUP
   for i in $tab
     do
       sudo umount $i ;
       sudo mount $i /mnt;
       folder=$(sudo ls /mnt |grep -i "$TEMP_SYSTEMFOLDER");
       if [ "$folder" ]; then
         control=$(sudo ls /mnt/boot | grep "save-63-sectors.img") ;
         if [ "$control" ] 
           then echo "$i is a $TEMP_FILESYSTEM partition containing a backup"; 
                QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP=$(($QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP+1)) ; 
                LIST_OF_PARTITIONS_WITH_BACKUP[$QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP]=$i
                if [ "$QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP" = "1" ]; then 
                  sudo dd if=/mnt/boot/save-63-sectors.img of=/tmp/save-63-sectors.img bs=512 count=63
                fi
           else echo "$i is a $TEMP_FILESYSTEM partition without 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
         ##Creates a tab with partitions containing an installation of Windows
         if [ "$TEMP_FILESYSTEM" = "ntfs" ] || [ "$TEMP_FILESYSTEM" = "fat" ]; then
           QUANTITY_OF_DETECTED_WINDOWS=$(($QUANTITY_OF_DETECTED_WINDOWS+1))
         fi
         ##Creates a tab with partitions containing an installation of MacOS
         if [ "$TEMP_FILESYSTEM" = "hfs" ] ; then
           QUANTITY_OF_DETECTED_MACOS=$(($QUANTITY_OF_DETECTED_MACOS+1))
         fi
       fi
       sudo umount $i ;
   done
else echo "There is no $TEMP_FILESYSTEM partition" ;
fi
}
#__________________________________________________________________________________________________________________________________________________________________





### MAIN MENU
uninstall_linux()
{

## CONTROLS IF A BACKUP OF THE 63 FIRST SECTORS ALREADY EXISTS ON THE DISK, IF YES IT IS MEMORIZED IN /tmp. ALSO COUNTS THE QUANTITY OF OS.
QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP=0
QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP=0
QUANTITY_OF_DETECTED_LINUX=0
QUANTITY_OF_DETECTED_WINDOWS=0
QUANTITY_OF_DETECTED_MACOS=0
LINUX_SYSTEM_FOLDER="boot"
HFS_SYSTEM_FOLDER="boot"
NTFS_SYSTEM_FOLDER="Windows"
FAT_SYSTEM_FOLDER="WINDOWS" 

echo "10"
TEMP_FILESYSTEM="linux"; TEMP_SYSTEMFOLDER="$LINUX_SYSTEM_FOLDER"  #I put Linux first because I guess the backups on Linux partitions have better reliability (not affected by virus)
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 $LIST_OF_PARTITIONS_WITH_BACKUP


echo "30"
TEMP_FILESYSTEM="hfs"; TEMP_SYSTEMFOLDER="$HFS_SYSTEM_FOLDER"
detect_backup $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP $QUANTITY_OF_DETECTED_MACOS $LIST_OF_PARTITIONS_WITH_BACKUP
echo "60"
TEMP_FILESYSTEM="ntfs"; TEMP_SYSTEMFOLDER="$NTFS_SYSTEM_FOLDER"
detect_backup $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP $QUANTITY_OF_DETECTED_WINDOWS $LIST_OF_PARTITIONS_WITH_BACKUP
echo "80"
TEMP_FILESYSTEM="fat"; TEMP_SYSTEMFOLDER="$FAT_SYSTEM_FOLDER"
detect_backup $TEMP_FILESYSTEM $TEMP_SYSTEMFOLDER $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP $QUANTITY_OF_DETECTED_WINDOWS $LIST_OF_PARTITIONS_WITH_BACKUP

echo "100" #Closes the progress indication dialog  (for safety purpose we need to prevent the user from cancelling in the middle of removal operations)
echo "We detected $QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP backup(s), et $QUANTITY_OF_DETECTED_SYSTEMS_WITHOUT_BACKUP OS without backup."
echo "We detected $QUANTITY_OF_DETECTED_LINUX Linux distribution(s), $QUANTITY_OF_DETECTED_MACOS MacOS, and $QUANTITY_OF_DETECTED_WINDOWS Windows."

##IF NO BACKUP HAVE BEEN DETECTED
if [ "$QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP" = "0" ]; then
  ##Dual-boot Linux-Windows
  if [ "$QUANTITY_OF_DETECTED_WINDOWS" != "0" ]; then
    if [ "$language" = "English" ]; then
      zenity --info --title="Automatic repair is impossible" --text="There is no boot backup on this computer. To repair your boot sector, it is recommended to use a Windows repair CD for example. It is a non-trivial and risky manipulation, so please backup your data before doing it."
    else
      zenity --info --title="Impossible de réparer automatiquement" --text="Il n'existe pas de sauvegarde d'amorcage sur cet ordinateur. Pour désinstaller Ubuntu, il est recommandé d'effacer la partition Ubuntu puis réinstaller un amorceur Windows (avec un CD de réparation Windows par exemple). Il s'agit d'une manipulation non-triviale et risquée, donc pensez à sauver vos données auparavant."
    fi
  ##Dual-boot Linux-MacOS
  elif [ "$QUANTITY_OF_DETECTED_MACOS" != "0" ]; then
    if [ "$language" = "English" ]; then
      zenity --info --title="Automatic repair is impossible" --text="There is no boot backup on this computer. To repair your boot sector, it is recommended to use a MacOS repair CD for example. It is a non-trivial and risky manipulation, so please backup your data before doing it."
    else
      zenity --info --title="Impossible de réparer automatiquement" --text="Il n'existe pas de sauvegarde d'amorcage sur cet ordinateur. Pour désinstaller Ubuntu, il est recommandé d'effacer la partition Ubuntu puis réinstaller un amorceur MacOS (avec un CD de réparation MacOS par exemple). Il s'agit d'une manipulation non-triviale et risquée, donc pensez à sauver vos données auparavant."
    fi
  else
  ##The disk contains only one OS (Linux)
    if [ "$language" = "English" ]; then
      ##Reinstalls GRUB into the 1st Linux partition
      sudo mount ${LIST_OF_EXISTING_LINUX[1]} /mnt;
      sudo grub-install --root-directory=/mnt /dev/sda
      sudo umount ${LIST_OF_EXISTING_LINUX[1]} 
      if [ "$language" = "English" ]; then
        zenity --info --title="Your boot sector has been successfully repaired" --text="Grub has been successfully reinstalled into ${LIST_OF_EXISTING_LINUX[1]}. Thank you and see you soon !" 
      else
        zenity --info --title="Votre secteur d'amorcage a été correctement réparé" --text="GRUB a été correctement reinsinstallé dans ${LIST_OF_EXISTING_LINUX[1]}. Merci et à bientot !" 
      fi
    fi
  fi
 
##IF MINIMUM ONE BACKUP HAS BEEN DETECTED, WE PROPOSE TO RESTORE THE BACKUP AND OPTIONNALY TO REINSTALL GRUB
else

  ##IF NO LINUX WAS DETECTED (was deleted by mistake for example), WE ONLY PROPOSE TO RESTORE THE BACKUP
  if [ "$QUANTITY_OF_DETECTED_LINUX" = "0" ]; then
    if [ "$QUANTITY_OF_DETECTED_WINDOWS" != "0" ]; then
      if [ "$language" = "English" ]; then
        zenity --question --title="Are you sure you want to repair your boot sector ?" --text="This will restore the Windows boot sector that was on your computer before installing Ubuntu. Do you want to continue ?" || exit 101;
      else
        zenity --question --title="Etes-vous sûr de vouloir réparer votre amorcage ?" --text="Ceci restaurera l'amorcage Winsows qui se trouvait sur votre ordinateur avant l'installation d'Ubuntu. Souhaitez-vous continuer ?" || exit 101;
      fi
  ##Dual-boot Linux-MacOS
    elif [ "$QUANTITY_OF_DETECTED_MACOS" != "0" ]; then
      if [ "$language" = "English" ]; then
        zenity --question --title="Are you sure you want to repair your boot sector ?" --text="This will restore the MacOS boot sector that was on your computer before installing Ubuntu. Do you want to continue ?" || exit 101;
      else
        zenity --question --title="Etes-vous sûr de vouloir réparer votre amorcage ?" --text="Ceci restaurera l'amorcage MacOS qui se trouvait sur votre ordinateur avant l'installation d'Ubuntu. Souhaitez-vous continuer ?" || exit 101; exit 101;
      fi
    else 
      if [ "$language" = "English" ]; then
        zenity --question --title="Are you sure you want to repair your boot sector ?" --text="This will restore the boot sector that was on your computer before installing Ubuntu. Do you want to continue ?" || exit 101;
      else
        zenity --question --title="Etes-vous sûr de vouloir réparer votre amorcage ?" --text="Ceci restaurera l'amorcage qui se trouvait sur votre ordinateur avant l'installation d'Ubuntu. Souhaitez-vous continuer ?" || exit 101; exit 101;
      fi
    fi
    ## RESTORES THE FIRST BACKUP DETECTED ON THE DISK
    ### saves temporarily the current first sector (in order to restore the current partition table just after)
    sudo dd if=/dev/sda of=/tmp/backup_of_current_first_sector.img bs=512 count=1 ;
    ### restores the boot backup in the 63 first sectors
    sudo dd if=/tmp/save-63-sectors.img of=/dev/sda bs=512 count=63 ;
    ### restores the current partition table
    sudo dd if=/tmp/backup_of_current_first_sector.img of=/dev/sda bs=1 skip=446 count=64

    ## Renames all the backups (in order to avoid interferences with next Ubuntu installation, while keeping it in case of trouble or for test purpose)
    i=1; while [ "$i" != "$(($QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP+1))" ]; do 
      sudo umount ${LIST_OF_PARTITIONS_WITH_BACKUP[$i]} ;
      sudo mount ${LIST_OF_PARTITIONS_WITH_BACKUP[$i]} /mnt;
      sudo mv /mnt/boot/save-63-sectors.img /mnt/boot/sav63sectors_old.img
      sudo umount ${LIST_OF_PARTITIONS_WITH_BACKUP[$i]} ;
      i=$(($i+1)); 
    done;
  

##IF MINIMUM ONE LINUX HAS BEEN DETECTED, WE PROPOSE TO RESTORE THE BACKUP AND OPTIONNALY TO REINSTALL GRUB
  else
    if [ "$language" = "English" ]; then
      choice=$(zenity --list --title="Repair of the boot sector" --text="Please read the descriptions carefully. What do you want to do ?" --column="" "Only restore the boot sector. Restores access to the operating systems you had before installing Ubuntu (but you will loose your access to Ubuntu). If your OS (Windows..) does not start since Ubuntu installation, please choose this option." "Restore the boot sector then reinstall GRUB. Should restore access to all your current operating systems. Recommended if your boot sector has been broken by another OS.") || exit 102;
    else
      choice=$(zenity --list --title="Réparation de l'amorcage" --text="Lisez attentivement les descriptions. Que souhaitez-vous faire ?" --column="" "Seulement restaurer l'amorcage. Restaure l'accès aux systèmes d'exploitation que vous aviez avant d'installer Ubuntu (mais perd l'accès à Ubuntu). Si votre OS (Windows..) ne démarre plus depuis l'installation d'Ubuntu, choisissez cette option." "Restaure l'amorcage puis reinstalle GRUB. Devrait restaurer l'accès à tous vos OS actuels. Recommendé si votre amorcage a été endommagé par un autre OS.") || exit 102;
    fi

    ## RESTORES THE FIRST BACKUP DETECTED ON THE DISK
    ### saves temporarily the current first sector (in order to restore the current partition table just after)
    sudo dd if=/dev/sda of=/tmp/backup_of_current_first_sector.img bs=512 count=1 ;
    ### restores the boot backup in the 63 first sectors
    sudo dd if=/tmp/save-63-sectors.img of=/dev/sda bs=512 count=63 ;
    ### restores the current partition table
    sudo dd if=/tmp/backup_of_current_first_sector.img of=/dev/sda bs=1 skip=446 count=64


    if [ "$choice" = "Restore the boot sector then reinstall GRUB. Should restore access to all your current operating systems. Recommended if your boot sector has been broken by another OS." ] || [ "$choice" = "Restaure l'amorcage puis reinstalle GRUB. Devrait restaurer l'accès à tous vos OS actuels. Recommendé si votre amorcage a été endommagé par un autre OS." ];then
      ##Reinstalls GRUB into the 1st Linux partition
      sudo mount ${LIST_OF_EXISTING_LINUX[1]} /mnt;
      sudo grub-install --root-directory=/mnt /dev/sda
      sudo umount ${LIST_OF_EXISTING_LINUX[1]} 
      if [ "$language" = "English" ]; then
        zenity --info --title="Your boot sector has been successfully repaired" --text="Grub has been reinstalled into ${LIST_OF_EXISTING_LINUX[1]}. Thank you and see you soon !" 
      else
        zenity --info --title="Votre secteur d'amorcage a été réparé avec succès" --text="GRUB a été correctement reinsinstallé dans ${LIST_OF_EXISTING_LINUX[1]}. Merci et à bientot !" 
      fi
    else
      ## Renames all the backups (in order to avoid interferences with next Ubuntu installation, while keeping it in case of trouble or for test purpose)
      i=1; while [ "$i" != "$(($QUANTITY_OF_DETECTED_SYSTEMS_WITH_BACKUP+1))" ]; do 
        sudo umount ${LIST_OF_PARTITIONS_WITH_BACKUP[$i]} ;
        sudo mount ${LIST_OF_PARTITIONS_WITH_BACKUP[$i]} /mnt;
        sudo mv /mnt/boot/save-63-sectors.img /mnt/boot/sav63sectors_old.img
        sudo umount ${LIST_OF_PARTITIONS_WITH_BACKUP[$i]} ;
        i=$(($i+1)); 
      done;
      if [ "$language" = "English" ]; then
        zenity --info --title="Your boot sector has been successfully restored" --text="Thank you for trying Ubuntu, see you soon !" 
      else
        zenity --info --title="Votre secteur d'amorcage a été restauré avec succès" --text="Merci d'avoir essayé Ubuntu, et à bientôt !" 
      fi
    fi
  fi
fi

}
#___________________________________________________________________________________________________________________________________________________________________



## BEGINNING OF SCRIPT

### LANGUAGE MENU
language=$(zenity --list --title="English / French ?" --text="This is a temporary menu. For testing purpose only." --column="" "English" "Français") || exit 102;
if [ "$language" = "English" ]; then
  ( uninstall_linux $language ) | zenity --progress --auto-close --title="Welcome" --text="Scanning systems" --percentage=0
else
  ( uninstall_linux $language ) | zenity --progress --auto-close --title="Bienvenue" --text="Détection des systèmes" --percentage=0
fi
echo "End of script."
exit 0

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

Hors ligne

#117 Le 17/10/2010, à 03:52

jalobservateur

Re : [Live-CD] Linux Secure Remix

cool Mais c'est superbe Yann !
On va voir ce qu'en dis josepe ^^
Vraiment !


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

#118 Le 17/10/2010, à 10:28

Josepe36

Re : [Live-CD] Linux Secure Remix

Bonjour yannubuntu

Super boulot !!!!
je n'ai pas le temps ce week end et la semaine prochaine (boulot), en revanche j'enregistre les scripts afin de les essayer.
Donc je suppose qu'il faut travailler sur l'integration, et je vais m'y coller.
En revanche, as tu reçus mes messages privés ?
Je pense qu'il faudrait que l'on se contact en messagerie, afin de discuter du projet cela nous permettrai d'etre
plus efficace, je t'ai crée un compte sur mon serveur cela peut etre tres utile pour s'echanger les fichiers, correctif et que chacun puisse tester l'iso resultante quand il le souhaite.

Dernière modification par Josepe36 (Le 17/10/2010, à 10:31)


Développeur distribution Hybryde
www.hybryde.org

Hors ligne

#119 Le 17/10/2010, à 11:06

Josepe36

Re : [Live-CD] Linux Secure Remix

j'ai testé les scripts, trés bons dans l'enssemble il faudrait  revoir la réinstallation de grub qui pose probléme.

j'ai tésté les scripts dans l'ordre, supprimer ubuntu de test sur ma /dev/sda6, suppression ok ,
mais pourquoi se retrouver avec une partition vide ? ne vaudrait il pas mieux la laisser pleinne ou du moins laisser home qui pourrait etre utile si l'utilisateur a oublié de sauvegarder des documents importants ?

Il me semble que la restauration de grub se fait sur la partition et non au debut du disque, ce qui dans mon cas m'a donné un "grub error" au reboot.

Malgrés ces quelques points, les scripts sont de grande qualitée et je tiens a dire que Yannubuntu a fait là un travail remarquable .


Développeur distribution Hybryde
www.hybryde.org

Hors ligne

#120 Le 17/10/2010, à 13:52

YannUbuntu

Re : [Live-CD] Linux Secure Remix

Salut
@Josepe: merci pour tes tests et tes encouragements. Pour GRUB normalement il devrait se réinstaller dans le boot sector de sda, avec ses fichiers de configuration soit dans le 1er linux détecté, soit dans le 2eme linux détecté si c'est le 1er que l'on a désinstallé.
Si ca ne fait pas ca, c'est que je me suis planté de commande, il faudrait corriger.
Pour le home, effectivement on pourrait le laisser par défaut, mais dans ce cas je pense qu'il faut l'indiquer à l'utilisateur. Par contre on ne peut pas laisser la partition pleine car sinon GRUB la détecterait.
Pour les fichiers, pour l'instant je ne crée pas d'iso (j'essaye d'abord de bien mettre au point les scripts) donc on peut s'envoyer les fichiers par mail.

Actuellement je suis en train de plancher sur os-prober qui me permettrait de simplifier les scripts de détection.

@tous : est-ce que vous pourriez démarrer en live-CD (ou live-USB), et vérifier que la commande

sudo os-prober

..détecte bien tous les OS présents sur tous les disques surs ? et si possible me copier-coller ici ou par mail ce que vous retourne la commande? (afin que j'étudie son comportement suivant les OS - disques). Merci d'avance pour votre aide !  smile


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

Hors ligne

#121 Le 17/10/2010, à 14:06

Josepe36

Re : [Live-CD] Linux Secure Remix

ok yannubuntu
essaie de me contacter par mp, stp wink


Développeur distribution Hybryde
www.hybryde.org

Hors ligne

#122 Le 17/10/2010, à 14:12

YannUbuntu

Re : [Live-CD] Linux Secure Remix

justement j'etais en train wink


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

Hors ligne

#123 Le 17/10/2010, à 14:14

Josepe36

Re : [Live-CD] Linux Secure Remix

cool !!! big_smile


Développeur distribution Hybryde
www.hybryde.org

Hors ligne

#124 Le 17/10/2010, à 17:30

Josepe36

Re : [Live-CD] Linux Secure Remix

je suis en train d'éplucher les script depuis 45 minutes environs, je vais éssayer de rentrer dedans car c'est différent quand c'est pas écris par soi.
Mais j'y trouve mes marques, et comprend ta logique de codage.

Cet outil pourra restaurer le gestionnaire de démarrage dans tout les cas de figures, il va falloir reflechir a quelques routines de control surtout pour la taille des secteurs qui peut varier.

excellent travail


Développeur distribution Hybryde
www.hybryde.org

Hors ligne

#125 Le 17/10/2010, à 17:34

Josepe36

Re : [Live-CD] Linux Secure Remix

De mon coté, je vois pour l'integration car ici on parle de :
sauvegarder le mbr
restaurer le mbr
restaurer grub à partir d'une partition choisie

alors integration à ubiquity, ou interface séparé ?

avis des lecteurs s'il vous plait ?


Développeur distribution Hybryde
www.hybryde.org

Hors ligne