Compiler un kernel pour une architecture différente (crosscompiling)
Il y a longtemps que j'ai cessé de m'en tenir aux kernels fournis par les distributions, pour diverses raisons. Cela dit, il n'est pas évident de compiler un kernel sur un netbook, l'expérience peut être relativement longue... surtout lorsqu'on a une autre machine qui pourrait très bien le faire à la place. Mais c'est tout à fait faisable et je dirais même souhaité. La procédure est simple en plus. Alors voici mon expérience que je partage avec vous.
J'ai une tour qui tourne avec un processeur Phenom (donc AMD, Phenom, 64 bit, architecture x86_64). J'ai aussi un netbook qui tourne avec un processeur différent (Intel, ATOM, 32 bit, architecture i386). Remarquez les architectures. Ce sont les termes utilisés sous Linux pour distinguer une architecture 32 bit (i386) d'une architecture 64 bit (x86_64). Pour une architecture différente (exemple ARM -> "arm" ou PowerPC -> "ppc"), d'autres termes existent et doivent être employés. Ces paramètres serviront lors de la configuration et de la compilation pour spécifier que je désire compiler pour une architecture ou une autre.
Premièrement, téléchargez le kernel que vous désirez compilez (ainsi que les patches au besoin), décompressez et appliquez les patches (j'assume que vous savez comment faire, sinon Google pourra vous aiguiller). Ensuite, dans un terminal, rendez vous dans le dossier du code source du kernel.
/usr/src/linux-x.y.z
Le truc maintenant est de créer des dossiers différents selon l'architecture que vous désirez compiler. Par exemple, j'ai la hiérarchie suivante dans mon dossier d'utilisateur :
~/projects/kernel
~/projects/kernel/AMD64
~/projects/kernel/ATOM
Lorsque l'on compile un kernel, il est possible de spécifier un dossier de sortie pour chaque étape, ce qui évite d'utiliser l'utilisateur "root" ou la commande sudo. C'est également plus sécuritaire au niveau des droits d'accès. Cependant, il faudra alors spécifier le dossier de sortie pour chaque étape de la compilation et de l'installation du kernel. Pour y parvenir, il faut utiliser l'option O="chemin/du/dossier". Attention, il s'agit d'un "O" comme dans le mot "Output". Vous comprendrez que ma compilation pour mon processeur Phenom ira dans AMD64 et celle pour mon netbook ira sous ATOM.
Normalement, je pars de la configuration déjà existante d'un kernel que je modifie ensuite selon mes besoins. Remarquez que je demande également d'utiliser jusqu'à 12 tâches en parallèle pendant la compilation (-j 12). Donc, je commence par :
make -j 12 ARCH=architecture O=~/projects/kernel/dossier clean
make -j 12 ARCH=architecture O=~/projects/kernel/dossier oldconfig
La première étape nettoie mon dossier et la seconde utilise mon ancien fichier de configuration ".config" qui se trouve dans le dossier de sortie (O=...). Si aucun fichier de configuration n'est disponible dans le dossier, celui du kernel présentement en fonction sera utilisé.
Ensuite, si vous avez des modifications à faire à votre configuration, c'est le moment. Il existe différentes façons, mais je préfère "gconfig".
make -j 12 ARCH=architecture O=~/projects/kernel/dossier gconfig
Ajustez les paramètres selon vos besoins. Pour ma part, je modifie le type de processeur pour que ça corresponde à celui de l'architecture pour laquelle je désire compiler (Processor type and features -> Processor family -> Intel Atom ou Opteron/Athlon64/Hammer/K8).
Une fois cela terminé, il est temps de lancer la compilation proprement dite.
make -j 12 ARCH=architecture O=~/projects/kernel/dossier
La compilation débutera et les fichiers créés le seront dans le dossier de sortie spécifié par O=...
Lorsque la compilation est terminée, il faut l'installer. D'abord, si vous avez compilé un kernel pour une architecture différente, mon netbook par exemple, je dois copier le dossier de sortie ET le code source sur l'ordinateur désiré. Ensuite, il suffit de lancer l'installation des modules et du kernel.
sudo make -j 12 ARCH=architecture O=~/projects/kernel/dossier modules_install install
N'oubliez pas d'être "root" ou d'ajouter "sudo" pour cette étape, sans quoi vous ne pourrez pas faire votre installation.
Il ne reste qu'à mettre à jour LILO ou Grub (ou votre gestionnaire de démarrage préféré).Dans mon exemple, lorsque je compile sur mon ordinateur 64 bit pour mon netbook, j'utilise les paramètre ARCH=i386, je m'assure que mon fichier de configuration .config spécifie un kernel Intel Atom et le tour est joué.
N'hésitez pas à poser vos questions.
Dernière modification le 24/11/2010 @ 14:38 par Alexandre