Qu'est-ce qu'un moyen simple de recompiler le noyau?

39

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 essentiellement un miroir de ce blog et il y a beaucoup d'étapes ( git , etc. ) qui me paraissent inutiles.

Avec les versions / distributions précédentes, j'avais l'habitude de créer un fichier .config et de modifier un Makefile si nécessaire, puis d'exécuter make et c'est terminé.

Existe-t-il un moyen simple de le faire sous Ubuntu?

    
posée user827992 13.07.2012 - 23:40
la source

3 réponses

36

1. Utilisez apt-get source pour télécharger la version Ubuntu du noyau

apt-get source linux-image-$(uname -r)

donne un dossier qui contient, par exemple:

linux-3.2.0                linux_3.2.0-26.41.dsc
linux_3.2.0-26.41.diff.gz  linux_3.2.0.orig.tar.gz

La diff en gras inclut toutes les personnalisations Ubuntu / Debian.

2. Pour construire un noyau avec votre propre .config , utilisez la méthode Debian make-kpkg "à l'ancienne"

Il s’agit de la ancienne méthode décrite dans le wiki:

sudo apt-get install kernel-package

Si vous compilez un noyau pour la première fois:

sudo apt-get build-dep linux-image-$(uname -r)

Ensuite, cd dans le répertoire source (ici, linux-3.2.0 ) et soit exécutez make oldconfig pour créer le fichier .config avec la configuration de votre noyau en cours d'exécution, soit copiez un tiers .config dans ce répertoire.

Selon que vous voulez une configuration texte ou graphique, installez:

(texte)

sudo apt-get install libncurses5 libncurses5-dev

(graphique)

sudo apt-get install qt3-dev-tools libqt3-mt-dev

Et puis exécutez:

(texte)

make menuconfig

(graphique)

make xconfig

Une fois terminé, lancez simplement:

fakeroot make-kpkg -j N --initrd --append-to-version=my-very-own-kernel kernel-image kernel-headers

N est le nombre de travaux à exécuter en parallèle (généralement le nombre de processeurs que vous avez), et my-very-own-kernel est 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 s'occupera également d'ajouter des entrées GRUB, etc.

    
réponse donnée ish 14.07.2012 - 03:09
la source
16

Voici les étapes. Cette procédure est basée sur nixCraft Comment: compiler le noyau Linux 2.6 - mais modernisé considérablement.

Téléchargez et extrayez le code source du noyau que vous souhaitez construire.

Vous pouvez obtenir en amont du code source du noyau sur kernel.org . Version 3.16.1 (le dernier noyau stable à ce jour) sera utilisé 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 . xz archives, alors cliquez sur le lien" tar.xz "par la version que vous voulez:

Après cd dans le répertoire où vous avez téléchargé l’archive, vous pouvez l’extraire avec < a href="http://manpages.ubuntu.com/manpages/man1/tar.1.html"> tar :

tar xf linux-3.16.1.tar.xz

Installez les outils de génération nécessaires et effectuez la configuration du noyau.

Pour installer la chaîne d'outils d'Ubuntu ( gcc , make , etc.), installez build-essential metapackage:

sudo apt-get update
sudo apt-get install build-essential

Deux méthodes raisonnablement conviviales pour configurer ce qui entre dans votre noyau sont fournies par les cibles make xconfig et menuconfig .

xconfig exécute un utilitaire de configuration graphique, tandis que menuconfig est basé sur du texte (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 < img src="https://hostmar.co/software-small"> et pkg-config < img src="https://hostmar.co/software-small"> et exécutez make xconfig :

sudo apt-get install libqt4-dev pkg-config
make xconfig

Pour configurer le terminal , installez libncurses5-dev (merci à Hannu pour cette information) et exécutez make menuconfig :

sudo apt-get install libncurses5-dev
make menuconfig

Construisez le noyau configuré.

Commencez par le lancer pour compiler le noyau et créez vmlinuz :

make

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 tout autre chargeur de démarrage que vous utilisez.

Créez ensuite les modules de noyau chargeables :

make modules

Installez votre noyau nouvellement construit.

En supposant que ces commandes make soient correctement exécutées, il est temps d’installer le nouveau noyau. Tout d'abord, installez les modules:

sudo make modules_install

Ensuite, installez le noyau lui-même:

sudo make install

Cela met vmlinuz-3.16.1 (une copie de vmlinuz ), config-3.16.1 (un fichier texte stockant les paramètres de configuration du noyau) et System.map-3.16.1 (le Table de recherche des symboles du noyau ) dans /boot . Pour plus de détails, voir cet article comp.os.linux.misc de Hadron et man installkernel .

Configuration finale, donc le noyau peut être démarré et initialiser le système:

Cette section repose en partie sur des informations contenues dans Kernel / Compile .

Avec le noyau maintenant où il doit être, il faut:

  • une entrée dans la configuration de la chargeur de démarrage , pour que vous puissiez la sélectionner et l’amorcer.

  • 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, cliquez sur .org / article / 293 / How_Do_I_Make_an_initrd_image # comment_14 "> pour utiliser devfs au lieu du nouvel udev , vous devrez peut-être ou souhaiter créer un ramdisk initial à la place. Si vous savez que vous en avez besoin à la place, consultez man initrd .)

Générez vos initramfs avec mkinitramfs :

cd /boot
sudo mkinitramfs -ko initrd.img-3.16.1 3.16.1

Lorsque vous mettez à jour la configuration du chargeur de démarrage GRUB2 - qui a été défini par défaut dans Ubuntu depuis le 9.10-- devrait détecter automatiquement le nouveau noyau et ajouter une option pour démarrer à partir de celui-ci.

sudo update-grub

Essayez votre noyau.

Maintenant, vous pouvez redémarrer pour tester votre nouveau noyau. Vous devrez peut-être maintenir Shift pendant le démarrage pour voir le menu de démarrage GRUB où vous pouvez choisir parmi les différents noyaux installés.

Pour que votre noyau (ou un autre) soit utilisé par défaut, consultez Comment modifier l'ordre de démarrage GRUB?

    
réponse donnée Novice 19.08.2014 - 08:18
la source
2

Les instructions rapides pour créer un noyau Ubuntu (par opposition à vanille) peuvent être trouvées ici: lien .

Je ne vais pas copier tout le wiki, 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 dépôt git du noyau de la prochaine version d'Ubuntu.) Testé sur Ubuntu 16.04.

# Get source code
apt-get source linux-image-$(uname -r)

# Install dependencies
sudo apt-get build-dep linux-image-$(uname -r)

# Compile
cd linux-4.4.0
fakeroot debian/rules clean
fakeroot debian/rules binary

# Install (obviously the versions will be different)
cd ..
sudo dpkg -i linux-image-4.4.0-38-generic_4.4.0-38.57_amd64.deb linux-headers-4.4.0-38_4.4.0-38.57_all.deb linux-headers-4.4.0-38-generic_4.4.0-38.57_amd64.deb
    
réponse donnée Aleksandr Dubinsky 28.09.2016 - 14:33
la source

Lire d'autres questions sur les étiquettes