Site perso : Emmanuel Branlard
## Solution a la main (modules_installes fout les modules dans /lib/modules ) # cd /usr/src/linux # make clean # make menuconfig # make && make modules_install # make install # cp arch/i386/boot/bzImage /boot/kernel-2.6.26-x-y # cp .config /boot/config-2.6.26-x-y # vi /boot/grub/grub.conf # reboot ## Solution debian simple # make-kpkg --initrd --revision=1 kernel_image kernel_headers # cd ../ # dpkg -i linux*.deb ## Solution debian avec compilations modules # man make-dpkg # put modules sources in /usr/src/modules (default location) make-kpkg --initrd --append-to-version=.rastamanu --revision=2 --added-modules=nvidia-kernel,broadcom-sta kernel_image kernel_headers modules_image make-kpkg --append-to-version=.batmanu --revision=1 --added-modules=nvidia-kernel,broadcom-sta kernel_image kernel_headers modules_image make-kpkg --append-to-version=.ironmanu --revision=1 --added-modules=nvidia-kernel,broadcom-sta kernel_image kernel_headers modules_image after install, the modules are in the folder /lib/modules/ (default locations for modules sources) /usr/src/modules ( make-kpkg kernel_source make-kpkg kernel_doc ) ## Solution debian Target buildpackage cree tous les deb : kernel_image, dbg, headers, doc, etc... su -c 'make-kpkg --initrd buildpackage' cd .. su -c 'dpkg -i linux*.deb' Livre utile - Linux Kernel in a Nutshell ----------------------------------------------------------------------------------- http://www.kroah.com/lkn/ -> Principe Tout ce qui doit être chargé en permance a compiler en dur (ext3, acpi et co...) et le reste en module (cryptage notement) Dépendances ----------------------------------------------------------------------------------- ->Paquets basique : sudo aptitude install build-essential kernel-package initramfs-tools fakeroot debconf-utils dpkg-dev debhelper bin86 ->Paquets pour créer le ".config" ".config", c'est le fichier de configuration contenant les instructions de compilation. *Pour une interface graphique (bleue) en console : installez le paquet libncurses5-dev Pour une interface en TK : installez le paquet tk-dev *Pour une interface en GTK+ (noyau 2.6 seulement) : installez les paquets libglib2.0-dev libgtk2.0-dev libglade2-dev Pour créer une configuration en mode console : make config ## Déconseillé pour les débutants et même les autres Pour créer une configuration en mode semi-graphique (menu bleu) : make menuconfig Pour créer une configuration en GTK : make gconfig Pour créer une configuration en TK ou en QT : make xconfig -> Droit d'ecriture pour les sources : $groups Si vous n'appartenez pas au groupe "src", ajoutez-vous : $sudo adduser $USERNAME src ## besoin de se fermer la session pour que cette commande prenne effet. $sudo chown $USERNAME /usr/src ## si la commande du dessus ne vous donne pas l'accès en écriture du dossier /usr/src... Il faut maintenant se reconnecter sous votre login pour que les nouveaux droits soit fonctionnels. su - $USERNAME ## Entrer votre mot de passe Allez dans le répertoire /usr/src: cd /usr/src Téléchargement des sources ----------------------------------------------------------------------------------- -> Le kernel Telecharges le dernier kernel stable http://www.kernel.org/pub/linux/kernel/ .4.tar.bz2 (wget ...) OU #aptitude search linux-source # aptitude install linux-source-2.6.24 (placé dans /usr/src/) Avec votre utilisateur, placez vous dans votre répertoire personnel ${HOME} puis créez un répertoire src/, décompactez l'archive contenant les sources du noyau : $ mkdir ${HOME}/src && cd ${HOME}/src/ $ tar -xvf /usr/src/linux-source-2.6.24.tar.bz2 Vous obtenez un répertoire ${HOME}/src/linux-source-2.6.24. Nous allons faire un lien symbolique pointant sur le répertoire précédemment créé et nous placer enfin dans le répertoire des sources : $ ln -s ${HOME}/src/linux-source-2.6.24 ${HOME}/src/linux -> les modules complémentaires : alsa et nvidia (installer et decompacter les sources) Pour la compilation rajouter : --added-modules=alsa-driver,nvidia-kernel-new La configuration du .config ----------------------------------------------------------------------------------- On peut commencer par prendre le .config actuel : cp /boot/config*/.config ${HOME}/src/linux/.config Afin de connaître précisément votre matériel, vous pouvez utiliser les commandes $lspci $lshw, sans oublier l'arborescence /proc/ http://doc.ubuntu-fr.org/tutoriel/kernel_options Les options section par section * Code maturity level options: Permet de cacher ou de faire apparaître les options qui sont encore en développement et donc considérées comme instables (souvent utile de dire 'oui' ici si l'on veut pouvoir profiter des dernières avancées du noyau). * General setup: Ensemble d'options générales sur votre système (sauf si vous voulez compiler pour des architectures très particulières, vous pouvez le laisser tel quel). * Loadable module support: Options concernant la gestion des modules (le défaut est presque toujours correct pour une utilisation normale). * Block layer: Les entrées/sorties sur votre carte-mère (inutile d'y toucher). * Processor type and features: Options relatives au(x) processeur(s): type (x86, Sparc, ...), hyper-thread, dual-core, SMP, etc. * Power management options (ACPI, APM): Options concernant l'économie d'énergie, la mise en veille et l'ACPI/APM. * Bus options (PCI, PCMCIA, EISA, MCA, ISA): Gestion de tous les endroits où vous pourriez enficher des cartes (PCI, PCMCIA, ISA, etc). * Executable file formats: La gestion des fichiers exécutable (Le suppport ELF doit toujours être à 'Y'). * Networking: Options concernant les protocoles réseau gérés par votre noyau (le défaut est bien souvent suffisant, mais jetez y un coup d'oeil à tout hasard). * Device Drivers: Options concernant tous les pilotes matériel (c'est bien souvent ici que l'on passe le plus de temps). * File systems: Options concernant les systèmes de fichiers gérés par votre noyau (vous aurez à y jeter un coup d'oeil). * Instrumentation Support: Option de profilage du noyau (inutile de l'activer). * Kernel hacking; Options de déboguage du noyau (inutile de l'activer sauf si vous avez des envies particulières). * Security options: Options concernant le modèle de sécurité de votre noyau (le défaut est suffisant) * Cryptographic options: Algorithmes cryptographiques pouvant être implantés dans le noyau (le défaut est suffisant). * Library routines: Bibliothèques communes du noyau (le défaut est suffisant) La compilation ----------------------------------------------------------------------------------- -> Options : -Les modules complémentaires : --added-modules=alsa-driver,nvidia-kernel-legacy -Ajouter un nom de version : --append-to-version=.`date +%y%m%d` -Si fakeroot installé --rootcmd fakeroot -initrd Cela permet de créer un fichier initrd. Cela est particulièrement utile si vous souhaitez utiliser des modules du noyau afin qu'ils soient pris en compte dès l'amorçage de l'image de votre noyau. Notez que cette option nécessite le paquet initramfs-tools , que vous pouvez installer en tapant : # aptitude install initramfs-tools - les cibles de make-kpkg : sont par exemple clean, binary(fais .deb doc etc et grub), kernel_image(fais .deb et grub), ou buildpackage (qui fait clean et binary) -> Compilation Sous Ubuntu : sudo make-kpkg --initrd buildpackage Sous Debian su -c 'make-kpkg --initrd buildpackage' Retournez dans le dossier précédent: cd .. su -c 'dpkg -i linux*.deb' Installation des *.deb ----------------------------------------------------------------------------------- Sous Ubuntu sudo dpkg -i linux*.deb Sous Debian su -c 'dpkg -i linux*.deb' Desinstallation du kernel ----------------------------------------------------------------------------------- aptitude remove --purge kernel-image-2.6.7-`date +%y%%m%d` http://doc.ubuntu-fr.org/tutoriel/comment_compiler_un_kernel_de_kernel.org http://www.andesi.org/noyau:compilation-d-un-noyau-a-la-sauce-debian http://gershwin.ens.fr/vdaniel/Doc-Locale/Outils-Gnu-Linux/Linux_Doc/YAGIL-2.2.1/HTML/c4517.php