Situation de départ

  • Le but était de faire 'une mise à jour de Xorg sous Gentoo.
    • Pour ma part, il s'agissait de passer le serveur Xorg de la version 1.3 à la version 1.6.5.
  • Avis aux mécréants utilisateurs d'autres unixeries que Gentoo : continuez à lire, ceci concerne au moins également FreeBSD et Arch-Linux.



Echauffement

  • Installer Xorg implique souvent la mise à jour d'autres paquets.
  • Avant même le passage au paquet xorg-server, nous rencontrons une erreur.
  • La libpciaccess (en update) essaie d'installer un exécutable (scanpci) mais refuse de remplacer la version précédente.
    • Cet exécutable provoque un conflit, car c'est un autre ebuild qui a construit la version précédente.
    • On ne peut donc pas le supprimer sans réfléchir, car cela risquerait de casser l'autre ebuild.
  • Laissez tomber la méthode de résolution suggérée dans les messages, et faites plutôt:
    • equery b scanpci : vous obtenez le nom du paquet qui contient l'ancienne version à remplacer.
    • Il s'agissait du Xorg que vous tentez d'updater. Ma méthode (votre avis peut varier) : emerge -C xorg-server
  • Une fois ceci rêglé, vous pouvez relancer la mise à jour de xorg-server.



Plus de clavier, plus de souris

  • Pour le reste, la compilation, se passe plutôt bien.
  • Un emerge -va nvidia-drivers plus tard, Xorg démarre enfin.
  • Et là, plus de souris (huho) ni de clavier (haha).



Rendez moi mon clavier! (et ma souris aussi!)

Sortie de Xorg
  • Alors là, attention, c'est technique.
    • Appuyez pendant 5 secondes sur le bouton marche/arrêt du PC.
    • Si vous avez ACPI dans le noyau avec un script sur le bouton marche/arrêt, vous êtes sauvé et la solution déplorable de la ligne du dessus ne sera pas nécessaire.
    • Les heureux utilisateurs d'un réseau local pourront également faire un ssh sur la machine coincée. Beaucoup plus propre, mais nécessite un cable réseau et un autre PC (et un daemon sshd sur la machine bloquée).


Divination avec les logs
  • Après le reboot, et en supposant que vous n'avez pas eu de problème de journalisation, vous vous retrouvez à nouveau devant la console.
    • Si vous n'avez pas de chance, X est relancé aussi sec. Dans ce cas, il va falloir changer le niveau de démarrage de votre Linux.
  • Dans le log de Xorg, nous trouvons la source du problème (je ne vous montre que la partie concernant le clavier, la même chose est observable pour la souris):

$~  less /var/log/Xorg.0.log
(II) LoadModule: "kbd"
(II) Loading /usr/lib/xorg/modules/input//kbd_drv.so
(II) Module kbd: vendor="X.Org Foundation"
        compiled for 1.3.0, module version = 1.1.0
        Module class: X.Org XInput Driver
        ABI class: X.Org XInput driver, version 0.7
(EE) module ABI major version (0) doesn't match the server's version (4)
(II) UnloadModule: "kbd"
(II) Unloading /usr/lib/xorg/modules/input//kbd_drv.so
(EE) Failed to load module "kbd" (module requirement mismatch, 0)


Parenthèse pour les paresseux
  • Si vous n'avez pas fait de mise à jour de Xorg depuis vraiment très longtemps, il se peut que vous ayez un autre problème.
  • En effet, dans la config de Xorg, les devices ont changé de nom à un moment donné.
  • Vérifiez donc que votre clavier et votre souris ont bien le driver convenable.

Section "InputDevice"

    Identifier  "Keyboard1"
    Driver      "kbd"

(snip)
    Identifier  "Mouse1"
    Driver      "mouse"

  • Je ne saurais en dire plus à ce sujet, car je n'ai que de vagues souvenirs de ce problème.
    • De toutes façons, le problème a dû disparaitre de lui-même, depuis le temps. (l'optimisme est rare de nos jours, sachons le cultiver.)


Revenons à nos moutons
  • Il vous manque simplement deux mises à jour, oubliées par emerge.
  • emerge -va xf86-input-keyboard
  • emerge -va xf86-input-mouse
  • A noter que le problème se posera probablement également avec votre joystick, votre tablette graphique, et autres périphériques d'entrée.
    • Un simple eix xf86-input vous en convaincra aisément.



Keyboard not found. Press F1 to continue.

  • J'ai profité de mon clavier retrouvé pour écrire ce billet.
  • Comme je ne vais pas non plus tout faire, je vous laisse écrire les commentaires.