glouis@dynamicro.on.ca
Le procédé pour lequel ce document essaie d'être un guide est par nature dangereux pour les programmes et les données stockées sur votre ordinateur. Vous utilisez une telle méthode à vos risques et périls. Les étapes décrites dans ce document ont fonctionné pour l'auteur ; il n'y a aucune garantie qu'elles fonctionnent chez vous, ni que vous pouvez les suivre sans dégâts importants pour les programmes et/ou les données de votre ordinateur. Vous effectuez sous votre propre responsabilité toutes les utilisations des informations contenues ici, et l'auteur (NdT : ou le traducteur) ne peut(vent) être tenu(s) pour responsable(s) en aucune façon, quels que soient les dommages ou les problèmes dont vous pourriez souffrir par ces utilisations.
Ce document est sous copyright 1996, Dynamicro Consulting Limited, et est distribué suivant les termes de la GNU General Public License. Plus simplement, cela signifie que vous pouvez le copier et le modifier à volonté, mais que vous ne pouvez pas priver les autres de ces possibilités.
Les commentaires et les questions peuvent être envoyées à l'auteur. Les rapports de mises à jour de systèmes complexes réussies sont particulièrement les bienvenues, pour être utilisées dans les prochaines versions.
Le but de ce document est d'offrir des astuces vous aidant dans la suppression et la réinstallation d'un système Linux. Ce n'est en aucun cas un livre de recettes parfaites, mais j'espère qu'il vous donnera des indications concernant ce à quoi vous devez penser et dans quel ordre vous devez faire les choses. Cela aurait été une aide pour moi si quelqu'un d'autre avait écrit quelque chose comme cela avant que je fasse ma première mise à jour ; c'est pourquoi j'espère que cela sera une aide pour vous si vous avez une machine Linux à mettre à jour.
Ne suivez pas tout à la lettre néanmoins : vous pouvez avoir plus ou moins de «bouteille». Même les noms de répertoires cités dans ce document peuvent être différents de ceux que vous devrez utiliser : par exemple, certains personnes utilisent /usr/home à la place de /home, d'autres l'appellent /u, et certains (petit frisson :) mettent même tous leurs utilisateurs directement dans /usr même ! Je ne peux être spécifique pour votre systême, donc j'ai simplement utilisé les noms tels qu'ils étaient sur le mien.
Vous noterez aussi que j'utilise les distributions Slackware, et que je suppose que vous disposez de suffisamment de mémoire vive et d'espace disque pour installer les sources du noyau Linux et compiler votre propre noyau. Si votre système est différent, certaines de mes recommandations ne s'appliqueront pas ; mais j'espère que vous trouverez l'idée générale sous-jacente utile dans votre projet de mise à jour.
Bonne question ! S'il est possible de l'éviter, ne le faites pas ! (Ceci est la plus importante recommandation de tout ce guide !!!). Mais il existe des cas où vous devrez le faire.
Par exemple, j'ai installé un disque dur de 4 Go et j'ai alors découvert que le cru Linux Slackware 2.0 ne savait pas gérer un disque dur d'une taille supérieure à 2 Go ; j'ai alors été terriblement embarrassé. Donc je devais faire une mise à jour vers la Slackware 2.3. Cette mise à jour a été une expérience épuisante, et c'est en partie pour cela que j'ai écrit ces notes. J'ai quasiment tout fait de travers, et c'est seulement la chance et le fait que je possède une autre machine sous Linux qui m'ont sauvés du désastre.
Voici un autre exemple : j'ai découvert que je ne pouvais pas réussir à compiler un noyau Linux a.out qui marche dans la série des 1.3 en utilisant une Slackware 2.3 directement après l'installation (sur une autre machine, pas sur celle que j'ai charcutée). J'ai retroussé mes manches, acheté une Slackware 3.0 en cd-rom et je suis passé en format ELF. Cette fois, la réinstallation s'est mieux passée, en partie à cause de la première expérience douloureuse, et cela est l'origine de la plupart des idées que je vous propose ici.
Chose étrange, cela est plus sûr. Si vous installez par dessus un système Linux, il y a des chances que vous ayez un mélange de nouveaux et d'anciens exécutables, d'anciens et de nouveaux fichiers de configuration, et généralement un fouillis à essayer d'organiser. Faire un nettoyage par le vide et ensuite réinstaller seulement ce que vous savez nécessaire est une méthode violente mais efficace pour avoir un résultat propre. (Bien sur nous parlons ici de l'installation d'une distribution Linux complète et non pas de la mise à jour d'un ou deux paquetages ! La meilleure façon d'éviter d'avoir à faire une réinstallation complète est précisément de garder chaque composant -- en particulier gcc et ses bibliothèques, et les binutils -- à jour. Si les programmes que vous utilisez sont raisonnablement à jour, et vous pouvez réaliser ceci en récupérant, et en compilant si nécessaire, les derniers sources de temps en temps, alors il n'y a nul besoin d'une mise à jour massive.)
Comme Patrick Volkerding le souligne (lui aussi recommande la procédure du grand nettoyage pour les mises à jour), installer ELF par dessus un système basé sur a.out engendre un désastre ; en tout cas, si vous en savez assez pour essayer cela, vous n'avez pas besoin de lire ce guide !
Même sans cette complication, vous feriez mieux d'installer à partir de zéro.
Cela dépend, bien sur, de la complexité de votre système. Mais je suppose que, pour l'installation réussie (pour l' autre ? -- ne me le demandez pas ! :) j'ai passé environ 10 heures à faire des sauvegardes, six heures à installer tout le système jusqu'au point à partir duquel j'ai pu autoriser les connexions, et une autre demi-journée, ou quasiment, à restaurer les choses moins importantes. Ensuite, au fur et à mesure, j'ai bien découvert des petites choses qui n'étaient pas exactement comme je les voulais -- je les ai corrigées dès que je les rencontrais -- mais pour l'essentiel, une vingtaine d'heures devraient suffire pour réinstaller un système raisonnablement complexe. Peut-être moins si vous réinstallez à partir d'un disque dur (j'ai utilisé un cd-rom) ou plus à partir de disquettes. Peut-être moins si vous utilisez un Pentium rapide, plus si vous utilisez un 386. Mais c'est de cet ordre de grandeur.
Cette introduction est finie. Voyons maintenant comment réaliser cela, une fois que vous avez décidé que cela devait être fait. Armez vous de courage, respirez un bon coup, et :
C'est extrêmement profitable d'avoir un rapport sur tout ce que vous avez fait pour préparer, et réaliser, les modifications. En particulier, la liste de toutes les sauvegardes que vous allez réaliser durant la préparation de la destruction de votre système actuel est très importante.
De façon générale, les sauvegardes sont écrites sur des média à accès séquentiel. Dans ce cas là, vous ne voudrez pas utiliser cette sauvegarde complète pour restaurer un nombre important de fichiers ; il y a trop de fichiers dedans que vous ne souhaitez pas restaurer. Il vaut mieux créer des petites sauvegardes de zones que vous savez que vous restaurerez entièrement. J'ai listé un ensemble d'exemples plus loin.
Pourquoi alors devez-vous commencer par une sauvegarde totale ? Deux raisons simples : d'abord en cas d'échec catastrophique durant l'installation du nouveau système, vous aurez une solution pour retourner au point de départ avec une peine minimale. Ensuite, quelle que soit la méticulosité avec laquelle vous avez préparé la nouvelle installation, il y a une large probabilité qu'un ou deux fichiers importants aient été oubliés. Dans ce cas la contrainte de la restauration de ces un ou deux fichiers de la sauvegarde complète sera préférable à la gêne d'une continuation sans eux.
Pour économiser du temps et de l'espace disque, si vous avez encore le médium contenant la distribution de votre ancienne version de Linux, vous pouvez ne sauvegarder que les fichiers dans les mtime ou ctime sont plus récents que ceux de la date de son installation.
Ceci est l'autre extrémité : vous n'allez pas restaurer ces fichiers (pour la plupart en tout cas) ; vous allez les comparer avec les nouveaux créés durant l'installation. Pourquoi ? Parce que les nouveaux peuvent contenir des informations que les anciens ne contenaient pas, ou exprimer ces informations de façons différentes. Changements de protocoles, ajout de nouveaux outils ou implantation de nouvelles fonctionnalités dans des outils existants peuvent engendrer des changements dans les formats des fichiers de configuration et dans ceux des scripts de lancement que la sous-arborescence /etc contient, et vous devrez sûrement editer vos anciennes données contenues dans ces fichiers pour respecter les nouveaux formats et tirer avantage des améliorations.
Ceci est la partie la plus variable du travail, et tout ce que je peux réellement faire pour vous aider est de vous décrire ce que je fais sur mon système, dans l'espoir que cela vous servira comme un guide de base. Basiquement, vous devez regarder dans chaque répertoire qui contient :
et isoler seulement ceux que vous voulez garder.
(Une autre stratégie possible est de sauvegarder tous les fichiers dont les mtime ou ctime sont plus récents que le jour de votre précédente installation de Linux, comme mentionné plus haut, et ensuite de les restaurer à partir de là. Si vous faites cela, vous devez prendre en compte le fait que la nouvelle distribution de Linux peut contenir des versions de certains fichiers qui sont plus récentes que celles que vous avez sauvegardées.
Dans mon cas, je suis arrivé à faire un fichier .tgz sur un média de sauvegarde pour chacun des éléments
Ma machine était relativement simple car il n'y avait aucun fichier de spool à prendre en compte. Je n'utilisais pas de spool pour les news sur cette machine, et il y avait seulement deux utilisateurs ; il était très facile de récupérer tout le courrier électronique lu avant l'arrêt. Sinon, les répertoires /var/spool auraient été sauvegardés à la dernière minute. (Et, bien sur, les répertoires contenant la liste de news et des serveurs !)
Des détails pour faire ceci peuvent être trouvés dans le guide d'installation de votre nouvelle distribution.
Vous aurez besoin de deux disquettes, une pour chaque.
Lorsque tout cela est fait, vous êtes prêts pour le Grand Moment. L'étape suivante met le système hors service.
Ceci est la dernière chose à faire sur le vieux système avant que vous ne l'effaciez, pour conserver la version la plus à jour des informations sur les utilisateurs et le super-utilisateur.
Le guide d'installation vous expliquera comment faire cela, ce qui va effacer votre ancien système. A partir de maintenant, vous êtes dépendants de la qualité des sauvegardes que vous avez faites aux étapes précédentes ! Vous avez été averti !
Il y a déjà plusieurs bons documents décrivant comment faire cela, donc je ne vais pas détailler. Reprenez ici quand le nouveau système bootera à partir de son disque dur.
Pendant ce processus, pensez à faire une disquette de boot, car le noyau que l'installation de Linux installe doit être remplacé, et des accidents peuvent survenir durant cette étape. Pensez aussi à installer les paquetages de développement et les sources du noyau.
Avec le nouveau système Linux démarré à partir du disque dur, éditez /etc/fstab et ajoutez votre partition de swap. Ensuite lancer la commande "swapon -a". Je ne sais pas pourquoi, mais l'installation de la Slackware ne vous propose pas ceci lorsque la partition de swap existe déjà. Donc, lorsque vous démarrez votre nouveau système et que les scripts rc.S essaient d'activer le swap, la partition ne peut être trouvée dans le fichier fstab et le swap n'est pas activé. Cette étape corrige cela.
Comme décrit plus haut, vous ne pouvez pas juste recopier tous les vieux fichiers dans /etc et espérer que tout va marcher correctement après. Avec certains fichiers, vous pouvez faire cela ; par exemple /etc/XF86Config (aussi longtemps que vous utilisez la même version de Xfree86 -- et le même matériel vidéo -- dans l'ancienne et la nouvelle installation). Pour la plus grande partie cependant, il vaut mieux utiliser diff pour comparer les anciens et les nouveaux fichiers avant de faire les copies. En particulier, surveiller les changements significatifs dans les fichiers de /etc/rc.d, qui peuvent nécessiter de rétablir votre ancienne configuration en éditant à la main, plutôt que de recopier vos anciens scripts rc à partir de votre sauvegarde. Une fois que tout est fini, rebootez.
Même si vous n'avez absolument pas besoin de faire cela pour obtenir un noyau qui supporte votre matériel, il est important de faire cela pour avoir un noyau qui ne contienne pas des quantités de pilotes inutiles pour votre machine. Pour plus de détails, regardez le Kernel HOWTO. Installez le noyau recompilé sur une disquette d'abord ; une fois que vous avez vérifier qu'il démarre, ok, installez le sur le disque dur, lancez lilo si vous l'utilisez, et redémarrez.
Certains exécutables peuvent nécessiter d'être réinstallés à partir des répertoires des sources ; j'ai eu à faire cela pour lilo par exemple, car ma version était plus récente que celle de l'installation de la Slackware et que je ne m'étais pas préoccupé de sauvegarder l'exécutable placé dans /sbin. Vous devrez vérifier les programmes restaurés et confirmer l'existence et l'exactitude des fichiers de configuration, des bibliothèques, etc. Dans certains cas, vous pourrez avoir à restaurer des choses dans un ordre précis ; vous aviez pris des notes pendant la sauvegarde, n'est-ce pas ? ;-)
Vérifier les permissions sur les fichiers et les répertoires pour être sur que l'accès n'est ni trop restrictif ni trop libre. Je trouve que la Slackware laisse un environnement trop ouvert à mon gout, donc je me promène en changeant les 755 en 711 pour les exécutables dans les répertoires bin/ et autres choses du genre. Ou même en 700 pour ceux des répertoires sbin/. Une attention particulière est nécessaire si vous avez un serveur FTP ; mais vous y avez alors probablement déjà pensé. :)
Ça tourne et ça fonctionne. Pendant un petit moment, il y aura probablement des détails à régler, mais le gros du travail est fait. Réjouissez-vous !
VOUS UTILISEZ CES INFORMATIONS À VOS RISQUES ET PÉRILS !
(Voir le désistement de responsabilité au début du document.)
Je remercie Zoltán Hidvégi pour sa contribution au contenu de ce mini-HOWTO.
Ce document a été traduit par Benoît Sibaud (pas d'adresse fixe, cherchez dans les news). NdT : N'hésitez pas à user et à abuser des HOWTO et Mini-HOWTO, ils sont là pour ça. Certaines parties de ce document sont décrites en détails dans d'autres HOWTO et Mini-HOWTO.