Je suis intéressé par la compilation d'un nouveau noyau sous Ubuntu 12.04 x86 64 bits.
J'ai trouvé cette page wiki qui est fondamentalement un miroir pour ce blog et il y a beaucoup d'étapes ( git , etc.) qui me paraissent inutiles.
Avec les versions / distributions précédentes, je créais un .config
fichier et Makefile
je modifiais un fichier si nécessaire, puis je l’exécutais make
et c’était fait.
Y at-il un moyen simple de faire cela sous Ubuntu?
Réponses:
1. Utilisez
apt-get source
pour télécharger la version Ubuntu du noyaudonne un dossier qui contient, par exemple:
Le diff en gras comprend toutes les personnalisations Ubuntu / Debian.
2. Pour construire un noyau avec le vôtre
.config
, utilisez lamake-kpkg
méthode Debian "ancienne"C'est la méthode alternative à l'ancienne décrite dans le wiki:
Si vous compilez un noyau pour la première fois:
Ensuite,
cd
dans le répertoire source (icilinux-3.2.0
), et exécutez-lemake oldconfig
pour créer un.config
fichier avec la configuration de votre noyau en cours d’exécution, ou copiez une troisième partie.config
dans ce répertoire.Selon que vous voulez une configuration texte ou graphique, installez:
(Texte)
(Graphique)
Et puis courez:
(Texte)
(Graphique)
Une fois terminé, lancez simplement:
où
N
est le nombre de tâches à exécuter en parallèle (généralement le nombre de processeurs que vous avez) etmy-very-own-kernel
constitue une chaîne personnalisée pour identifier cette version.Une fois terminé, l’image du noyau et les fichiers d’en-tête seront prêts en tant que debs dans le répertoire parent; vous pouvez les installer avec
sudo dpkg -i
, qui se chargera également de l'ajout d'entrées GRUB, etc.la source
linux-3.2.0
répertoire et exécuterpatch -p1 <../patch.diff
?apt-get source ...
a déjà fait ça pour vous!fakeroot debian/rules editconfigs
,fakeroot debian/rules clean
,fakeroot debian/rules binary
Est la bonne façon, sans problème.Voici les étapes. Cette procédure est basée sur nixCraft « s Comment: Compile Linux noyau 2.6 --mais considérablement modernisé.
Téléchargez et extrayez le code source du noyau que vous souhaitez construire.
Vous pouvez obtenir le code source du noyau en amont sur kernel.org . La version 3.16.1 (le dernier noyau stable à ce jour) sera utilisée ici. Vous devrez donc peut-être modifier ces commandes si vous utilisez une version différente.
Le code source du noyau est actuellement fourni dans. tar . archives xz , cliquez sur le lien "tar.xz" selon la version de votre choix:
Après avoir
cd
accédé au répertoire dans lequel vous avez téléchargé l'archive, vous pouvez l'extraire avectar
:Installez les outils de construction nécessaires et effectuez la configuration du noyau.
Pour obtenir la chaîne d’ outils (
gcc
,make
et ainsi de suite) d’ Ubuntu , installez le métapaquet build-essential :Deux méthodes relativement simples à utiliser pour configurer ce qui se passe dans votre noyau sont fournies par les
make
ciblesxconfig
etmenuconfig
.xconfig
exécute un utilitaire de configuration graphique, alors qu’ilmenuconfig
est basé sur du texte (c’est-à-dire que son interface apparaît entièrement dans votre terminal). Chacun nécessite des logiciels supplémentaires non fournis par build-essential .Pour configurer graphiquement , installez libqt4-dev et pkg-config et exécutez
make xconfig
:Pour configurer dans le terminal , installez
libncurses5-dev
(merci à Hannu pour cette information) et lancezmake menuconfig
:Construisez le noyau configuré.
Commencez par ceci pour compiler le noyau et créer
vmlinuz
:vmlinuz
est "le noyau". Plus précisément, c'est l'image du noyau qui sera décompressée et chargée en mémoire par GRUB ou par tout autre programme d' amorçage que vous utilisez.Ensuite, construisez les modules du noyau chargeables :
Installez votre noyau nouvellement construit.
En supposant que ces
make
commandes aboutissent, il est temps d'installer le nouveau noyau. Commencez par installer les modules:Puis installez le noyau lui-même:
Cela met
vmlinuz-3.16.1
(une copie devmlinuz
),config-3.16.1
(un fichier texte contenant les paramètres de configuration du noyau) etSystem.map-3.16.1
(la table de recherche des symboles du noyau ) dans/boot
. Pour plus de détails, voir cet article comp.os.linux.misc de Hadron etman installkernel
.Configuration finale, afin que le noyau puisse être démarré et initialiser le système:
Cette section est en partie basée sur les informations contenues dans Kernel / Compile .
Avec le noyau maintenant où il doit être, il a besoin de:
une entrée dans la configuration du chargeur de démarrage , afin que vous puissiez sélectionner et démarrer à partir de celle-ci.
un système de fichiers RAM initial , l’environnement à partir duquel le noyau charge les pilotes et monte le
/
système de fichiers .(Si vous installez un ancien noyau ou si vous avez configuré votre noyau pour qu'il utilise devfs à la place du plus récent, udev , vous devrez peut-être configurer un disque virtuel initial . Si vous savez que vous en avez besoin, voir
man initrd
.)Générez vos initramfs avec
mkinitramfs
:Lorsque vous mettez à jour la configuration du chargeur de démarrage GRUB2 - qui est la configuration par défaut sous Ubuntu depuis la version 9.10 - devrait automatiquement détecter le nouveau noyau et ajouter une option permettant de démarrer à partir de celui-ci.
Essayez votre noyau.
Vous pouvez maintenant redémarrer pour tester votre nouveau noyau. Vous devrez peut-être maintenir enfoncé Shiftou appuyer Escpendant le démarrage pour afficher le menu de démarrage de GRUB dans lequel vous pouvez choisir entre les différents noyaux installés.
Pour définir votre noyau (ou un autre) par défaut, reportez-vous à la section Comment modifier l'ordre de démarrage de GRUB?
la source
make menuconfig
nécessiteapt get install libncurses5-dev
Les instructions rapides pour construire un noyau Ubuntu (par opposition à vanilla) peuvent être trouvées ici: https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel .
Je ne vais pas copier le wiki en entier, mais je vais énumérer les étapes minimales pour compiler la version du noyau Ubuntu que vous avez actuellement installée. (Pour obtenir la version la plus récente, clonez le référentiel git du noyau de la prochaine version d'Ubuntu.) Testé sur Ubuntu 16.04.
la source