Skip to main content

Historique: compiler un noyau linux 3.x pour la mao

Aperçu de cette version: 19

page en cours de rédaction

ancienne page : Compiler un noyau 2.6RT
sujet lié : wiki noyau RT



Introduction

Compiler un noyeau soi même n'est généralement pas un tâche obligatoire. La plupart des noyeaux préemptfs fournis avec grande majorité des distributions devraient convenir pour l'utilisation d'un système dit MAO. Cependant pour des raisons de configuration matérielle, parce qu'on attends une fonctionnalité qui se trouve dans le dernier noyau ou tout simplement par curiosité, certaine personnes se verront obligé de faire un petit détour dans l'univers des compilateurs.

Même si aujourd'hui grâce à l'automatisation du processus, cela devient une tâche aisé, n'oubliez pas que ceci est une manipulation relativement avancée où il faut être sûr de ce que l'on fait. Cet article se focalise donc sur les parties importante concernant la MAO pour que chaque débuant puisse optimiser sont système avec le moindre effort. Cet article n'est pas un tutorial générale sur la compilation d'un noyau Linux. Pour ceci veuillez vous référer au multiples pages disponibles sur Internet.

Prérequis

Avant de commencer, assurer de posséder une distribution récente qui fonctionne déjà sous un noyau 3.x. N'espérez pas compiler un kernel 3.x sous un système 2.6!

Pour compiler un noyau, il vous faudra télécharger quelques outils et librairies, soit notamment le compilateur gcc et les "headers" du noyau de votre distribution, nous aurons ainsi une configuration sur laquelle nous baser. De plus nous allons préparer un dossier où nous allons télécharger et compiler notre noyau.

Ubuntu 11.10:
A COMPLETER je suis plus trop sûr si c'est tout ... 😛
Copy to clipboard
~~blue:$~~ sudo apt-get install build-essential linux-headers-$(uname -r) wget patch libncurses5-dev ~~blue:$~~ sudo adduser $(whoami) src

Il se peut que vous deviez refermer et réouvrir la session pour que vous fassiez réellement parti du group src pour avoir le droit d'effectuer les commande suivantes:
Copy to clipboard
~~blue:$~~ mkdir /usr/src/linux-rt/ ~~blue:$~~ cd /usr/src/linux-rt/

Sinon demandez à root un petit coup de main:
Copy to clipboard
~~blue:$~~ sudo mkdir /usr/src/linux-rt/ ~~blue:$~~ sudo chown root.src /usr/src/linux-rt/ ~~blue:$~~ cd /usr/src/linux-rt/


Téléchargement des sources et patchage du noyau

Si vous avez suivi les opérations précédentes, vous devriez vous trouver dans un répertoire tout frais. Téléchargez les sources avec wget depuis le site kernel.org, soit les source du noyeau avec le bon patch. Il faut être relativement rigoureux sur les numéros de version utilisés. De plus pour chaque version de patchs, ormis le format de compression, il y a plusieurs façons d'avoir empaqueté le patch mais en regardant les noms de fichier (patch/patches) on arrive s'en sortir. Le mieux et de regarder la dernière version du patch disponible et prendre le noyau concerné:

Nous allons donc télécharger le dernier patch et les sources du noyau:
Copy to clipboard
~~blue:$~~ wget ftp://ftp.kernel.org/pub/linux/kernel/projects/rt/3.2/patch-3.2-rc6-rt9.patch.bz2 ~~blue:$~~ wget ftp://ftp.kernel.org/pub/linux/kernel/v3.x/testing/linux-3.2-rc6.tar.bz2

Extraire le noyau et tester le patch:
Copy to clipboard
~~blue:$~~ tar xvfj linux-3.2-rc6.tar.bz2 ~~blue:$~~ cd linux-3.2-rc6 ~~blue:linux-3.2-rc6$~~ bzcat ../patch-3.2-rc6-rt9.patch.bz2 | patch -p1 --dry-run


Si vous avez des warnings ou des messages bizarres, probablement que vous avez pas téléchargé le bon couple version patch/kernel. Assurez-vous d'avoir télécharger le fichier nommé "patch" et non "patches" avec exactement les même version.

drivers proprio

  • il faut remplacer ces symboles(dans les sources , le patch , les deux ? à preciser):
EXPORT_SYMBOL_GPL(migrate_disable) par EXPORT_SYMBOL(migrate_disable)

EXPORT_SYMBOL_GPL(migrate_enable) par EXPORT_SYMBOL(migrate_enable)

EXPORT_SYMBOL_GPL(rt_mutex_init) par EXPORT_SYMBOL(rt_mutex_init)

  • A noter que çela semble "casser" la license GPL , mais est legal pour un utilisateur privé.

Si le patch s'applique sans problème, vous pouvez passer au vrai patchage:
Copy to clipboard
~~blue:linux-3.2-rc6$~~ bzcat ../patch-3.2-rc6-rt9.patch.bz2 | patch -p1


Configuration du noyau

Dans un premier temps nous allons copier le fichier de configuration de notre distribution:

Ubuntu 11.10:
Copy to clipboard
~~blue:linux-3.2-rc6$~~ cp /usr/src/linux-headers-$(uname -r)/.config .


Adaptons le fichier de configuration au nouveau noyau. Ici vous pouvez répondre à toutes les questions par défaut, la plupart du temps il s'agit d'un choix judicieux, il est toujours possible de reconfigurer plus tard. Personnellement, je garde la touche "enter" enfoncée jusqu'à la fin.
Copy to clipboard
~~blue:linux-3.2-rc6$~~ make oldconfig


