Une méthode simple pour compiler un noyau personnalisé sous Archlinux
Résumé
Je vais vous présenter ici une méthode pour créer un kernel personnalisé sous Archlinux.
Archlinux est une distribution GNU/Linux utilisant le gestionnaire de paquets pacman, qui permet comme tout ses homologues ou presque d'installer des paquets binaires prés-compilés et de gérer les dépendances entre eux.
Fort de la philosophie BSD à laquelle elle est attachée, tout les paquets binaires d'Arch sont générés à l'aide d'un outil de compilation et d'empaquetage similaire aux ports de BSD. Il est de ce fait simple de compiler ses propres paquets à partir des sources officielles, cependant, la configuration du kernel nécessite quelques petits aménagements, d'où le but de cet article.
Conventions de notation :
- # précède les commandes à lancer en root
- $ précède les commandes à lancer en utilisateur normal
ABS est l'outil permettant de récupérer les sources officiels d'Arch, nous allons l'installer :
# pacman -S abs
Puis nous récupérons l'arborescence des sources :
# abs
Pour faire un travail propre, nous allons régler les droits sur cette arborescence ; tout d'abord, nous créons un groupe abs :
# groupadd abs
Nous ajoutons ensuite notre utilisateur (ici CATS) dans ce groupe :
# gpasswd -a CATS abs
Pour finir, nous réglons les permissions sur l'arborescence d'abs :
# chgrp -R abs /var/abs && chmod -R 775 /var/abs
Afin de peaufiner nos futures compilations, nous allons modifier le fichier makepkg.conf
# vi /etc/makepkg.conf
La ligne CFLAGS correspond aux options passées à GCC, vous pouvez par exemple mettre :
CFLAGS="-march=native -mtune=native -O2 -pipe -fomit-frame-pointer"
La ligne CXXFLAGS correspond aux options passées à G++, vous pouvez par exemple mettre :
CXXFLAGS="${CFLAGS}"
MAKEFLAGS correspond au nombre de compilation à lancer en même temps lors de l'appel à la commande make, une solution assez optimale est de mettre le nombre de cpu + 1, par exemple pour un bi opteron 246 :
MAKEFLAGS="-j3"
Une fois ces formalités remplies, nous allons pouvoir copier les sources du kernel dans notre répertoire de travail :
$ mkdir /var/abs/core $ cp -R /var/abs/core/kernel26 /var/abs/local/core/
Pour commencer, nous allons nous placer dans notre répertoire de travail et regarder un peu ce qu'il contient :
$ cd /var/abs/local/core/kernel26 $ ls PKGBUILD config config.x86_64 kernel26.install kernel26.preset
Le PKGBUILD est le script de compilation et d'empaquetage, par défaut, il est prévu pour fonctionner avec des fichiers de configuration du kernel fournis par Arch, nous allons le modifier pour pouvoir le personnaliser :
$ vi PKGBUILD
Remplacez les lignes :
if [ "$CARCH" = "x86_64" ]; then
cat ../config.x86_64 >./.config
else
cat ../config >./.config
fi
Par :
if [ "$CARCH" = "x86_64" ]; then
cat ~/.config/kernel/config.x86_64 >./.config
else
cat ~/.config/kernel/config >./.config
fi
De cette façon nous allons pouvoir réutiliser nos fichiers de configuration et les sauver dans /home/CATS/.config/kernel, nous allons d'ailleurs créer ces répertoires :
$ mkdir ~/.config/kernel
Ensuite toujours dans le PKGBUILD, nous allons remplacer la ligne :
yes "" | make config
Par les lignes :
make oldconfig make menuconfig
Cette dernière ligne permet de lancer un outil de configuration basé sur ncurses, il faut donc l'installer :
# pacman -S ncurses
Ensuite il nous faut récupérer le fichier de configuration du noyau d'Arch :
$ cp config ~/.config/kernel
Ou
$ zcat /proc/config.gz ~/.config/kernel
Ceci fait, nous pouvons lancer la compilation :
$ makepkg
Après une séries de petites questions posée par le make oldconfig (surtout si vous utilisez un fichier de configuration issu d'une version plus ancienne du kernel), le make menuconfig vous permettra de tout configurer. Une fois la compilation finie, il ne reste plus qu'à installer le paquet fraichement généré :
# pacman -U kernel26-2.6.*.pkg.tar.gz
Et de rebooter :
# reboot
Si la nouvelle configuration vous convient, remplacez celle fournie par Arch par la votre :
$ cp /var/abs/local/core/kernel26/src/linux-*/.config ~/.config/kernel/config
Et si vous souhaitez gérer vos kernels à la main, modifier la ligne "IngorePkg" dans /etc/pacman.conf :
IgnorePkg = kernel26
De cette façon, pacman n'écrasera pas vos kernels par ceux d'Arch lors de la mise à jour.
Si votre Arch ne démarre plus, à l'aide d'un OS de secoure, montez vos partitions dans un chroot et réinstallez le kernel officiel.
Il est parfaitement possible de gérer son propre kernel sous Arch, il existe différentes méthodes et celle que je viens de vous citer est celle que j'utilise.
Elle n'est cependant pas parfaites sur plusieurs points : elle ne permet pas de gérer automatiquement de multiples versions du fichier de configuration, de plus, à chaque nouvelle compilation, vous êtes obligé d'effacer le répertoire src et donc vos fichiers objets par la même occasion, ce qui pour juste une simple modification de configuration, vous obliges à tout recompiler. Mais si vous pouvez vous accommoder de ces détails, cette méthode a l'avantage d'être simple et efficace, tout comme la philosophie Arch : KISS.
- Vous devez vous identifier ou créer un compte pour écrire des commentaires
Version imprimable
Envoyer à un ami


![Validate my RSS feed [Valid RSS]](/files/divers/images/valid-rss.png)

Commentaires récents
il y a 12 semaines 3 jours
il y a 13 semaines 5 jours
il y a 14 semaines 9h
il y a 14 semaines 3 jours
il y a 47 semaines 1 jour
il y a 1 an 11 semaines
il y a 1 an 11 semaines
il y a 1 an 18 semaines
il y a 1 an 21 semaines
il y a 1 an 23 semaines