50 votes

Quel est un moyen simple de recompiler le noyau?

Je suis intéressé par la compilation d'un nouveau noyau sous Ubuntu 12.04 en 64 bits.

J'ai trouvé cette page wiki qui est essentiellement un miroir pour ce blog et il y a beaucoup d'étapes (git, etc.) qui me semblent inutiles.

Avec les versions/distributions précédentes, je créais un fichier .config et je modifiais un Makefile si j'en avais besoin, puis je lançais simplement make et c'était fini.

Y a-t-il un moyen simple de faire cela sous Ubuntu?

41voto

ish Points 134738

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

Le diff en gras comprend toutes les personnalisations Ubuntu/Debian.

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

C'est la ancienne méthode traditionnelle 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 exécutez make oldconfig pour créer un fichier .config avec la configuration de votre kernel actuel, ou copiez un .config tiers dans ce répertoire.

En fonction que vous souhaitiez une configuration textuelle ou graphique, installez :

(Textuelle)

sudo apt-get install libncurses5 libncurses5-dev

(Graphique)

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

Ensuite, exécutez :

(Textuelle)

make menuconfig

(Graphique)

make xconfig

Une fois terminé, exécutez simplement :

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

N est le nombre de tâches à exécuter en parallèle (généralement le nombre de CPU que vous avez), et my-very-own-kernel est une chaîne personnalisée pour identifier cette construction.

Une fois terminé, l'image du noyau et les fichiers d'en-tête seront prêts en tant que fichiers deb dans le répertoire parent; vous pouvez les installer avec sudo dpkg -i, qui se chargera également d'ajouter des entrées GRUB, etc.

21voto

Shriharsh Points 11

Voici les étapes. Cette procédure est basée sur nixCraft Comment compiler le noyau Linux 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 upstream sur kernel.org. La version 3.16.1 (le dernier noyau stable au moment de la rédaction) sera utilisée ici. Vous devrez donc modifier ces commandes si vous utilisez une version différente.

Actuellement, le code source du noyau est fourni dans des archives .tar.xz, alors cliquez sur le lien "tar.xz" de la version que vous souhaitez:

capture d'écran de kernel.org, montrant les archives source du noyau disponibles en téléchargement

Après avoir cd dans le répertoire où vous avez téléchargé l'archive, vous pouvez l'extraire avec tar:

tar xf linux-3.16.1.tar.xz

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

Pour obtenir la chaîne d'outils d'Ubuntu (gcc, make, etc.) installez le métapaquet build-essential Installer build-essential :

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

Deux façons raisonnablement conviviales de configurer ce qui va dans votre noyau sont fournies par les cibles make xconfig et menuconfig.

xconfig lance un utilitaire de configuration graphique, tandis que menuconfig est basé sur du texte (c'est-à-dire, son interface apparaît entièrement dans votre terminal). Chacun nécessite un logiciel supplémentaire non fourni par build-essential Installer build-essential .

Pour configurer graphiquement, installez libqt4-dev Installer libqt4-dev et pkg-config Installer pkg-config et exécutez make xconfig:

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

Pour configurer dans 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 exécuter ceci pour compiler le noyau et créer 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 gestionnaire de démarrage que vous utilisez.

Ensuite, construisez les modules de noyau chargeables:

make modules

Installez votre nouveau noyau construit.

En supposant que ces commandes make se sont terminées avec succès, il est temps d'installer le nouveau noyau. Tout d'abord, installez les modules :

sudo make modules_install

Puis installez le noyau lui-même :

sudo make install

Cela place 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 (la table de recherche de symboles du noyau) dans /boot. Pour plus de détails, voir cette publication comp.os.linux.misc de Hadron et man installkernel.

Configuration finale, pour que le noyau puisse démarrer et démarrer le système :

Cette section est partiellement basée sur des informations provenant de Kernel/Compile.

Le noyau étant désormais là où il doit être, il a besoin de :

Générez votre initramfs avec mkinitramfs:

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

Lorsque vous mettez à jour la configuration du gestionnaire de démarrage GRUB2--qui a été le choix par défaut dans Ubuntu depuis 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 la touche Shift enfoncée ou appuyer sur Esc pendant le démarrage pour voir le menu de démarrage de GRUB où vous pouvez sélectionner entre les différents noyaux installés.

Pour rendre votre noyau (ou un autre) par défaut, consultez Comment changer l'ordre de démarrage GRUB?

3voto

Usman Ali Points 1041

Les instructions rapides pour construire un noyau Ubuntu (par opposition à la version vanilla) peuvent être trouvées ici : https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel.

Je ne vais pas copier tout le wiki, mais je vais lister 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.

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

# Installer les dépendances
sudo apt-get build-dep linux-image-$(uname -r)

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

# Installer (évidemment les versions seront différentes)
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

0voto

Dépôt du noyau Git Ubuntu

En suivant les idées de https://help.ubuntu.com/community/Kernel/Compile et avec une clarification plus grande sur pourquoi je pense que la configuration semble correcte à Où puis-je obtenir le fichier de configuration du noyau 11.04 ?:

git clone git://kernel.ubuntu.com/ubuntu/ubuntu-bionic.git linux
cd linux
git checkout Ubuntu-4.15.0-36.39
fakeroot debian/rules clean
debian/rules updateconfigs
fakeroot debian/rules build-generic
cp debian/build/build-generic/.config .
make -j `nproc`

Testé sur Ubuntu 18.04.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X