04/05/14 18:48 Compiler le noyau Linux sur Debian et l'installer
Page 1 sur 6 http://pyfourmond.free.fr/Compilation-Noyau-Linux.htm
Compiler le noyau Linux sur Debian et l'installer (Mthode Debian) Comment compiler une nouvelle version du noyau Linux sur une distribution Debian et l'installer avec GNU grub. Voir aussi Dveloppement logiciel, Open Source, MOM, JMS, MQ Series, Linux Debian Configurer les queue et queue connection factory (Accs JMS) pour IBM WebSphere MQ sous Linux Configurer Xinetd pour IBM WebSphere MQ Rsum: Cette page prsente la mthode Debian de compilation et d'installation du noyau Linux. Les tapes suivantes de la compilation du noyau Linux sur Debian sont dcrites: Connaitre la version utilise du noyau Linux et celle installer, Vrifier les pr-requis ncessaires, Tlcharger les sources du noyau Linux, Crer un utilisateur ddi, Dcompresser l'archive des sources, Crer un fichier de configuration, Slectionner les modules pour les iptables, Lancer la compilation du noyau, Vrifier les paramtres de GNU grub, Redmarrer avec le nouveau noyau Linux, Problmes possibles au boot avec le nouveau noyau, Table des partitions avance, Utilisation d'initrd. Ce qui est prsent ici a t test avec la version 2.6.18.1 du kernel Linux sur une distribution Debian. Mots cls: Compiler le noyau Linux, debian, kernel, noyau, Linux, kernel Linux, make-kpkg, fichier .config, kernal-image, grub, dpkg, boot, modules iptables, table des partitions, initrd, installation du noyau Linux. Compiler le noyau Linux sur une distribution Debian Connaitre la version utilise du noyau Linux et celle installer Vrifier les pr-requis ncessaires pour compiler le noyau Linux Tlcharger les sources du noyau Linux Crer un utilisateur ddi pour compiler le noyau Dcompresser l'archive des sources du noyau Crer un fichier de configuration Slectionner les modules pour les iptables Lancer la compilation du noyau Installer le nouveau noyau Linux Vrifier les paramtres de GNU grub Annonces Google ! Linux 2.6 ! Grub Linux ! Sous Linux ! GZ Linux 04/05/14 18:48 Compiler le noyau Linux sur Debian et l'installer Page 2 sur 6 http://pyfourmond.free.fr/Compilation-Noyau-Linux.htm Redmarrer avec le nouveau noyau Linux Problmes possibles au boot avec le nouveau noyau Table des partitions avance Utilisation d'initrd Dsinstaller un noyau Linux Connaitre la version utilise du noyau Linux et celle installer Quelle version du noyau Linux tourne actuellement ? La version du noyau Linux en cours d'excution est donne par la commande uname: pyf-debian:/home/fourmond$ uname -r 2.6.15 En outre, la version du systme d'exploitation est retourne par: uname -v Dans /boot, on a donc: pyf-debian:/home/fourmond$ ls /boot System.map-2.6.15 config-2.6.15 grub initrd.img-2.6.15 vmlinuz-2.6.15 Quelle version du noyau choisir ? La liste des versions disponibles du noyau Linux se trouve l'adresse http://www.kernel.org/kdist/finger_banner. En date du 1er novembre 2006, la dernire version stable du noyau tait: The latest stable version of the Linux kernel is: 2.6.18.1 A titre d'exemple, on compilera donc ici la version 2.6.18.1 du noyau Linux, mais la procdure dcrite ici fonctionne videmment pour toute autre version du noyau. D'autres versions plus rcentes du noyau Linux sont probablement sorties depuis cette date. Par exemple, la dernire version stable du noyau Linux est la version 2.6.25 sortie le 17 Avril 2008. Vous pouvez aller vrifier sur le site http://www.kernel.org. Vrifier les pr-requis ncessaires pour compiler le noyau Linux Afin de pouvoir compiler le noyau Linux, nous allons avoir besoin: D'un environnement de dveloppement complet (gcc, ld, make, make-kpkg, ...), Des sources du noyau Linux, Et notamment du paquet kernel-package qui contient la commande make-kpkg utilise sur les distributions Debian, Mais aussi d'espace disque (pour ceux qui en manqueraient !), l'archive dcompresse des sources du noyau Linux fait plus de 230 Mga octets Aprs avoir vrifi la prsence des commandes gcc, ld et make via la commande: 04/05/14 18:48 Compiler le noyau Linux sur Debian et l'installer Page 3 sur 6 http://pyfourmond.free.fr/Compilation-Noyau-Linux.htm pyf-debian:/home/fourmond$ dpkg -l | egrep -e "gcc|make|binutils" ii binutils 2.15-6 The GNU assembler, linker and binary utilities ii gcc-3.3 3.3.5-13 The GNU C compiler ii gcc-3.3-base 3.3.5-13 The GNU Compiler Collection (base package) ii libgcc1 3.4.3-13sarge1 GCC support library ii make 3.80-9 The GNU version of the "make" utility. On tlchargera les sources du noyau Linux sur le site http://www.kernel.org. Si gcc, ld ou make venaient manquer, on utilisera apt-get install suivi du nom du package installer. La commande ld appartient au package binutils dont le package gcc-3.3 dpend. Tlcharger les sources du noyau Linux La version 2.6.18.1 du noyau peut tre tlcharge sur: http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.1.tar.bz2, ou ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.1.tar.gz via la commande: pyf-debian:/home/fourmond$ wget -c http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.1.tar.bz2 ou pyf-debian:/home/fourmond$ wget -c ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.1.tar.gz Crer un utilisateur ddi pour compiler le noyau Plutt que de compiler le noyau Linux en tant que root, nous allons crer un utilisateur nomm kernel qui appartiendra au groupe src: Sous root: pyf-debian:/root$ useradd -G src kernel pyf-debian:/root$ passwd kernel Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Dcompresser l'archive des sources du noyau On va ensuite se logger avec le nouvel utilisateur kernel et on dcompresse l'archive: kernel@pyf-debian:/data$ id uid=1002(kernel) gid=100(users) groupes=40(src),100(users) kernel@pyf-debian:/data$ ls linux-2.6.18.1.tar.bz2 linux-2.6.18.1.tar.bz2 kernel@pyf-debian:/data$ tar -xjf linux-2.6.18.1.tar.bz2 kernel@pyf-debian:/data$ cd linux-2.6.18.1 Si on a utilis linux-2.6.18.1.tar.gz: kernel@pyf-debian:/data$ tar -xzf linux-2.6.18.1.tar.gz Crer un fichier de configuration Comme on ne dsire pas changer la configuration du systme Linux utilis, mais simplement profiter des dernires corrections du noyau, on reprend le fichier de configuration de la version prcdente (2.6.15): kernel@pyf-debian:/data/linux-2.6.18.1$ cp /boot/config-2.6.15 .config On entre ensuite: 04/05/14 18:48 Compiler le noyau Linux sur Debian et l'installer Page 4 sur 6 http://pyfourmond.free.fr/Compilation-Noyau-Linux.htm kernel@pyf-debian:/data/linux-2.6.18.1$ make menuconfig A l'affichage du menu, on fait simplement Exit, puis la question "Do you want to save ...", on entre "Yes". Le fichier .config est alors sauvegard. Note: L'utilisation de make menuconfig ncessite l'installation pralable du package libncurses5-dev. Slectionner les modules pour les iptables Depuis la version 2.6.14 du noyau, il faut activer explicitement certains modules pour les iptables dans le fichier de configuration du noyau, sinon il ne le sont pas par dfaut. On vrifiera donc que l'on a bien notamment la ligne suivante dans .config: CONFIG_NETFILTER_XTABLES=y Lancer la compilation du noyau Toujours dans le rpertoire /data/linux-2.6.18.1, on entre la commande suivante avec l'utilisateur kernel: kernel@pyf-debian:/data/linux-2.6.18.1$ make-kpkg --rootcmd fakeroot --initrd -- append-to-version=.`date +%y%m%d` -- revision=2.6.18.1 kernel-image Le paramtres --rootcmd fakeroot permet d'obtenir les droits root, ce qui est ncessaire pour la cration du package du noyau. On peut galement utiliser make-kpkg ... buildpackage qui effectue les oprations suivantes: clean kernel_doc kernel_source kernel_headers et kernel_image La commande make-kpkg aura pour effet de crer le fichier .deb suivant: kernel-image-2.6.18.1.`date +%y%m%d`_2.6.18.1_i386.deb Une fois le package debian gnr, on prendra soin de faire un clean dans l'arborescence des sources: kernel@pyf-debian:/data/linux-2.6.18.1$ make-kpkg clean Installer le nouveau noyau Linux Pour installer le noyau que l'on vient de compiler: dpkg -i kernel-image-2.6.18.1.`date +%y%m%d`_2.6.18.1_i386.deb Attention: Cela suppose d'installer auparavant la package initrd-tools. La commande dpkg va: installer les modules dans /lib/modules/2.6.18.1.061101/, crer les fichiers /boot/System.map-2.6.18.1.061101, /boot/config-2.6.18.1.061101 et /boot/vmlinuz-2.6.18.1.061101 Vrifier les paramtres de GNU grub 04/05/14 18:48 Compiler le noyau Linux sur Debian et l'installer Page 5 sur 6 http://pyfourmond.free.fr/Compilation-Noyau-Linux.htm Le fichier de configuration de GNU grub, /boot/grub/menu.lst a t modifi comme suit: title Debian GNU/Linux, kernel 2.6.18.1.061101 root (hd0,1) kernel /boot/vmlinuz-2.6.18.1.061101 root=/dev/hda2 ro initrd /boot/initrd.img-2.6.18.1.061101 savedefault boot Cette section a t ajoute par la commande dpkg prcdente. Redmarrer avec le nouveau noyau Linux On redmarre la machine avec le nouveau noyau: il sera en premire position dans le fichier menu.lst de grub. reboot Au redmarrage, on peut vrifier la version du noyau: pyf-debian:/home/fourmond$ dmesg | grep 2.6.18 Linux version 2.6.18.1 (kernel@pyf-debian) (version gcc 3.3.5 (Debian 1:3.3.5- 13)) #1 PREEMPT Sun Nov 5 15:00:35 CET 2006 ou avec uname -r: pyf-debian:/home/fourmond$ uname -r 2.6.18.1 Problmes possibles au boot avec le nouveau noyau Table des partitions avance Il peut arriver que le noyau Linux ne reconnaisse pas le disque si la table des partitions avance est active dans le fichier .config. On a alors une erreur au boot du noyau: VFS: Cannot open root device "hda2" or unknown block (0,0) Kernel panic - not syncing: VFS Unable to mount root fs on unknow block (0,0) Dans ce cas, aprs make menuconfig, diter le fichier .config de configuration du noyau en changeant: CONFIG_PARTITION_ADVANCED=y en # CONFIG_PARTITION_ADVANCED is not set. Utilisation d'initrd L'installation du noyau Linux sans crer de fichier d'init peut poser quelques problmes, aussi ne pas oublier l'option --initrd sur la ligne de commande make-kpkg. Dsinstaller un noyau Linux Pour dsinstaller un noyau que l'on n'utilise plus: pyf-debian:/root$ apt-get remove --purge kernel-image-2.6.8-16sarge1 ou pyf-debian:/root$ dpkg --purge kernel-image-2.6.8-16sarge1 04/05/14 18:48 Compiler le noyau Linux sur Debian et l'installer Page 6 sur 6 http://pyfourmond.free.fr/Compilation-Noyau-Linux.htm Le nom utiliser pour dsinstaller un paquet Debian suit le format kernel-image, un tiret puis kernel_version, ou kernel_version dsigne la version du noyau Linux (troisime colonne de la commande dpkg -l). Modifi le: vendredi 18.06.2010 17:09:15 P-Y Fourmond, 2005-2009