Nous allons ensuite entrer dans la configuration de notre noyau. Ici les options les plus importantes pour la MAO sont indiqués. Les puristes voudront enlenver tous les device drivers qu'ils n'ont pas besoins, puisque la configuration par défaut des grandes distributions incluses beaucoup de choses. Cependant, la plupart étant compilé en tant que module, cela ne gênera pas vraiment votre système, vous économiserez du temps lors de la compilation.

Passons au vif du sujet en entrez dans le menu de configuration du noyau:
Copy to clipboard
~~blue:linux-3.2-rc6$~~ make menuconfig

présentée dans le même ordre que menuconfig, les options spécifiques MAO sont marquées d'une étoile ☆.
Processor type and features
  • Processor family (Generic-x86-64) --->
    • Choisissez l'architecture la mieux adaptée, en cas de doute laissez generic
  • Preemption Model ☆
    • A vrai dire, je connais pas la différence entre ces deux modèles de préemption, ça doit être nouveau ... Disons que je suis parti en Full RT, peut-être que basic RT offre une meilleure expérience au niveau du desktop ..???
    • Preemptible Kernel (Basic RT)
    • Fully Preemptible Kernel (RT)
  • Timer frequency (1000 HZ) ☆
Device Drivers
  • Staging drivers
    • Les staging drivers ont parfois quelques problèmes à se compiler avec un noyau RT, je conseille de les désactiver

Compilation et installation

Lorsque vous êtes content avec votre configuration, vous pouvez pass à la compilation. l'option -j permet d'indiquer le nombre de processus. Mon petit calcul personnel, je fait nombre de CPUs * 4 pour les multi-coeurs, une dual coeurs, 3 processus devraient faire l'affaire:
Copy to clipboard
~~blue:linux-3.2-rc6$~~ make -j32


Lorsque la compilation est terminées, vous pouvez directement passer à l'installation. Cette commande va vous générer une image de démarrage et configurer GRUB pour vous:

Ubuntu 11.10:
Copy to clipboard
~~blue:linux-3.2-rc6$~~ sudo make modules_install ~~blue:linux-3.2-rc6$~~ sudo make install


Et voilà votre kernel est installé et près à être démarré. Vous pouvez tester votre kernel en le seléctionnant au prochain démarage et vérifier la version utilisée cette commande:
Copy to clipboard
~~blue:linux-3.2-rc6$~~ uname -ar Linux random-studio 3.2.0-rc6-rt9 #1 SMP PREEMPT RT Mon Dec 26 13:11:31 CET 2011 x86_64 x86_64 x86_64 GNU/Linux


Problèmes connues

Les personnes utilisant les driver graphique NVidia peu rencontrer des problèmes d'affichage et avoir une basse résolution...
  • Voir plus haut. drivers proprio
Mon clavier est en US!

Conclusion

Maintenant que vous avez un noyau real time, pour un peu plus d'optimisation, je conseille de faire un tour sur la gestion des IRQs:
http://linuxmao.org/tikiwiki/tiki-index.php?page=gestion+des+IRQ

Historique

Information Version
Jeudi 12 mars 2015 21:28 olinuxx + bandeau "doc à améliorer" 33
Afficher
Vendredi 05 septembre 2014 19:15 olinuxx Recherche et remplacement en masse 32
Afficher
Vendredi 05 septembre 2014 18:49 olinuxx Recherche et remplacement en masse 31
Afficher
Lundi 27 février 2012 19:01 pianolivier +CONFIG_USB_DYNAMIC_MINORS=n 30
Afficher
Jeudi 19 janvier 2012 15:37 olinuxx diverses corrections 29
Afficher
Mercredi 18 janvier 2012 23:05 djay 28
Afficher
Mercredi 18 janvier 2012 23:04 djay 27
Afficher
Mercredi 18 janvier 2012 23:03 djay 26
Afficher
Mercredi 18 janvier 2012 22:59 djay mise a jour des liens de telechargement.(cause mise a jour noyau) 25
Afficher
Samedi 07 janvier 2012 22:42 djay 24
Afficher
Samedi 07 janvier 2012 16:32 djay 23
Afficher
Samedi 07 janvier 2012 16:30 djay section driver proprio a jour (et testée) 22
Afficher
Samedi 07 janvier 2012 15:19 djay 21
Afficher
Samedi 07 janvier 2012 14:59 djay 20
Afficher
Samedi 07 janvier 2012 13:52 djay 19
Afficher
Lundi 26 décembre 2011 14:10 random 18
Afficher
Lundi 26 décembre 2011 14:07 random 17
Afficher
Lundi 26 décembre 2011 13:47 random 16
Afficher
Lundi 26 décembre 2011 13:40 random 15
Afficher
Lundi 26 décembre 2011 13:38 random 14
Afficher
Lundi 26 décembre 2011 13:02 random 13
Afficher
Lundi 26 décembre 2011 11:56 random 12
Afficher
Lundi 26 décembre 2011 11:51 random 11
Afficher
Lundi 26 décembre 2011 11:43 random 10
Afficher
Lundi 26 décembre 2011 11:33 random 9
Afficher
Lundi 26 décembre 2011 11:33 random 8
Afficher
Lundi 26 décembre 2011 11:22 random 7
Afficher
Mardi 22 novembre 2011 20:06 pianolivier mise en page 6
Afficher
Samedi 24 septembre 2011 23:07 pianolivier 5
Afficher
Jeudi 22 septembre 2011 16:38 pianolivier 4
Afficher
Mercredi 21 septembre 2011 20:33 pianolivier 3
Afficher
Mercredi 21 septembre 2011 20:32 pianolivier 2
Afficher
Mercredi 21 septembre 2011 20:19 pianolivier 1
Afficher