Notice: this is an archived website / Note: ceci est une ancienne page du site archivé

Debian Lenny: CPU VIA C3 et noyau linux 2.6.2x-686, attention!

Aujourd’hui j’ai voulu passer ma petite machine basée sur une carte mère mini-itx Via Epia M10000 (processeur Via C3 à 1Ghz) à la nouvelle version de Debian, j’ai nommé Lenny, dont les paquets ont été gelés et qui va passer en stable sous peu.

La procédure d’upgrade est des plus simples:
faire un apt-get update && apt-get upgrade pour mettre à jour tout ce qu’il faut de votre version etch (pas spécialement nécessaire, mais je préfère le faire).
Puis apt-get autoremove && apt-get clean pour nettoyer ce qui traine d’anciens paquets résiduels.
Remplacer etch par lenny dans /etc/apt/sources.list. Puis apt-get update pour mettre à jour la liste des paquets, suivi d’un apt-get dist-upgrade pour lancer l’upgrade.
J’ai mis de côté les fichiers de configuration des serveurs (mysql, apache, samba, etc…) car je sais qu’il va me demander lors de l’upgrade si je veux garder les anciens ou installer les nouveaux. Par défaut lors que je vois qu’il y a trop de modifs, j’installe les nouveaux et je reconfigure ensuite.

L’upgrade de debian est en général un bonheur. Mais pas aujourd’hui…

Tout se passe bien, jusqu’au moment où la console me sort ces lignes.

Processing triggers for initramfs-tools ...
update-initramfs: Generating /boot/initrd.img-2.6.26-1-686
Errors were encountered while processing:
netatalk
E: Sub-process /usr/bin/dpkg returned an error code (1)

puis retour du curseur.

Je désinstalle netatalk qui devait traîner sur ma machine lorsque j’avais essayé mt-daap et je redémarre ma machine naïvement. Plus de réponse de la machine… obligé d’y brancher un écran et un clavier pour voir ce qu’il s’y passe.
Et là, suprise:

kernel 2.6.26-1-686

Un reboot en visuel m’indique que grub démarre bien et que cet écran intervient après le choix automatique du nouveau noyau 2.6.26-1-686. Pour l’ancien noyau de etch 2.6.18-6-686, aucun problème: la machine démarre et fonctionne. Donc c’est bien ce nouveau noyau qui pose problème.
Je tente de faire manuellement la procédure update-initramfs qui avait planté. Qu’il s’agisse de la mise à jour, l’effacement de l’initramfs et sa recréation pour le noyau, rien n’y fait: impossible de démarrer la machine sur celui-ci, toujours le même écran de bug.

Je décide de réinstaller le noyau avec apt-get: rien. De le désinstaller, vider les paquets en cache (pour le re-télécharger) puis l’installer avec apt-get: toujours rien.

La recherche sur le net à propos de ce qui m’est affiché à l’écran « Bug Int 6 RC2 » m’amène plutôt à penser à un problème matériel (étrange, car je partais plus sur la piste de l’upgrade plantée). Mais ayant déjà eu nombre de problèmes avec d’autres cartes fabriquée par VIA (notamment les Epia 800 et 5000), je me dis que c’est fort probable.
Ceci m’incite à demander à Google ce qu’il pense de cette combinaison « via epia kernel 2.6.26-1« , et cette recherche me retourne des réponses donc je suis sur la bonne piste. Notamment les bugs 492721, 464962 et 463606 traitent de ce problème.

Une petite citation en explique l’origine:

P6_NOPs are definitely not supported on some VIA CPUs, and possibly (unverified) on AMD K7s. It is also the only thing that prevents a 686 kernel from running on Transmeta TM3x00/5×00 (Crusoe) series.

En gros, pour une seule instruction (les « long NOPs » ou « P6_NOPs »), ces processeurs ne sont donc plus supportés par le noyau Linux de Debian comme étant de la famille 686. Ceci affecte aussi certains processeurs comme les Pentium M lorsqu’ils sont utilisés avec certaines machines virtuelles.

La solution est soit d’installer un noyau pour processeur de la famille 486 avec le meta-paquet linux-image-2.6-486 en faisant apt-get install linux-image-2.6-486 ou bien se compiler son noyau 686 et d’y désactiver P6_NOPs en utilisant CONFIG_X86_GENERIC.

J’ai donc opté pour le moment (on verra plus tard) pour linux-image-2.6-486 qui m’a installé 2.6.26-1-486
Mon « uname -a »:

2.6.26-1-486 #1 Wed Aug 20 12:11:07 UTC 2008 i686 GNU/Linux

🙁