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.

#1 Le 03/12/2009, à 22:55

Goda

Downgrade ou réinstallation: Script [ ASTUCE ]

Salut à tous !

Karmic Koala c'est un joli nom il est vrai, le boot est joli ok...mais en ce qui me concerne, sur mon pc portable Acer aspire 9300 wlmi, cette nouvelle distro à créée pas mal de problèmes. Entre autre et pas des moindres : une prise en charge assez désastreuse de ma carte wifi favorite (ZyDAS ZD1211/Atheros AR5007UG, une bombe). Ajouté a cela de multiples bugs assez relou à régler (que de temps passé avec mon ami google !).
Bref, j'ai décidé de downgrader vers Jaunty. C'est une manip que je n'avais jamais faite et ça s'es pas trop mal passé, pour ça je me suis bien documenté et j'ai écrit un script. Ce script est plus adapté à la réinstallation du même système mais il marche aussi pour downgrader.

/!\ Ne me tenez pas pour responsable d'éventuelles pertes de données ou autre. Je donne ma méthode, à vous de juger si elle est valable /!\


Mon partitionnement :
-100 Go en NTFS pour W$$$$
-10 Go en ext4 pour /    ( /tmp est en ramdisk mais ça ne fait rien )
-250 Go en ext3 pour /home
-10 Go en ext3 pour tester des distros

Mon script fait plus ou moins ce qui est détaillé içi : http://doc.ubuntu-fr.org/reinstallation_a_l_identique
Il permet:

-Soit de sauvegarder son /etc, son source.list, son menu.lst, + un mémo de son partitionnement et une liste complète des paquets installé.

-Soit de restaurer tout ça pour retrouver un système tout pareil.

Evidemment il ne gère pas les données. Comme mon /home est séparé ce n'est pas un problème, en outre ce script propose de désactiver certains services qui me sont inutiles (modem, bluetooth, raid etc) mais pour ça il demande confirmation.

Certe ça ne vaut pas un bon clonage avec Partimage (ne gère pas le ext4) ou Clonezilla (gère le ext4) mais ça dépanne quand on n'a pas ça sous la main.

#!/bin/bash

########################################################################
#
#
#          Ce script sert à faire un backup de l'état de sa
#            config et/ou à la réinstaller à l'identique
#
########################################################################

########################################################################

#DEBUT FONCTIONS

#Changer la couleur du texte en rouge
couleur() {
echo -e "\033[00;31m";
clear;
echo " ";
}

#Titre
titre() {
echo "########################################################################";
echo "#";
echo "#";
echo "#          Ce script sert à faire un backup de l'état de sa";
echo "#            config et/ou à la réinstaller à l'identique";
echo "#";
echo "########################################################################";
}

#Vérification des droits d'éxécution
droits() {
    if [ "$UID" -ne "0" ]
then
   echo " ";
   echo "Doit être lancé en tant que ROOT. Utilisez sudo";
   echo " ";
   sleep 4;
   echo -e "\033[00m";
   exit 10;
else
  :;
fi;
}

#Sauvegarde ou restauration ?
mode() {
	read -p "Voulez vous sauver votre config ou en restaurer une ancienne ? (s/r) : " MODE;
	echo " ";
}

#Dossier de sauvegarde
dossierback() {
if [ $MODE = "s" ]
    then
	read -p "Indiquer le chemin absolu du dossier de sauvegarde:  " CIBLE;
	echo " ";
	else
	read -p "Indiquer le chemin absolu du dossier ou sont les sauvegardes:  " SOURCE;
	echo " ";
 fi;

if [ -e $CIBLE ] && [ -d $CIBLE ] || [ -e $SOURCE ] && [ -d $SOURCE ]
  then
  :;
  else
  echo "Erreur ! êtes vous sur du chemin entré ?"
  echo " ";
  exit 11;
 fi;
}

#Backup des configs
backup() {
	echo "Une minute svp"
	echo " ";
	fdisk -l /dev/sda > $CIBLE/structure.list;
    df -h | grep "^/dev/" > $CIBLE/montages.list;
    dpkg --get-selections > $CIBLE/mespaquets.list;
    
    read -p "Voulez vous sauver votre /grub/menu.lst ? (o/n)  " GRUB
	echo " ";
	
if  [ $GRUB = "o" ]
    then
    cp /boot/grub/menu.lst $CIBLE/grubmenu.lst;
    else
   :;
fi

    read -p "Voulez vous sauver votre source.list ? (o/n)  " SLIST
    echo " ";
	
if  [ $SLIST = "o" ]
    then
    cp /etc/apt/sources.list $CIBLE/sources.list
    else
   :;
fi

    cp -a /etc $CIBLE;
    echo "OK c'est fait";
	echo " ";
}

