Articles avec le tag ‘chroot’
20100609 – Quelles leçons pourrions nous tirer d’une mise à jour foireuse d’une Debian Sid
Éviter de présenter simultanément la mise à jour des paquets importants du système avec celle des gros gestionnaires de fenêtres (KDE et Gnome) (message aux mainteneurs Debian si par un heureux hasard l’un d’eux nous lisait) :
Comme je l’ai lu ailleurs, je suis d’accord pour dire qu’une Debian Sid représente un bon compromis entre stabilité et fraîcheur des mises à jours (quotidienne, contrairement aux distros classiques qui font des pas de plusieurs mois mais vous offrent en contre-partie un assemblage testé).
Sauf qu’en plus de ces mises à jours quotidiennes des paquets, en moyenne une fois par an vous tombe dessus une avalanche de paquets liés à de nouvelles versions de KDE ou Gnome. Le souci c’est qu’au milieu de ces innombrables paquets viennent se mêler des mises à jours simultanées de paquets importants qu’il est difficile/pénible de dissocier du reste (du fait des dépendances entre paquets).
Pour exemple, lors de cette récente migration vers KDE 4.4.4, j’ai dénombré ces mises à jour simultanées (paquets importants) : bsdutils, dpkg, e2fslibs, e2fsprogs, grub2, grub-common, grub-pc, initramfs-tools, initscripts, libc6, libc-bin, libcomerr2, liblzma2, libpopt0, libsepol1, libss2, libssl0.9.8, libtasn1-3, libuuid1, locales, mount, sysvinit-utils, sysv-rc, udev, util-linux, vim-common, vim-tiny, xz-utils et je dois en oublier un ou deux encore … sans parler des mises à jour de versions dérivées du noyau 2.6.32 (nous ne sommes pas arrivé au 2.6.35
.
En mettant tout çà à jour d’un coup, nous mettons toutes les chances de notre côté d’arriver à un beau plantage au milieu de nulle part, avec des paquets à moitié configurés, sans accès Xorg, sans accès internet, avec une console aride comme principal outil, nous offrant aussi le plaisir indescriptible du retour au papier et au bon vieux crayon pour noter les messages importants lorsqu’on en a le temps (si vous avez en plus des soucis avec les locales – ce qui a été en plus mon cas cette fois-ci).
Ajoutez que dans bien des cas, le système ne démarre plus, que cette console est celle obtenue à partir d’un CDROM de récupération/netinstall Debian, avec un bash minimaliste (où la ré-édition des lignes est parfois foireuse), que nano l’éditeur de texte ne fonctionne pas dans certains cas (contrairement à vi qui est encore plus aride
, qu’après chaque test de démarrage infructueux il faut reprendre le démarrage à partir du CDROM, recommencer éventuellement le paramétrage réseau (si vous souhaitez installer éventuellement d’autres paquets complémentaires), recommencer les montages, que le changement de version de paquet à l’aide de la commande dpkg nécessite de saisir des noms de paquets à rallonge, etc …et vous obtenez un tableau assez fidèle
.
L’autre souci c’est qu’au lieu de vous retrouver avec une piste de recherche (vous venez de mettre à jour 2 paquets importants la veille : vous constatez un dysfonctionnement, pas besoin d’aller chercher plus loin pour réparer), vous vous retrouvez avec autant de pistes potentielles que de paquets en rapport.
Certains dirons qu’une Debian Sid est faite pour les tests (en plus de la version ‘Expérimentale’). C’est à la fois vrai et tellement dommage, car le restant de l’année elle fonctionne vraiment comme une horloge et elle est certainement très près du Nirvana des distros par ses mises à jours régulières, sa facilité d’emploi (en dehors des situations énumérées ci-avant) et son catalogue.
A l’heure où l’on veut attirer les utilisateurs vers Linux, çà ne vaudrait pas le coup de les bichonner un peu en leur évitant ces grosses galères ?
Imaginez un novice qui se retrouve planté avec tous ces paquets importants en vrac et un système qui ne redémarre plus.
Il lui faudra une sacré dose de ténacité pour résister à l’envie de reformater son disque et recommencer son installation, voir de laisser tomber Linux.
Une solution simple ?
Séparer d’un mois ou deux les mises à jours des paquets importants (et pourquoi pas : à des dates données) quitte à retarder d’autant la disponibilité des nouvelles versions des principaux gestionnaires de fenêtre (on est pas à un mois près) en essayant de fractionner ces groupes de paquets importants pour qu’ils ne soient pas mis à disposition tous en même temps.
En ce qui me concerne :
Chaque souci de ce genre me fais grincer des dents mais c’est aussi l’occasion d’en apprendre un peu plus sur les rouages de cette mécanique de précision en perpétuelle évolution.
Un formatage bien ordonné serait peut-être parfois plus rapide mais certainement moins formateur (et plus rageant).
Qu’est-ce que j’ai appris cette fois-ci ?
- tout d’abord, la libc6 en version 2.11.1-2 fonctionne (contrairement à la version 2.11.1-1)
,
- cette grosse mise à jour aura été bien foireuse à cause des noyaux 2.6.32-5 et 2.6.32-3 (je n’ai pas noté les versions exactes de ces paquets) qui ne fonctionnent plus après les dernières mises à jour. Néanmoins le noyau linux-image-2.6.32-2-686-bigmem en version 2.6.32-8 fonctionne bien (en montage RAID).
A ce sujet, une leçon à retenir : lorsque le système plante après grub, penser à tester tous les noyaux disponibles (il est intéressant de garder au moins 3 ou 4 noyaux disponibles sous grub en cas de souci de démarrage avec l’un d’entre eux).
Je n’en ai testé que deux (les plus récents : 2.6.32-5 et 2.6.32-3), ai constaté que le système plantait (message répété : « /bin/sleep : not found » suivi d’un shell simplifié), que le répertoire ‘/dev/disk/by-uuid’ n’existait pas (grâce à grub, on peut à présent naviguer et saisir des commandes dans ce shell même si le disque principal n’est pas monté. J’ai alors pensé à un bogue du paquet libuuid1 faisant parti de la mise à jour et ai donc abandonné la piste du noyau foireux, en n’effectuant mes autres tests qu’avec le noyau 2.6.32-5.
Grosse erreur
) Si j’avais été plus loin dans mon essai, j’aurai vu que le 2.6.32-2 (celui que j’utilise en ce moment-même) situé juste en dessous dans le menu de grub fonctionnait bien !
Ça m’aurait évité une réinstallation (pour tests) de plusieurs versions de libuuid1, de grub (foireuse, qui m’a donné là aussi du fil à retordre), des sysv* et des libc …
- des choses que j’avais déjà appris mais oublié.
Une révision sur la syntaxe des options des commandes apt et dpkg
)
- mémo pour moi pour une prochaine fois éventuelle
:
- pour changer une version de libc, l’ordre de mise à jour avec dpkg est le suivant : libc-bin > libc-dev-bin > libc6 > libc6-dev > locales.
- pour retrouver le réseau, lancer successivement les commandes ‘ifconfig eth0 192.168.0.2 netmask 255.255.255.0 up’ et ‘route add -net default netmask 0.0.0.0 gw 192.168.0.3 dev eth0
- en cas de soucis avec les locales,
mon fichier /etc/environment contient :
LANG= »fr_FR.UTF-8″
LANGUAGE= »fr_FR »
mon fichier /etc/default/locale contient :
LANG=fr_FR.UTF-8
lancer la commande dpkg-reconfigure locales puis choisir fr_FR.UTF-8 UTF-8, pour « jeu de paramètres régionaux actif par défaut » prendre fr_FR.UTF-8
Pour tester si le problème est résolu, lancer : ‘perl -v’ (les messages doivent avoir disparu).
- la mise à jour des paquets demande souvent de pouvoir afficher un menu avec des choix.
Si vous aviez choisi un terminal graphique (kde ou gnome) par défaut, s’il ne peut accéder à ce terminal, en principe il bascule automatiquement sur un terminal texte. Dans mon cas, pour une raison X (probablement liée à des paquets laissés non configurés), il n’y est pas parvenu, du coup la boîte de dialogue n’apparaissait pas, laissant le paquet dans une configuration inconnue.
L’éditeur nano a lui aussi besoin d’un terminal spécifique. S’il n’y arrive pas avec le terminal courant, il affiche le message « Unknown terminal : bterm ».
La solution est toute simple : saisir ‘TERM=vt100;export TERM’.
Ensuite faire un ‘dpkg-reconfigure debconf’ et choisir l’interface Dialogue pour régler le problème de manière durable.
- last but not least : il vaut mieux effectuer le chroot à partir du menu dédié du netinstall Debian que de le faire manuellement comme je le faisais précédemment (voir ci-dessous : 63ème révision).
Lorsque le netinstall Debian démarre, aller dans les menus : Advanced options > Rescue mode > (choix du disque de démarrage sur lequel il va chrooter, exemple : /dev/sda1) > Exécuter un shell dans /dev/sda1.
En effet dans le cas d’une réinstallation de grub (test que j’ai souhaité effectuer vu mes doutes), un chroot manuel a conduit à un plantage de grub car il ne trouvait pas de périphérique disponible dans ce chroot (il y a des techniques pour qu’il reconnaisse des liens dynamiques d’après ce que j’ai lu, mais çà m’a semblé compliqué).
Alors qu’avec le chroot effectué via ce menu ‘Rescue mode’, cette réinstallation de grub s’est passée sans encombres.
20100531 – Oups : problème avec notre PC de rédaction du Bottin …
Problème de mise à jour avec notre PC :
Désolé nous allons avoir du retard pour cette version : en rentrant d’une semaine de vacances (sans toucher à un PC, donc cette révision était de toute façon assez light) j’ai mis à jour ma Debian Sid avec les nouvelles versions disponibles. Et enfer & damnation : au redémarrage du PC ce matin : un plantage en bonne et due forme ! Non seulement il plante au démarrage mais lorsque j’effectue un chroot à partir d’un netinstall Debian (en passant : j’ai dû aussi retélécharger un netinstall tout frais car l’ancien ne voulait pas me monter mes partitions formatées en ext4), celui-ci fonctionne mais impossible d’effectuer un simple ‘ls’ ou un ‘mount’ sur le disque chrooté sans obtenir le message ‘Segmentation fault’.
Après une journée complète à rechercher la solution (la nouvelle libc6 en version 2.11.1 est fortement suspectée, mais la recopie d’une ancienne libc6 récupérée sur un autre PC n’a pas suffit) nous avons finalement résolu le problème de manière sauvage : nous avons recopié le répertoire /lib complet de l’un de nos autres PC sous Debian Sid (et par chance non mis à jour) sur une clé USB puis écrasé tous les fichiers du répertoire /lib de notre PC en panne. Un chroot sur son ‘/’ puis un ‘ls’ fonctionne à nouveau, et au redémarrage suivant : çà marche !!!
Cerise sur le gâteau : les grappes ne sont même pas désynchronisées (vérif par un ‘$ cat /proc/mdstat’).
Pas très propre mais fonctionnel !
Ça nous a permis de tester la procédure de dernier recours par chroot à partir d’un netinstall Debian sur des disques formattés en ext4 et montés en RAID1 : çà marche nickel ! Il ne faut pas chercher à monter les disques séparément mais les monter en /dev/md0, /dev/md1, … Chaque grappe /dev/mdx est bien reconnue comme un disque unique par le netinstall.
Si vous même avez un problème de ‘Segmentation fault’ après une mise à jour de librairies, vous saurez quoi faire …
Bon du coup on va consacrer 2 ou 3 soirées de plus à remettre à jour le Bottin parce que là c’est vraiment léger
.
20100530 – 63ème révision : le calme est revenu …
Le Bottin des Jeux Linux en ligne vs Le Bottin des Jeux Linux : épilogue …
Nous n’avons pas trouvé de terrain d’entente, chacun campant sur ses positions.
L’ultime point de désaccord a été la mise à disposition du code source de ses données.
C’est un point auquel j’étais attaché afin de ne pas risquer que mon travail ne finisse enfermé dans un outil hermétique (non pas aux mises à jours, mais à la libre diffusion).
Dommage car il s’agissait d’un très beau site communautaire (les contributeurs étaient au rendez-vous en quantité et en qualité) et d’un bel outil pour la promotion du libre mais si le Bottin passe en ligne, je souhaite au minimum que son source reste accessible à d’autres projets et idées, c’est dans cet esprit en tout cas que je continue à le faire vivre.
Si vous souhaitez démarrer un projet utilisant les données du Bottin, n’hésitez pas à le faire mais les conditions minimum doivent êtres les suivantes :
- sa licence doit être GPL ou compatible (dans ce dernier cas, elle doit aussi imposer la mise à disposition du source pour le projet courant et les éventuels projets dérivés),
- son source doit être disponible en ligne (un lien vers un fichier ‘tar.gz’ ou autre fichier compressé non protégé contenant les données) et régulièrement mis à jour (une fois par trimestre semble raisonnable),
- vous en assurez la maintenance. Néanmoins si vous le souhaitez, si sa forme me plaît (c’est un loisir) et s’il est facile à maintenir, il est probable que j’y contribue,
- pour le reste vous faites ce que vous voulez, ce sera votre projet ou celui de la communauté si vous le souhaitez.
Libc6, libc6-dev et locales en version 2.11.1-1 : comment planter en beauté votre OS Linux en 3 paquets foireux …
Nous avons perdu une journée complète à réparer notre système suite à une mise à jour vers des paquets foireux (les fautifs sont cités ci-dessus). Deux jours après paraissait dans les dépôts les mêmes paquets en version 2.11.1-2 (non encore testé, nous préférions mettre l’accent sur la publication que de risquer une nouvelle fois de tout planter
.
Un peu d’histoire …
La bibliothèque C aussi dénommée glibc (WIKI) est utilisée par tout le système, son principal contributeur et mainteneur est Ulrich Drepper.
Suite à des tensions entre celui-ci et d’autres acteurs de notre OS, cette bibliothèque C a donné un fork qui lui-même a évolué vers la libc6 actuelle.
Rappel du problème …
Vous mettez à jour votre système, vous constatez certains dysfonctionnements sous KDE (des applications refusent de démarrer, puis plus moyen de redémarrer proprement Linux et au démarrage (forcé) suivant, il plante sans finir son démarrage.
Vous tentez d’effectuer un chroot à partir d’un netinstall Debian (Squeeze) (à graver sur un CDROM au préalable ou à partir d’un autre PC fonctionnel) :
il suffit de démarrer comme si vous vouliez installer une Debian et après l’étape de saisie du nom de la machine vous arrivez au menu de partitionnement, il suffit alors de sélectionner l’option ‘Revenir en arrière’, puis de dérouler le menu vers le bas jusqu’à l’option ‘Exécuter un shell (ligne de commande)’ et de valider.
De là vous montez la partition root de votre disque en panne par un ‘mount -t ext3 /dev/sda1 /mnt/’ (par exemple) puis vous faites ‘chroot /mnt’ et ‘mount -a’. Pour visualiser les montages vous pouvez saisir ‘mount’. En principe à cette étape, une fois vos réparations effectuées, vous démontez tout par un ‘umount -a’, sortez de votre ‘chroot’ par la commande ‘exit’, par sécurité vous lancez une mise à jour des disques à partir des caches avec la commande ‘sync’ et rebootez par un ‘reboot’ (reste à attraper le CD avant qu’il ne redémarre dessus, ce qui demande parfois un peu d’entrainement
).
Sauf que dans notre cas, la commande ‘mount’ comme la commande ‘ls’ donnent un joli message :’Segmentation fault’. Donc pas moyen de faire notre ‘mount -a’ pour réinstaller notre ancienne version de la libc avec un ‘dpkg -i’ dans le cache (/var/cache/apt/archives/’) …
Solution (bourrin) retenue et fonctionnelle …
Recopier le répertoire /lib complet de l’un de nos autres PC sous Debian Sid (et par chance non mis à jour) sur une clé USB puis écraser tous les fichiers du répertoire /lib de notre PC en panne. Ça permet de démarrer mais çà fini là aussi par planter. Il faut donc très rapidement (avant que çà plante sinon il faut recommencer) réinstaller la dernière version fonctionnelle des paquets, dans notre cas, j’ai fais (de mémoire) un ‘$ cd /var/cache/apt/archives/’ puis un ‘# dpkg -i libc6_2.10.2-4_i386.deb libc6-dev_2.10.2-4_i386.deb locales_2.10.2-4_all.deb’ (lancer un ‘$ ls -l | grep libc6′ par exemple pour retrouver la syntaxe exacte des paquets). Ceci fait, vous pouvez à nouveau respirer jusqu’à la prochaine mise à jour de ces paquets
).
Le Bottin des Jeux Linux révision 63 : une assez bonne révision (livrée en retard, mais je préfère une livraison en retard qu’une révision sans intérêt), consacrée à l’ajout de quelques jeux , à la reprise de commentaires de jeux et à quelques retouches de HOWTOs.
Au sujet de la version PDF du Bottin : nous attendons une nouvelle version de OpenOffice améliorant la rapidité de création des PDF (ils sont beaucoup trop longs à créer) pour vous livrer le Bottin à nouveau dans ce format.
Le site :
La fréquentation du site est en chute libre (-46%) : +695 visites pour cette 2ème quinzaine de Mai 2010, soit 36017 visiteurs depuis l’origine jusqu’à cette même date.
Les ajouts dans le Bottin :
Cette révision augmente le nombre de jeux Linux de 18 unités, ce qui nous fait un carnet d’adresses de quelques 1855 jeux Linux.
Nos coups de cœur de la période : Pyromaths, Kdiamond, Kigo, Knetwalk, LentilWars, Bwock, KØЯ,
Entrées : GPS Shogi, Granatier, Kigo, Kollision, Killbots, Kpeg, Korners, Dune Legacy, JavaScript Codebreaker, LentilWars, Bwock, DoomRL, Date Warp, Glest [mod - Total War], KØЯ,Pyromaths, RbVBA, sz81, Revenge of the Titans,
Changements de versions : Burgerspace, Gearhead-2, jClassicRPG, Bos Wars, Dolphin-emu, GNU FreeDink, DarkPlaces, Ditchers, Atomic tanks, Armagetron Advanced, Hexalate, B@ggle, Desmume, Domination, D2X-XL, GlestAE, The Legend of Edgar, PipeWalker, PySpaceWar, Tanglet, Wine, Shotgun Debugger, Pynagram, Stendhal, O.H.R.RPG.C.E., Typhon, Stormbaan Coureur, Wesnoth, Privateer Ascii Sector, Really Rather Good Battles In Space, QMC2,
Tests ou modifications de commentaires : GPS Shogi, 2H4U, 8Kingdoms, JmaPacman, Amoebax, Ardentryst, Atomic Worm, Dolphin-emu, Freeciv, Gens, Gens/GS, Gondola, HoDoKu, Kpatience, Kdiamond, Kigo, Kollision, KsirK, Kbattleship, Kbounce, KfourInLine, Killbots, Klines, Knetwalk, ColorCode, Atomic tanks, Armagetron Advanced, Dune Legacy, JavaScript Codebreaker, LentilWars, Eschalon – Book II, Hexalate, Gillo, Bwock, Desmume, HedgeWars, Domination, FreeSpace 2 SCP, Aquaria, Gish, GlestAE, Glest, KØЯ, PipeWalker, PySpaceWar, Pyromaths, Shotgun Debugger, Stendhal, Peg-E, O.H.R.RPG.C.E., Typhon, OpenRedAlert, Stormbaan Coureur, Pipepanic, Wesnoth, Privateer Ascii Sector, Xonotic, Tremulous,
Suppressions : Aucune,