La saison des marmottes

kernel perso
  • Nous voulons donc nous compiler un noyau personnalisé, et l'empaqueter proprement.
  • Afin d'ajouter un peu d'intérêt à la chose, nous allons aborder un cas que les noyaux génériques de Arch ne couvrent pas.
    • Il s'agit d'ajouter au noyau le patche TuxOnIce, afin de permettre l'hibernation.
    • Dans AUR, il y a bien un build s'occupant de cette tâche. Il ne fonctionne hélas pas du tout. Je vous laisse vous référer aux rapports de bugs Arch pour plus de précisions (c'est à dire que vous apprendrez qu'il est urgent d'attendre une nouvelle version du noyau).
    • Les impatients devront donc compiler eux-même leur noyau. C'est ce que nous allons faire, et nous en profiterons au passage pour expérimenter une ou deux nouvelles pratiques.
  • Vous avez tous une carte 3D ? Sous Linux, NVidia est malheureusement le passage obligé. Nous ajouterons donc la création d'un paquet contenant les derniers drivers propriétaires.
  • Dans ce billet, je n'aborde que les grandes lignes des manipulations générales, et je n'entre dans les détails que pour les spécificités Arch.
    • Par exemple, si vous ne savez pas patcher les sources du kernel avec TuxOnIce, lisez la documentation du site web du projet.


Et la marmotte ?
  • Je viens de voir passer la marmotte, et elle trainait un gros édredon. Il ne va pas falloir trop compter sur elle.
  • En d'autres termes, vous allez devoir faire le paquet vous même.



Préparation

Récupération des sources
  • Récupérez le dernier noyau stable sur kernel.org.
    • Pour l'instant, il s'agit du 2.6.36.
  • Les sources sont placées dans /usr/src.
    • Certaines personnes vous diront de les mettre dans votre home. Ignorez les.
  • N'oubliez pas de faire un lien symbolique /usr/src/linux pointant vers votre répertoire de sources kernel.
    • ln -s linux-2.6.36 linux
  • Récupérez le patch de TuxOnIce, et placez le dans le répertoire du kernel à préparer.


Configuration du kernel
  • Commencez par patcher le kernel avec TuxOnIce.
    • patch -p1 < tuxonice.patch
  • Supprimez les reliques et scories éventuelles. A faire même si vous venez de désarchiver les sources.
    • make mrproper
  • Ensuite, il s'agit de choisir soigneusement les options du noyau (n'oubliez pas l'hibernation, ça serait bête)
    • make menuconfig
    • Si vous voulez hiberner en utilisant le swap, pas la peine de préciser l'emplacement de celui-ci dans les options touchant à l'hibernation du kernel (cela ne concerne pas TuxOnIce, mais le support interne du noyau pour l'hibernation. Son utilisation est déconseillée.).
    • La configuration part dans les fichier .config, qui est effacé à chaque make mrproper. N'oubliez pas de le sauver sous un autre nom, on ne sait jamais.



Définition du paquet Arch

  • makepkg utilise deux fichiers de configuration, qui seront nommés ainsi pour l'occasion:
    • PKGBUILD : pour la construction du paquet.
    • kernel26.install : pour l'installation du paquet.


PKGBUILD
  • Vous n'aurez pas grand chose à modifier.
    • En fait, je n'ai modifié que le nom du paquet, et le numéro de version du kernel.

pkgname=kernel26-jseb
basekernel=2.6.36
pkgver=2.6.36



kernel26.install
  • J'ai simplement changé ces deux lignes:

KERNEL_VERSION="2.6.36"
LOCAL_VERSION=""



Compilation

Pour les sensibles avec plusieurs coeurs
  • Si vous avez un processeur multicoeur, ne lancez pas directement makepkg .
    • Faites plutôt un make -j n+1 , où n est le nombre de cpu disponibles (qu'il s'agisse de CPU physiques, de cores, ou de threads).
    • Par exemple, pour un quad-core classique: make -j 5.
    • pour un Xeon 5520 (quad-core, deux threads par core): make -j 9.


Les insensibles peuvent commencer ici
  • Lancez makepkg qui va créer le paquet.
    • Si vous avez préparé la compilation comme décrit ci dessus, ça sera rapide: GCC n'aura plus qu'à linker les fichiers objets.
    • Dans le cas contraire, il faudra être plus patient. Mais si vous n'avez pas inclus n'importe quoi dans le noyau, la compilation ne devrait pas dépasser dix minutes.



Installation du noyau

  • pacman -U chemin/du/paquet/kernel-bidule.xz
  • Ajoutez à la config de grub une entrée pour votre nouveau noyau, puis rebootez.
  • Ca boote encore ? Parfait!


Test de l'hibernation

  • Vérifiez que l'hibernation fonctionne depuis la console:
    • n'oubliez pas d'installer le script d'hibernation si ce n'est déja fait:
    • pacman -S hibernate-script
  • Après vous être assuré que la méthode employée est bien le suspend2disk, vous pouvez lancer la commande hibernate.
    • Je ne détaille pas non plus la configuration de TuxOnIce, la doc est fort bien faite et il n'y a pas grand chose à raconter.
    • Assurez-vous toutefois d'activer la compression.
    • Si vous utilisez le swap pour le suspend2disk, plus besoin de préciser l'emplacement en paramètre du noyau, dans grub.
  • Il ne reste plus qu' à installer le driver nvidia pour pouvoir lancer X.



Haine vidia

  • Les drivers proprios nvidia, c'est toujours un grand moment d'émotion.
    • Ne nous plaignons pas, ils fournissent des drivers corrects, eux (suivez mon regard, je ne vise personne).


Simplifions-nous la vie
  • Pour éviter d'y passer trop de temps, je me suis contenté de récupérer le build de nvidia-ice (situé dans AUR).
    • yaourt -G nvidia-ice
  • Il n'y a pas grand chose à modifier dans PKGBUILD :
    • la version du kernel.
    • les dépendances : j'ai enlevé la dépendance sur le kernel, mais j'aurais pu tout aussi bien modifier le nom. Votre avis peut varier.

#!# pkgname=nvidia-ice
pkgname=nvidia-jseb

#!#_kernver='2.6.35-ice'
_kernver='2.6.36'

 (...)

#!#depends=("kernel26-ice" "nvidia-utils=${pkgver}")
depends=("nvidia-utils=${pkgver}")


  • Même principe pour nvidia-ice.install : modifier la variable KERNEL_VERSION si nécessaire.
  • Je voudrais vous en dire plus, mais j'ai effacé mon répertoire de build après avoir déplacé le paquet (un réflexe idiot).
    • Je pense toutefois qu'il n'y avait pas grand chose de plus à raconter.
  • Pour finir, lancez makepkg dans le répertoire contenant le pkgbuild.
    • Si tout s'est bien déroulé, vous avez un magnifique paquet nvidia prêt à être installé avec:
    • pacman -U votre_driver_nvidia.xz



Test final (préparez l'oreiller)

  • Vous devriez maintenant être sous X.
  • Une console root, un hibernate ...
  • C'est terminé. Et ça marche!
  • Retirons-nous sur la pointe des pieds, afin de ne pas réveiller la marmotte qui a commencé son hibernation.