Nous disposons de deux méthodes :
-
la compilation classique ;
-
la compilation façon Debian.
1. Effectuer une compilation classique
Cette méthode est utilisable sur
toutes les distributions GNU/Linux, y compris Debian.
a. Pré-requis
Concernant Debian 7 et Ubuntu 12.04 LTS, il
faut installer les paquets nécessaires à la compilation :
-
build-essential
-
module-init-tools
-
fakeroot
Quant à CentOS 6, les paquets à ajouter
sont :
-
Les outils de développement (Development Tools), et les bibliothèques de développement (Development Libraries).
-
La bibliothèque ncurses (ncurses-devel) pour menuconfig ou nconfig.
-
La bibliothèque qt-devel pour xconfig.
-
Les bibliothèques gtk2-devel, libglade2 pour gconfig.
D’autres paquets peuvent s’ajouter à la
liste ci-dessus en fonction des besoins ou des dépendances.
Au sein du système, l’emplacement
pour construire le noyau doit disposer d’un espace disque suffisant.
Prévoyez au minimum 10 Gio.
b. Télécharger le code source du noyau
Le téléchargement du code
source du noyau Linux s’effectue depuis le site web http://www.kernel.org. La commande wget permet
d’effectuer cette opération en ligne de commandes. Vous
pouvez aussi utiliser un navigateur web pour effectuer cette opération.
La version du noyau stable au moment de l’écriture
de cet ouvrage est 3.10.2. Le nom du fichier est linux-3.10.2.tar.xz.
Syntaxewget <URL>
Tapez dans un terminal :
# wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.2.tar.xz --2013-07-16 11:13:33-- https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.2.tar.xz Résolution de www.kernel.org (www.kernel.org)... 149.20.4.69, 198.145.20.140 Connexion vers www.kernel.org (www.kernel.org)|149.20.4.69|:443...connecté. requête HTTP transmise, en attente de la réponse...200 OK Longueur: 73192648 (70M) [application/x-xz] Sauvegarde en : «linux-3.10.2.tar.xz» 100%[== ========================>] 73 192 648 353K/s ds 4m 0s 2013-07-16 11:17:35 (298 KB/s) - «linux-3.10.2.tar.xz» sauvegardé [73192648/73192648]
Pour décompresser l’archive linux-3.10.2.tar.xz, il faut utiliser
l’outil tar.
Syntaxetar <options> <fichier_à_décompresser>
Options nécessaires :
Option
|
Description
|
|
courte
|
longue
|
|
-x
|
--extract
|
Extrait les fichiers contenus dans l’archive.
|
-J
|
--xz
|
Décompression au format Lzma.
|
-v
|
--verbose
|
Affiche la liste détaillée
des fichiers qui sont traités.
|
-f
|
--file
|
Utilise le fichier archive mentionné.
|
Tapez dans un terminal :
# tar xJvf linux-3.10.2.tar.xz linux-3.10.2/ linux-3.10.2/.gitignore linux-3.10.2/.mailmap linux-3.10.2/COPYING ... linux-3.10.2/virt/kvm/iommu.c linux-3.10.2/virt/kvm/irq_comm.c linux-3.10.2/virt/kvm/irqchip.c linux-3.10.2/virt/kvm/kvm_main.c
L’extraction est réalisée
dans le dossier linux-3.10.2. Avec la commande du,
nous pouvons connaître sa taille.
Syntaxedu <options> <dossier>
Options nécessaires :
Option
|
Description
|
|
courte
|
longue
|
|
-h
|
--human-readable
|
Affiche les tailles dans un format lisible
par un humain.
|
-d
|
--max-depth
|
Affiche l’espace total occupé par
un dossier seulement s’il est situé à une profondeur inférieure
ou égale au niveau mentionné.
--max-depth=0 est identique à --summarize.
|
-s
|
--summarize
|
Affiche seulement un total pour chaque paramètre.
|
Tapez dans un terminal :
# du -h --max-depth=0 ./linux-3.10.2 573M ./linux-3.10.2
ou bien :
# du -hs ./linux-3.10.2 573M ./linux-3.10.2
L’occupation disque du code source du noyau
Linux version 3.10.1 est de 573 Mio.
c. Outils pour configurer le noyau
Configurer convenablement toutes les options
du Noyau Linux implique d’une part une bonne connaissance sur le
fonctionnement de celui-ci et du matériel utilisé (périphériques,
processeur(s), mémoire, disques physiques et logiques...)
sur lequel vous allez installer le nouveau noyau Linux. Mais aussi d’autre
part, il faut bien identifier l’objectif de la conception de ce
dernier.
Pour effectuer la configuration du noyau,
nous disposons de cinq outils CLI ou GUI :
make config
Cet outil a une ergonomie simple. Les choix
s’effectuent les uns après les autres :
#make configuration HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o SHIPPED scripts/kconfig/zconf.tab.c SHIPPED scripts/kconfig/zconf.lex.c SHIPPED scripts/kconfig/zconf.hash.c HOSTCC scripts/kconfig/zconf.tab.o HOSTLD scripts/kconfig/conf scripts/kconfig/conf --oldaskconfig Kconfig # # using defaults found in /boot/config-3.2.0-4-amd64 # /boot/config-3.2.0-4-amd64:488:warning: symbol value ’m’ invalid for ACPI_PCI_SLOT /boot/config-3.2.0-4-amd64:490:warning: symbol value ’m’ invalid for ACPI_CONTAINER /boot/config-3.2.0-4-amd64:491:warning: symbol value ’m’ invalid for ACPI_HOTPLUG_MEMORY /boot/config-3.2.0-4-amd64:1565:warning: symbol value ’m’ invalid for BMP085 /boot/config-3.2.0-4-amd64:2975:warning: symbol value ’m’ invalid for POWER_SUPPLY /boot/config-3.2.0-4-amd64:3210:warning: symbol value ’m’ invalid for MFD_WM8400 /boot/config-3.2.0-4-amd64:4699:warning: symbol value ’m’ invalid for COMEDI_MISC_DRIVERS /boot/config-3.2.0-4-amd64:4706:warning: symbol value ’m’ invalid for COMEDI_PCI_DRIVERS /boot/config-3.2.0-4-amd64:4763:warning: symbol value ’m’ invalid for COMEDI_PCMCIA_DRIVERS /boot/config-3.2.0-4-amd64:4771:warning: symbol value ’m’ invalid for COMEDI_USB_DRIVERS * * Linux/x86 3.10.2 Kernel Configuration * 64-bit kernel (64BIT) [Y/n/?]make menuconfig
Il est développé avec la
bibliothèque ncurses ce qui implique l’installation de libncurses5-dev pour Debian et Ubuntu
ou de ncurses-devel.x86_64 pour
CentOS. Grâce à une gestion par menus, il offre
une meilleure convivialité que make
config pour choisir les options :
Développé avec la bibliothèque
ncurses, make nconfig est une version
améliorée de make menuconfig :
Nécessite l’installation de libgtk2.0-dev, libglib2.0-dev et
de libglade2-dev pour Debian. Ubuntu Server et CentOS
n’ont pas nativement d’environnement graphique. Certes, il n’est
pas impossible de l’ajouter par vos soins. Dans ce cas, il faut
installer les bibliothèques GTK et Glade.
Développé avec la bibliothèque
Qt, le paquet libqt4-dev doit être
installé sur Debian. Tout comme pour le GTK, Ubuntu Server
et CentOS n’ont pas d’environnement graphique nativement. Si vous
l’avez ajouté, dans ce cas, installez les bibliothèques
Qt 3 ou 4.
Si vous administrez votre serveur en mode
texte depuis un terminal distant, make
menuconfig ou make nconfig sont
probablement les meilleurs choix. Les différentes options
du noyau sont activées (Y), désactivées
(N) ou chargeables en tant que module (M) et sont répertoriées
ainsi :
-
64-bit kernel (sélectionné nativement) contient le code 64 bits du noyau Linux. C’est obligatoirement activé.
-
General setup. Ce menu contient les options générales de configuration du noyau comme le mécanisme de pagination de la mémoire virtuelle, la gestion des IPC compatibles System V, etc.
-
Enable loadable module support (sélectionné nativement) contient le support des Loadable Kernel Modules (LKM). Ce sujet est du reste abordé dans le chapitre Loadable Kernel Modules.
-
Enable the block layer (sélectionné nativement) contient la prise en charge des périphériques de type bloc.
-
Processor type and features contient le support de plusieurs processeurs.
-
Power management and ACPI options contient la gestion d’énergie.
-
Bus options contient la gestion des bus tels que PCI, PCMCIA...
-
Executable file formats / emulations gère l’utilisation des fichiers binaires au format ELF. Du fait que ce format de fichier est devenu un standard, l’activation de cette option est recommandée.
-
Networking support (sélectionné nativement) contient la prise en charge des fonctionnalités réseau. C’est une option quasiment obligatoire. Il est rare de voir un serveur GNU/Linux sans services réseau.
-
Device drivers gère les options relatives aux gestionnaires de périphériques.
-
Firmware drivers gère les options relatives aux firmwares (BIOS, EFI, DMI...).
-
File systems active ou non la prise en charge des systèmes de fichiers (ext2, ext3, ext4, JFS, XFS, BRFS...).
-
Kernel hacking ajoute une datation aux traces du noyau Linux. Cette option n’est pas recommandée pour un usage courant.
-
Security options permet le stockage des clefs privées dans le noyau au lieu des processus.
-
Cryptographic API (sélectionné nativement) permet d’intégrer la prise en charge les algorithmes de chiffrement SHA1, AES, MD5, MD4...
-
Virtualization (sélectionné nativement) permet la prise en charge de Kernel-based Virtual Machine (KVM).
-
Library routines offre la possibilité d’inclure différentes fonctions. Les composants du noyau ne vont pas, cependant, les utiliser. Les fonctions sont exportées pour que des modules livrés par des tiers puissent les exploiter.
d. Fichiers de configuration
Dans le répertoire /boot de votre distribution,
un fichier texte contient la configuration du noyau que votre système
d’exploitation utilise. La nomenclature du nom est : config-<version_du_noyau><architecture>.
Distribution
|
Nom du fichier
|
Debian 7 (Wheezy)
|
/boot/config-3.2.0-4-amd64
|
Ubuntu 12.04 LTS
|
/boot/config-3.2.0-45-generic
|
CentOS 6.4
|
/boot/config-2.6.32-358.14.1.el6.x86_64
|
Voici, par exemple le contenu du fichier /boot/config-3.2.0-4-amd64 de
Debian 7 :
# cat config-3.2.0-4-amd64 # # Automatically generated file; DO NOT EDIT. # Linux/x86 3.2.46 Kernel Configuration # CONFIG_64BIT=y # CONFIG_X86_32 is not set CONFIG_X86_64=y CONFIG_X86=y CONFIG_INSTRUCTION_DECODER=y CONFIG_OUTPUT_FORMAT="elf64-x86-64" CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig" CONFIG_GENERIC_CMOS_UPDATE=y CONFIG_CLOCKSOURCE_WATCHDOG=y CONFIG_GENERIC_CLOCKEVENTS=y ... CONFIG_HAS_DMA=y CONFIG_CHECK_SIGNATURE=y CONFIG_CPU_RMAP=y CONFIG_DQL=y CONFIG_NLATTR=y CONFIG_LRU_CACHE=m CONFIG_AVERAGE=y CONFIG_CORDIC=m
Avant de construire le noyau, vous souhaitez
probablement reprendre les options du noyau en cours d’exécution,
donc depuis l’un des fichiers mentionnés ci-dessus.
Avec la commande cp,
il suffit de copier le fichier de configuration du noyau en cours
situé dans le dossier /boot vers
la racine du dossier des sources du nouveau noyau. Il faut lui donner
obligatoirement le nom .config :
ExempleCopier le fichier noyau 3.2.0-4 en cours d’exécution vers le dossier linux-3.10.2 et le renommer en .config :
# cp /boot/config-3.2.0-4-amd64 ./.configUne autre solution, c’est d’utiliser la commande make defconfig :
# make defconfig HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o SHIPPED scripts/kconfig/zconf.tab.c SHIPPED scripts/kconfig/zconf.lex.c SHIPPED scripts/kconfig/zconf.hash.c HOSTCC scripts/kconfig/zconf.tab.o HOSTLD scripts/kconfig/conf Development Libraries *** Default configuration is based on ’x86_64_defconfig’ # # configuration written to .config #
e. Nettoyer
Pour nettoyer les traces d’une précédente
compilation qui pourrait interférer avec la nouvelle compilation,
la commande make dispose de deux
cibles :
-
mrproper qui enlève tous les fichiers générés, le fichier .config mais aussi les fichiers de sauvegarde afin de retrouver la configuration de base telle qu’elle était dans l’archive. Tapez Make mrproper dans un terminal :
# make mrproper CLEAN . CLEAN arch/x86/kernel/cpu CLEAN arch/x86/kernel CLEAN arch/x86/realmode/rm CLEAN arch/x86/vdso CLEAN arch/x86/lib CLEAN drivers/tty/vt CLEAN drivers/video/logo CLEAN firmware CLEAN kernel CLEAN lib CLEAN security/selinux CLEAN usr CLEAN arch/x86/boot/compressed CLEAN arch/x86/boot CLEAN arch/x86/tools CLEAN .tmp_versions CLEAN scripts/basic CLEAN scripts/kconfig CLEAN scripts/mod CLEAN scripts/selinux/genheaders CLEAN scripts/selinux/mdp CLEAN scripts CLEAN include/config include/generated arch/x86/include/generated CLEAN .config .version include/generated/uapi/linux/version.h Module.symvers
-
clean qui enlève les fichiers générés. Le fichier .config est conservé. Tapez make clean dans un terminal :
# make clean CLEAN . CLEAN arch/x86/kernel/cpu CLEAN arch/x86/kernel CLEAN arch/x86/realmode/rm CLEAN arch/x86/vdso CLEAN arch/x86/lib CLEAN crypto/asymmetric_keys CLEAN drivers/gpu/drm/radeon CLEAN drivers/scsi/aic7xxx CLEAN drivers/tty/vt CLEAN drivers/video/logo CLEAN firmware CLEAN kernel CLEAN lib/raid6 CLEAN lib CLEAN security/selinux CLEAN usr CLEAN Documentation/accounting CLEAN Documentation/auxdisplay CLEAN Documentation/connector CLEAN Documentation/filesystems CLEAN Documentation/ia64 CLEAN Documentation/laptops CLEAN Documentation/misc-devices/mei CLEAN Documentation/networking/timestamping CLEAN Documentation/networking CLEAN Documentation/pcmcia CLEAN Documentation/spi CLEAN Documentation/timers CLEAN Documentation/watchdog/src CLEAN arch/x86/boot/compressed CLEAN arch/x86/boot CLEAN arch/x86/tools CLEAN .tmp_versions
f. Construire le noyau
La compilation s’effectue avec la commande make. Pour accélérer
la compilation, vous pouvez utiliser le commutateur -j en indiquant le nombre de CPU plus
1. Par exemple pour huit cœurs : make -j9.
# make -j9 HOSTLD scripts/kconfig/conf scripts/kconfig/conf --silentoldconfig Kconfig SYSHDR arch/x86/syscalls/../include/generated/uapi/asm/unistd_32.h SYSHDR arch/x86/syscalls/../include/generated/uapi/asm/unistd_64.h SYSHDR arch/x86/syscalls/../include/generated/uapi/asm/unistd_x32.h SYSTBL arch/x86/syscalls/../include/generated/asm/syscalls_32.h SYSHDR arch/x86/syscalls/../include/generated/asm/unistd_32_ia32.h SYSHDR arch/x86/syscalls/../include/generated/asm/unistd_64_x32.h SYSTBL arch/x86/syscalls/../include/generated/asm/syscalls_64.h HOSTCC arch/x86/tools/relocs_32.o HOSTCC arch/x86/tools/relocs_64.o HOSTCC arch/x86/tools/relocs_common.o HOSTLD arch/x86/tools/relocs WRAP arch/x86/include/generated/asm/clkdev.h CHK include/generated/uapi/linux/version.h UPD include/generated/uapi/linux/version.h CHK include/generated/utsrelease.h UPD include/generated/utsrelease.h CC kernel/bounds.s GEN include/generated/bounds.h CC arch/x86/kernel/asm-offsets.s GEN include/generated/asm-offsets.h CALL scripts/checksyscalls.sh HOSTCC scripts/genksyms/genksyms.o ... H16TOFW firmware/edgeport/boot.fw H16TOFW firmware/edgeport/boot2.fw H16TOFW firmware/edgeport/down.fw H16TOFW firmware/edgeport/down2.fw IHEX firmware/edgeport/down3.bin IHEX2FW firmware/whiteheat_loader.fw IHEX2FW firmware/whiteheat.fw IHEX2FW firmware/keyspan_pda/keyspan_pda.fw IHEX2FW firmware/keyspan_pda/xircom_pgs.fw IHEX firmware/yam/1200.bin IHEX firmware/yam/9600.bin
La durée de la construction varie
entre 45 minutes et 1 heure.
g. Installer
L’installation des modules du noyau (Loadable Kernel Modules) s’effectue avec make
modules_install tandis que l’installation du noyau
proprement dit se réalise avec make
install. Nous pouvons combiner les deux commandes en une
seule :
# make modules_install install INSTALL arch/x86/crypto/ablk_helper.ko INSTALL arch/x86/crypto/aes-x86_64.ko INSTALL arch/x86/crypto/aesni-intel.ko INSTALL arch/x86/crypto/blowfish-x86_64.ko INSTALL arch/x86/crypto/crc32c-intel.ko INSTALL arch/x86/crypto/ghash-clmulni-intel.ko INSTALL arch/x86/crypto/glue_helper.ko INSTALL arch/x86/crypto/salsa20-x86_64.ko INSTALL arch/x86/crypto/sha1-ssse3.ko INSTALL arch/x86/crypto/twofish-x86_64-3way.ko INSTALL arch/x86/crypto/twofish-x86_64.ko INSTALL arch/x86/kernel/cpu/mcheck/mce-inject.ko INSTALL arch/x86/kernel/cpuid.ko INSTALL arch/x86/kernel/microcode.ko INSTALL arch/x86/kernel/msr.ko INSTALL arch/x86/kvm/kvm-amd.ko INSTALL arch/x86/kvm/kvm-intel.ko ... INSTALL /lib/firmware/whiteheat.fw MKDIR /lib/firmware/keyspan_pda INSTALL /lib/firmware/keyspan_pda/keyspan_pda.fw INSTALL /lib/firmware/keyspan_pda/xircom_pgs.fw MKDIR /lib/firmware/yam INSTALL /lib/firmware/yam/1200.bin INSTALL /lib/firmware/yam/9600.bin DEPMOD 3.10.2
Le dossier /boot contient
les fichiers suivants :
-
config-3.10.2
-
initrd.img-3.10.2
-
System.map-3.10.2
-
vmlinuz-3.10.2
Le fichier de configuration de GRUB est mis à jour.
Il suffit de redémarrer son système pour utiliser
le nouveau noyau Linux installé.
Debian et Ubuntu ont un GRUB version 2 alors
que CentOS 6 a la version 1. Le fichier de configuration est par
conséquent différent.
Exemple avec Debian/UbuntuAvec la commande grep et le motif 3.10.2, vérifiez si le fichier /boot/grub.cfg de Debian ou Ubuntu contient la configuration de l’amorçage du nouveau noyau :
# grep 3.10.2 /boot/grub/grub.cfg menuentry ’Debian GNU/Linux, avec Linux 3.10.2’ --class debian --class gnu-linux --class gnu --class os { echo ’Chargement de Linux 3.10.2 ...’ linux /boot/vmlinuz-3.10.2 root=/dev/mapper/SystemVG-rootLV ro quiet initrd /boot/initrd.img-3.10.2 menuentry ’Debian GNU/Linux, avec Linux 3.10.2 (mode de dépannage)’ --class debian --class gnu-linux --class gnu --class os { echo ’Chargement de Linux 3.10.2 ...’ linux /boot/vmlinuz-3.10.2 root=/dev/mapper/SystemVG-rootLV ro single initrd /boot/initrd.img-3.10.2Exemple avec CentOS 6
Avec la commande grep et le motif 3.10.2, vérifiez si le fichier /boot/grub.cfg contient la configuration de l’amorçage du nouveau noyau :
# grep 3.10.2 /boot/grub/grub.conf title CentOS (3.10.2) kernel /vmlinuz-3.10.2 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUK rd_NO_MD rd_LVM_LV=VolGroup/lv_swap LANG=fr_FR.UTF-8 SYSFONT=latarcyrhe sun16 KEYBOARDTYPE=pc KEYTABLE=fr-latin9 crashkernel=aut rd_LVM_LV=VolGroup/lv_root rd_NO_DM rhgb quiet initrd /initramfs-3.10.2.img
2. Compiler un noyau façon Debian
Cette méthode, comme son nom l’indique,
est destinée à la distribution Debian.
Vous effectuez le téléchargement
du code source du noyau, l’extraction de l’archive dans
le répertoire de l’utilisateur /home/bob.
Vous utilisez les outils de configuration de la même manière
que lors de la compilation classique.
a. Paquets nécessaires
Les paquets nécessaires à la
compilation à installer sont :
-
build-essential
-
kernel-package
-
debconf-utils
-
dpkg-dev
-
debhelper
-
ncurses-dev
-
fakeroot
D’autres paquets peuvent s’ajouter à la
liste ci-dessus en fonction des besoins ou des dépendances.
L’emplacement pour construire le noyau doit
disposer d’un espace disque suffisant.
b. Privilège utilisateur
Il n’est pas nécessaire d’être
le super utilisateur (root) pour compiler. Il suffit d’ajouter bob dans
le groupe src avec gpasswd :
Syntaxegpasswd <option> <utilisateur> <groupe(s)>
Options nécessaires :
Option
|
Description
|
|
courte
|
longue
|
|
-a
|
--add
|
Ajouter l’utilisateur mentionné à ce
groupe.
|
-d
|
--delete
|
Enlever l’utilisateur mentionné à ce
groupe.
|
Tapez dans un terminal :
$ sudo gpasswd -a bob src [sudo] password for bob Ajout de l’utilisateur bob au groupe src
Pour vérifier :
$ grep src /etc/group src:x:40:bob
Nous allons nous assurer avec la commande chown que l’utilisateur bob et que le groupe src soient propriétaires
de toute l’arborescence du dossier linux-3.10.2.
Syntaxechown <option> <util_propriétaire>:<groupe_propriétaire> <dossier>
Option nécessaire :
Option
|
Description
|
|
courte
|
longue
|
|
-R
|
--recursive
|
Modifier récursivement fichiers
et répertoires.
|
Tapez dans un terminal :
$ sudo chown -R bob:src ./linux-3.10.2 [sudo] password for bob:
c. Nettoyer
La commande make-kpkg permet
d’effectuer un nettoyage avant toute nouvelle compilation
des sources du noyau Linux.
Syntaxemake-kpkg <cible>
La cible nécessaire :
Cible
|
Description
|
clean
|
Efface tous les fichiers créés
dans le répertoire des sources du noyau.
|
Tapez dans un terminal make-kpkg
clean :
# make-kpkg clean exec make kpkg_version=12.036+nmu3 -f /usr/share/kernel- package/ruleset/minimal.mk clean ====== making target minimal_clean [new prereqs: ]====== This is kernel package version 12.036+nmu3. test ! -f .config || cp -pf .config config.precious test ! -e stamp-building || rm -f stamp-building test ! -f Makefile || \ make ARCH=x86_64 distclean make[1]: entrant dans le répertoire « /home/bob/linux-3.10.2 » CLEAN scripts/basic CLEAN scripts/kconfig CLEAN include/config include/generated make[1]: quittant le répertoire « /home/bob/linux-3.10.2 » test ! -f config.precious || mv -f config.precious .config rm -f modules/modversions.h modules/ksyms.ver scripts/cramfs/cramfsck scripts/cramfs/mkcramfs
d. Construire
Il n’est pas nécessaire d’avoir les
privilèges root car la
commande fakeroot simule l’environnement
de root pour le programme make-kpkg, lequel va générer
les paquets du noyau à construire.
Syntaxefakeroot make-kpkg <options> <cibles>
Options nécessaires :
Option
|
Description
|
--initrd
|
Stipule que cette image a besoin d’un initrd.
|
--append-to-version
|
L’argument est ajouté à la
valeur de la variable EXTRAVERSION qui est présente dans
le fichier Makefile. Vous pouvez mettre ainsi la date du jour de la
compilation.
|
Cibles nécessaires :
Cible
|
Description
|
kernel-image
|
Génère un paquet Debian
contenant un noyau Linux, et tous les modules définis dans
le fichier de configuration du noyau .config :
linux-image-3.10.2-20130726_3.10.2-20130726-10.00.Custom_amd64.deb
|
kernel-headers
|
Crée le paquet Debian des fichiers
d’en-têtes contenus dans le noyau Linux :
linux-headers-3.10.2-20130726_3.10.2-20130726-10.00.Custom_amd64.deb
|
Dans un terminal, tapez :
$ fakeroot make-kpkg --initrd --append-to-version=-$(date ’+%Y%m %d’) kernel-image kernel-headers exec make kpkg_version=12.036+nmu3 -f /usr/share/kernel- package/ruleset/minimal.mk debian APPEND_TO_VERSION=-20130726 INITRD=YES ====== making target debian/stamp/conf/minimal_debian [new prereqs: ]====== This is kernel package version 12.036+nmu3. test -d debian || mkdir debian test ! -e stamp-building || rm -f stamp-building install -p -m 755 /usr/share/kernel-package/rules debian/rules for file in ChangeLog Control Control.bin86 config templates.in rules; do \ cp -f /usr/share/kernel-package/$file ./debian/; \ done for dir in Config docs examples ruleset scripts pkg po; do \ cp -af /usr/share/kernel-package/$dir ./debian/; \ done test -f debian/control || sed -e ’s/=V/3.10.2-20130726/g’ \ -e ’s/=D/3.10.2-20130726-10.00.Custom/g’ -e ’s/=A/amd64/g’ \ -e ’s/=SA//g’ \ -e ’s/=I//g’ \ -e ’s/=CV/3.10/g’ \ -e ’s/=M/Unknown Kernel Package Maintainer <unknown@unconfigured.in.etc.kernel-pkg.conf>/g’ \ -e ’s/=ST/linux/g’ -e ’s/=B/x86_64/g’ \ /usr/share/kernel-package/Control > debian/control test -f debian/changelog || sed -e ’s/=V/3.10.2-20130726/g’ \ -e ’s/=D/3.10.2-20130726-10.00.Custom/g’ -e ’s/=A/amd64/g’ \ -e ’s/=ST/linux/g’ -e ’s/=B/x86_64/g’ \ -e ’s/=M/Unknown Kernel Package Maintainer <unknown@unconfigured.in.etc.kernel-pkg.conf>/g’ \ /usr/share/kernel-package/changelog > debian/changelog chmod 0644 debian/control debian/changelog test -d ./debian/stamp || mkdir debian/stamp make -f debian/rules debian/stamp/conf/kernel-conf make[1]: entrant dans le répertoire « /home/bob/linux-3.10.2 » ====== making target debian/stamp/conf/kernel-conf [new prereqs: ] ====== make EXTRAVERSION=-20130726 ARCH=x86_64 \ oldconfig; make[2]: entrant dans le répertoire « /home/bob/linux-3.10.2 » scripts/kconfig/conf --oldconfig Kconfig # # using defaults found in /boot/config-3.10.2 # # # configuration written to .config # make[2]: quittant le répertoire « /home/bob/linux-3.10.2 » make EXTRAVERSION=-20130726 ARCH=x86_64 prepare make[2]: entrant dans le répertoire « /home/bob/linux-3.10.2 » scripts/kconfig/conf --silentoldconfig Kconfig make[2]: quittant le répertoire « /home/bob/linux-3.10.2 » make[2]: entrant dans le répertoire « /home/bob/linux-3.10.2 » SYSHDR arch/x86/syscalls/../include/generated/uapi/asm/unistd_32.h SYSHDR arch/x86/syscalls/../include/generated/uapi/asm/unistd_64.h SYSHDR arch/x86/syscalls/../include/generated/uapi/asm/unistd_x32.h SYSTBL arch/x86/syscalls/../include/generated/asm/syscalls_32.h SYSHDR arch/x86/syscalls/../include/generated/asm/unistd_32_ia32.h SYSHDR arch/x86/syscalls/../include/generated/asm/unistd_64_x32.h SYSTBL arch/x86/syscalls/../include/generated/asm/syscalls_64.h HOSTCC arch/x86/tools/relocs_32.o HOSTCC arch/x86/tools/relocs_64.o HOSTCC arch/x86/tools/relocs_common.o HOSTLD arch/x86/tools/relocs WRAP arch/x86/include/generated/asm/clkdev.h CHK include/generated/uapi/linux/version.h UPD include/generated/uapi/linux/version.h CHK include/generated/utsrelease.h UPD include/generated/utsrelease.h CC kernel/bounds.s GEN include/generated/bounds.h ... chown -R root:root /home/bob/linux- 3.10.2/debian/linux-headers-3.10.2-20130726 chmod -R og=rX /home/bob/linux- 3.10.2/debian/linux-headers-3.10.2-20130726 dpkg --build /home/bob/linux- 3.10.2/debian/linux-headers-3.10.2-20130726 .. dpkg-deb : construction du paquet « linux-headers-3.10.2- 20130726 » dans « ../linux-headers-3.10.2-20130726_3.10.2- 20130726-10.00.Custom_amd64.deb ». cp -pf debian/control.dist debian/control make[2]: quittant le répertoire « /home/bob/linux-3.10.2 » make[1]: quittant le répertoire &laqu
Aucun commentaire :
Enregistrer un commentaire