#Sécurité
securite() {
	read -p "Voulez vous assurer vos arrières en faisant dés maintenant une sauvegarde de la config qui vas ètre écrasée ?  (o/n)" SECU;
	echo " ";
	
if [ $SECU = "o" ]
   then
    echo "Une minute svp"
	echo " ";
	fdisk -l /dev/sda > $HOME/structure.list;
    df -h | grep "^/dev/" > $HOME/montages.list;
    dpkg --get-selections > $HOME/mespaquets.list;
    
    read -p "Voulez vous sauver votre /grub/menu.lst ? (o/n)  " GRUB
	echo " ";
	
if  [ $GRUB = "o" ]
    then
    cp /boot/grub/menu.lst $HOME/grubmenu.lst;
    else
   :;
fi

read -p "Voulez vous sauver votre sources.list ? (o/n)  " SLIST
echo " ";

if  [ $SLIST = "o" ]
    then
    cp /etc/apt/sources.list $HOME/sources.list
    else
   :;
fi

    cp -a /etc $HOME;
    echo "C'est fait, tout a été sauvé dans $HOME. Pensez à tout effacer si la restauration est OK";
	echo " ";
else
   :;
fi
}
#Restauration de la config
restaure() {
	
	read -p "Voulez vous restaurer votre /grub/menu.lst ? (o/n)  " GRUB
	echo " ";
	
if  [ $GRUB = "o" ]
    then
    cp $SOURCE/grubmenu.lst /boot/grub/menu.lst;
    else
   :;
fi

read -p "Voulez vous restaurer votre source.list ? (o/n)  " SLIST
echo " ";

if  [ $SLIST = "o" ]
    then
    cp $SOURCE/sources.list /etc/apt/sources.list
    else
   :;
fi

	echo "Réinstallation de tous les paquets de la liste sauvegardée: "
	echo " ";
	apt-get update;
    apt-get dselect-upgrade;
    apt-get upgrade;

    dpkg --set-selections < $SOURCE/mespaquets.list;
    apt-get dselect-upgrade;
    apt-get upgrade;

read -p "Voulez vous restaurer votre /etc ? (o/n)  " ETC
echo " ";

if  [ $ETC = "o" ]
    then
    cp -a $SOURCE/etc /;
    else
   :;
fi
    echo "OK c'est fait";
	echo " ";
}

#Services à désactiver ?
services() {
	read -p "Désactiver le service PCMCIA ? (o/n)  " PCMCIA
	echo " ";
	read -p "Désactiver le service Bluetooth ? (o/n)  " BLUE
	echo " ";
	read -p "Désactiver la gestion des modems ? (o/n)  " MODEM
	echo " ";
	read -p "Désactiver la gestion du RAID ? (o/n)  " RAID
	echo " ";
	read -p "Désactiver le service EVM ? (o/n)  " EVM
	echo " ";
	read -p "Désactiver le service Fetchmail ? (o/n)  " FETCH
	echo " ";
}

#Désactivation des services séléctionnés :
desactivation() {
	
if [ $PCMCIA = "o" ]
    then
    update-rc.d -f pcmciautils remove; update-rc.d -f pcmcia remove 
        else
    :;
fi	

if [ $BLUE = "o" ]
    then
    update-rc.d -f bluetooth remove
        else
    :;
fi

if [ $MODEM = "o" ]
    then
    update-rc.d -f dns-clean remove; update-rc.d -f pppd-dns remove
        else
    :;
fi

if [ $RAID = "o" ]
    then
    update-rc.d -f mdadm remove; update-rc.d -f mdadm-raid remove
        else
    :;
fi

if [ $EVM = "o" ]
    then
    update-rc.d -f evms remove
        else
    :;
fi

if [ $FETCH = "o" ]
    then
    update-rc.d -f fetchmail remove
        else
    :;
fi
echo "OK c'est fait";
echo " ";
}
	
#Remet les couleurs par défaut et quitte
quitte() {
read -p "appuyez sur Entrée pour quitter" QUIT ;
echo -e "\033[00m";
clear;
exit 0;
}

#FIN FONCTIONS


#DEBUT MAIN
couleur;
droits;
mode;

if [ $MODE = "s" ]
    then
	titre;
    dossierback;
    backup;
    quitte;
elif [ $MODE = "r" ]
    then
	titre;
    securite;
    dossierback;
    restaure;
    services;
    desactivation;
    quitte;
else
    echo "Erreur ! Répondez par s ou r "
    quitte;
fi

#FIN MAIN

Pour la sauvegarde pas de problème, lancer le script et suivre les instructions qu'il donne.
Pour la restauration il y a plusieurs cas de figure:
- Soit vous réinstallez le MÊME système, pas de problème : suivez les instructions et restaurez tout.
- Soit, comme moi, vous downgradez ou upgradez et la il faut prendre quelques precautions:

Ne pas restaurer son source.list, ne pas restaurer son menu.lst (dans Karmic il n'y en a pas par exemple) et surtout NE PAS RESTAURER SON /ETC. En effet vous vous exposeriez à de graves déconvenues comme un boot impossible avec une partition / en lecture seule et là vous avez intérét à étre à l'aise avec la ligne de commande en mode recovery.

D'autre part dans un cas de downgrade de 9.10 vers 9.04 lors de la réinstallation des paquets c'est Shiretoko (firefox 3.5.5 Pre) qui sera installé en lieux et place de Firefox 3.5 car ce dernier n'est pas dans les dépots. Vous vous retrouverez donc avec les versions 3.0 et 3.5.5. D'autres cas de figure de ce style sont sans doute possibles.
Enfin, si vous n'avez pas ajouté manuellement les bon dépots avant de lancer le script celui çi ne pourra pas tout réinstaller car il ne trouvera pas les paquets.

En clair, que ce soit une réinstall ou un downgrade, çà se passe comme ça (si votre /home est sur une autre partition ou que vous n'avez aucune données):
-Bootez sur le cd ou le live usb ---> installez en écrasant l'install precedente ---> rebootez ---> lancez le script ---> peaufinez à la main si necessaire ---> enjoy.

Voila, et comme toujours documentez vous avant tout, posez des questions si necessaire, lisez mon script pour étre sur qu'il ne cache rien de malfaisant (on ne se connais pas aprés tout ;-) ), commentez le, donnez votre avis, améliorez le...

Dernière modification par Goda (Le 04/12/2009, à 10:41)


" Read The F$$$$$ Manual "      --->  man man

Pensez à passer en RÉSOLU...(en éditant le titre du 1er message)

Hors ligne