Debian a une manière de recompiler le noyau Linux et les modules associés qui lui est propre. Voir aussi Debian et le noyau, Section 2.7.
L'utilisation de gcc
, binutils
et
modutils
de Debian unstable peut aider lors de la
compilation du dernier noyau Linux. Voir
/usr/share/doc/kernel-package/README.gz
, et spécialement la fin,
pour l'information officielle.
Comme c'est en évolution constante, la compilation d'un noyau est difficile même pour les meilleurs développeurs :
/etc/mkinitrd/mkinitrd.conf
.
Attention et reposez-vous toujours sur
/usr/share/doc/kernel-package/README.gz
de Manoj et Kent.
Assurez-vous d'obtenir la dernière version de kernel-package
de
unstable si vous voulez compiler la dernière version du noyau.
initrd n'est pas nécessaire pour un noyau compilé pour une seule
machine. Je l'utilise parce que je veux que mon noyau soit presque identique à
celui fournit par kernel-image. Si vous utilisez initrd, lisez
bien mkinitrd(8)
et mkinitrd.conf(5)
. Voir aussi
http://bugs.debian.org/149236
.
Soyez attentifs aux rapports de bogues relatifs à kernel-package
gcc
, binutils
et modutils
. Utilisez une
nouvelle version de ceux-ci si nécessaire.
Sous Debian, compiler un noyau personnalisé à partir des sources nécessite de
prendre certaines précautions. Utilisez la nouvelle option
--append_to_version avec make-kpkg
pour compiler
plusieurs images du noyau.
# apt-get install debhelper modutils kernel-package libncurses5-dev # apt-get install kernel-source-2.4.18 # utilisez la dernière version # apt-get install fakeroot # vi /etc/kernel-pkg.conf # entrez votre nom et adresse électronique $ cd /usr/src # dossier où va se faire la compilation $ tar --bzip2 -xvf kernel-source-2.4.18.tar.bz2 $ cd kernel-source-2.4.18 # si c'est votre source du noyau $ cp /boot/config-2.4.18-386 .config # récupérez la configuration actuelle comme defaut $ make menuconfig # personnalisez votre noyau $ make-kpkg clean # obligatoire (voir : man make-kpkg) $ fakeroot make-kpkg --append_to_version -486 --initrd \ --revision=rev.01 kernel_image \ modules_image # modules_image pour pcmcia-cs* etc. $ cd .. # dpkg -i kernel-image*.deb pcmcia-cs*.deb # installation
En réalité, make-kpkg kernel_image lance make oldconfig et make dep. N'utilisez pas --initrd si initrd n'est pas utilisé.
Si vous voulez les modules de pcmcia-cs, ou pas de support pcmcia, sélectionnez « General setup —> » dans « PCMCIA/CardBus support —> » dans make menuconfig et en mettant la configuration à « < > PCMCIA/CardBus support » (càd décocher la case).
Sur une machine SMP, configurez CONCURRENCY_LEVEL selon
kernel-pkg.conf(5)
.
Récupérez les sources officielles depuis :
http://www.kernel.org/
http://pcmcia-cs.sourceforge.net/
ou utilisez les sources équivalentes dans Debian et faites ce qui suit :
# cd /usr/src # tar xfvz linux-whatever.tar.gz # rm -rf linux # ln -s linux-whatever linux # tar xfvz pcmcia-cs-whatever.tar.gz # ln -s pcmcia-cs-whatever pcmcia # cd linux # make menuconfig ... configurez ... # make dep # make bzImage ... editions des fichiers de configuration pour lilo / grub ... ... déplacez /usr/src/linux/arch/i386/boot/bzImage vers boot ... ... /sbin/lilo ou ce qui se fait pour grub # make modules; make modules_install # cd ../pcmcia # make config # make all # make install ... ajoutez les noms des modules dont vous avez besoin dans /etc/modules # shutdown -r now ... redémarrez avec le nouveau noyau ...
La plupart des programmes « normaux » n'ont pas besoin des en-têtes
du noyau et peuvent même planter si vous les utilisez directement ; à la
place, ils doivent être compilés avec les en-têtes avec lesquels la
glibc
a été compilée, qui sont les versions de
/usr/include/linux
et /usr/include/asm
du système
Debian.
Donc, ne créez pas de liens vers /usr/src/linux
depuis
/usr/include/linux
et /usr/include/asm
, comme suggéré
par certains documents trop vieux.
Si vous avez besoin d'en-têtes du noyau particuliers pour une
application spécifique à un noyau, changez le Makefile
pour
inclure les chemins vers
rep-des-entêtes-particulières/include/linux
et
rep-des-entêtes-particulières/include/asm
.
Les nouveaux noyaux 2.4 Debian fournis dans kernel-image-2.4.NN sont très modulaires. Vous devez vous assurer que les modules effectuant les fonctions du noyau que vous recherchez sont là.
Bien qu'il y ait de nombreux exemples pour /etc/modules
dans la
section suivante, on me dit qu'un moyen correct de corriger les problèmes
relatifs aux modules est de fournir un alias au périphérique dans un fichier de
/etc/modutils/
puisqu'assez d'alias sont disponibles avec les
noyaux actuels.
Voir Dispositions spéciales pour
manipuler les modules, Section 2.7.5 et Documentation/*.txt
dans les sources de Linux pour l'information précise.
/etc/modules
doit contenir les lignes suivantes pour que PCMCIA
fonctionne :
# driver ISA PnP isa-pnp # driver PCMCIA bas niveau # yenta_socket # je n'en ai apparemment pas besoin
Le reste est pris en charge par des scripts PCMCIA (du paquet
pcmcia-cs
), depmod
et kmod
. J'ai besoin
de isa-pnp
, sûrement parce que mon portable possède une vieille
interface ISA-PCMCIA. Des portables récents avec une interface Cardbus/PCMCIA
peuvent ne pas en avoir besoin.
Miquel van Smoorenburg miquels@cistron.nl
nous dit :
« J'ai tout simplement supprimé tout ce qui a rapport à pcmcia sur mon
portable au travail, y compris cardmgr, et j'ai installé un noyau 2.4 avec le
support cardbus, et le nouveau paquet hotplug
de Woody.
Si vous avez une carte 32 bits, vous n'avez pas besoin du paquet pcmcia ; le noyau 2.4 comprend cardservices. Et le pilote tulip standard devrait marcher avec votre carte dlink.
—Mike »
[NON TESTE] /etc/modules
doit contenir les lignes suivantes pour
que SCSI fonctionne :
# noyau SCSI scsi_mod # driver générique SCSI sg # disque SCSI sd_mod # Tous les autres modules nécessaires pour le matériel ...
depmod
peut peut-être se charger lui-même de certains de ces
modules.
/etc/modules
doit contenir les lignes suivantes pour obtenir des
fonctionnalités réseau supplémentaires :
# net/ipv-4 ip_gre ipip # net/ipv-4/netfilter # iptable (dans l'ordre) ip_tables ip_conntrack ip_conntrack_ftp iptable_nat iptable_filter iptable_mangle # ip_nat_ftp ip_queue # ipt_LOG ipt_MARK ipt_MASQUERADE ipt_MIRROR ipt_REDIRECT ipt_REJECT ipt_TCPMSS ipt_TOS ipt_limit ipt_mac ipt_mark ipt_multiport ipt_owner ipt_state ipt_tcpmss ipt_tos ipt_unclean # #ipchains #ipfwadm
Ces lignes ne sont pas optimisées. depmod
pourrait se charger de
certains des modules.
Les étapes suivantes sont nécessaires pour activer le système de fichiers journalisé Ext3, en utilisant une image du noyau Debian précompilée ( > 2.4.17) :
# cd /etc; mv fstab fstab.old # sed 's/ext2/ext3,ext2/g' <fstab.old >fstab # vi /etc/fstab ... mettre le type du système de fichiers racine à "auto" au lieu de "ext3,ext2" # cd /etc/mkinitrd # echo jbd >>modules # echo ext3 >>modules # echo ext2 >>modules # cd / # apt-get update; apt-get install kernel-image-2.4.17-686-smp ... installe le noyau le plus récent et configure le démarrage du système (lilo est exécuté) # tune2fs -j -i 0 /dev/hda1 # tune2fs -j -i 0 /dev/hda2 ... Pour tous les systèmes de fichier EXT2 convertis en EXT3 # shutdown -r now
La journalisation EXT3 du système de fichier est maintenant activée. Une
entrée « type » ext3,ext2 dans fstab
assure
un passage sûr à EXT2 si le noyau ne supporte pas EXT3 pour les partitions
autres que la partition racine.
Si un noyau 2.4 est déjà installé et que vous ne souhaitez pas le réinstaller,
faites la même chose jusqu'aux commandes apt-get
et :
# mkinitrd -o /boot/initrd.img-2.4.17-686-smp /lib/modules/2.4.17-686-smp # lilo # tune2fs -j -i 0 /dev/hda1 # tune2fs -j -i 0 /dev/hda2 ... pour tous les FS EXT2 convertis en EXT3 # shutdown -r now
La journalisation EXT3 du système de fichier est maintenant activée.
Si /etc/mkinitrd/modules
n'a pas été configuré quand
mkinitrd
a été exécuté et que vous souhaitez ajouter des modules
au démarrage du système :
... à l'invite de initrd pour accéder au shell (5 sec.), appuyer sur RETURN # insmod jbd # insmod ext3 # modprobe ext3 prend peut-être tout en charge # insmod ext2 # ^D ... continue le démarrage
Sur l'écran de démarrage (dmesg
), « cramfs: wrong
magic » apparaît mais cette erreur est connue pour être sans conséquence.
Ce problème a été résolu dans Sarge (10/2002). Voir http://bugs.debian.org/135537
et le EXT3 File System
mini-HOWTO
ou
/usr/share/doc/HOWTO/en-txt/mini/extra/ext3-mini-HOWTO.gz
pour
plus d'information.
Sur certains systèmes, le noyau se bloque lorsque EXT3 est activé mais je n'ai eu aucun problème (avec 2.4.17).
Pour une raison inconnue, le module RTL-8139 ne s'appelle plus rtl8139, mais 8139too. Éditez simplement votre fichier /etc/modules pour changer l'entrée correspondante lorsque vous mettez à jour un noyau 2.2 en 2.4.
Avec kernel-image-2.4.*
, le support du port parallèle est fournit
en module. Activez-le avec :
# modprobe lp # echo lp >> /etc/modules
Voir Documentation/parport.txt
dans le source de Linux.
Le noyau Linux peut se plaindre : « Too many open files » (trop
de fichiers ouverts). Cela est dû à la petite valeur (8096) de
file-max. Pour corriger ce problème, lancez les commandes
suivantes en tant que root (ou mettez-les dans un script de démarrage de
/etc/rcS.d/*
.
# echo "65536" >/proc/sys/fs/file-max # pour les noyaux 2.2 et 2.4 # echo "131072" >/proc/sys/fs/inode-max # pour le noyau 2.2 seulement
Pour plus d'information sur le changement des paramètres du noyau dans le
système de fichiers /proc
, lisez
Documentation/sysctl/*
dans les sources de Linux.
D'autres exemples de manipulation des paramètres du noyau sont dans
/etc/init.d/networking
et Étranges problèmes d'accès à certains sites
web, Section 3.7.5.
Guide de référence pour Debian
CVS, lun 03 avr 2005 22:57:18 UTCosamu@debian.org
gerbs@free.fr