Dark_Schneider Close the World, Open the Net | Code :
- Information :
- Il existe différents type de noyau sous Mandrake :
- - support du SMP ( kernel-smp )
- - support pour plus de 4Go de RAM ( kernel-i686-up-4GB )
- - spécialisé pour l'utilisation en entreprise avec le support du SMP, support pour plus de 4Go de RAM ( kernel-enterprise )
- - spécialisé pour les système multiprocesseur sous PIII avec plus de 64Go de RAM ( kernel-p3-smp-64GB )
- - optimisés pour la sécurité avec notamment l'inclusion des patch grsec avec le support SMP ( kernel-secure )
- - optimisé pour le multimédia avec notamment l'intégration des patch low-latency, le 0(1) scheduler, le patch preempt et ce en version normal ( kernel-multimedia ) ou SMP ( kernel-multimedia-smp )
- - bleeding-edge et expérimental de Thomas Backlund qui contiennent des patchs non intégrés dans les noyaux Mandrake mais offrant des fonctionnalités en plus ( kernel-tmb )
- Prérequis
- Il vous faut un certains nombres de packages. Tous peuvent être installé via urpmi
- REQUIS :
- gcc, gcc-cpp ou gcc2.96, binutils, make, kernel-source, tar, bzip2, gunzip
- Installation
- Ensuite on fais en tant que root ( veuillez à bien faire attention à ce que vous faites :
- $> rm -f /usr/src/linux<- efface le lien symbolique/raccourci qui pointe sur la version actuelle du noyau.
- $> mkdir /usr/src/linux-2.4.x<- on crée le répertoire dans lequel se trouveront les sources
- $> ln -s /usr/src/linux-2.4.x /usr/src/linux<- refait le lien symbolique/raccourcis
- si vous utilisez des rpm :
- $> rpm -ivh glibc-devel.x-ymdk.rpm<- les headers du kernel se trouvent dans glibc-devel maintenant
- $> rpm -ivh kernel-source_2.4.x-ymdk.rpm<- install les sources du kernel
- $> rpm -ivh kernel-2.4.x-ymdk.rpm<- install le rpm qui contient le binaire du kernel
- A partir de la Mandrake 9.2 il faut le package bootloader-utils pour installer le rpm du noyau ( ou un noyau de la mdk 9.2/cooker ). Normalement si vous avez une mdk 9.2 il est déjà installé pour vous.
- En utilisant les sources originales sur kernel.org ou l'un de ses mirroirs :
- Si vous avez directement pris les sources originales sous formes de tar.gz, alors vous faites :
- $> cd /usr/src
- $> tar -zxvf /path/to/kernel-2.4.x.tar.gz
- si vous voulez patcher les source d'un précédent kernel pour passer à la version 2.4.v :
- $> cd /usr/src
- $> bzip2 -dc patch-2.4.v.bz2 | patch -p0<- si vous avez récupérer le tar.bz2
- $> gzip -dc patch-2.4.v.gz | patch -p0<- si vous avez récupérer le tar.gz
- Compilation
- Modules vs builtins
- Avant de commencer d'abord il faut que vous comprenniez certaines choses. Le noyau linux a besoin de drivers pour accéder à tout ( disque dur, partition, matériel, ... ). Ces drivers peuvent être soit inclus directement dans le noyau, et donc ils sont chargés lors du lancement du noyau et ce que l'on en ait besoin ou pas; soit compilés en tant que module, c'est-à-dire externe au noyau et disponible que lorsque l'on en a besoin. Par exemple sous Mandrake pratiquement tout est sous forme de modules.
- Cependant tout mettre en module peut avoir des inconvénients. En effet, imaginez que vous mettez le support de votre controleur SCSI, ou le support de votre type de partition en module, comment le noyau fait-il pour le charger ? En effet pour charger le module qui se trouve sur le disque dur, le noyau doit accéder au disque, lire la partition pour charger le module, or si le noyau n'a pas le pilote pour lire la partition ... vous avez droit à un beau "Kernel Panic VFS unable to mount root filesystem".
- Comment résoudre alors ce problème si on veut garder une approche modulaire ? c'est là que le initrd vient à notre secours. Le initrd contient les différents modules dont on a besoin au démarrage et le boot loader le charge en mémoire lors du démarrage et le rend disponible au noyau. Ainsi le noyau pourra charger le pilote/module pour le controleur IDE et votre système de fichier pour lire vos partitions. Bien sûr dans le boot loader il faudra préciser où trouver le initrd.
- Dans ce HOWTO nous allons considérer que avez pratiquement tout en module et que vous utilisez un initrd.
- Minimum syndical et pilotes communs
- Utilisations de modules
- Vous devriez activer kmod et le support des modules pour pouvoir utiliser des modules :
- "Loadable Module Support" -> mettez tout à Y
- Processeurs
- Là vous pouvez préciser votre processeur pour que le noyau charge des optimisations pour votre processeur et surtout activer la MTRR utilisé par XFree pour accélérer l'affichage et donc "indispensable" si vous voulez regarder des films ( Divx, DVD ).
- "MTRR ( Memory Type Range Register ) Support" -> Y
- Options génériques
- + Là vous pouvez activer le support réseau ( indispensable même si vous n'avez pas de réseau car XFree a besoin de support réseau ) :
- "Networking Support" -> Y
- + Vous pouvez activer le support pour les ports PCI ( à moins que vous n'ayez un PC datant de la guerre 14-18, je pense que vous en avez besoin )
- "PCI Support" -> Y
- + Vous pouvez activer le support pour les périphériques hotplug ( i.e que vous branchez après le démarrage du PC ) comme les cartes PCMCIA, PC-Card et USB. Il vous faudra installer hotplug pour que cela marche.
- "Support for hot-pluggable devices" -> Y
- + Vous pouvez activer sysctl ce qui vous permettra de tweaker votre système.
- "Sysctl support" -> Y
- + Vous devez activer le support pour les binaires au format ELF car les exécutables linux sont dans ce format.
- "Kernel support for ELF binaries" -> Y
- + Vous pouvez activer la gestion d'énergie de votre ce qui lui permettra notamment de s'éteindre correctement. Ici on ne va s'occuper que de l'APM car le support ACPI n'est pas forcément complet et sur certains système il peut même causer des ralentissements notables. Mais si vous avez besoin de l'ACPI n'hésitez pas, notamment si vous avez un portable.
- "Power Management support" -> Y
- "Advance Power Management BIOS Support" -> Y
- Si votre ordinateur ne s'éteint pas correctement, soit vous pouvez essayer d'actyiver l'ACPI, soit demander au noyau d'essayer APM en mode réel pour éteindre la machine :
- "Use Real Mode APM BIOS call to Power Off" -> Y
- Port Parallèle
- + Vous pouvez activer le support pour votre port parallèle si vous l'utiliser.
- "Parallel port support" -> Y ou m
- "PC-style hardware" -> Y ou m
- Plug and Play configuration
- + Support du Plug & Play ( surnommé aussi Plug & Pray ;-) ). Si vous avez des ports ISA vous pouvez aussi activez le support PnP pour l'ISA, il vous faudra alors le package isapnp.
- "Plug and Play support" -> Y ou m
- Block devices
- + Support pour le lecteur de disquette
- "Normal floppy disk support" -> Y ou m
- Si vous avez des périphériques particuliers sur votre port // de type CDROM, disque dur, vous y trouvez les différents pilotes pour ces périphériques.
- + Support d'un initrd. Nous allons le considérer comme indispensable étant donnée que nous sommes parties sur l'hypothèse de mettre la majorité des pilotes en module lorsque c'est possible.
- "Initial RAM disk ( initrd ) support" -> Y
- Multi-device support ( RAID and LVM )
- Si vous voulez faire du RAID logiciel ou utiliser LVM, allez jeter un oeil dans cette section.
- Networking Options
- Tout ce qui concerne le réseau ( socket, protocol TCP/IP, fonctionnalités firewall/NAT avec Netfilter/Iptables, IPSEC, IPX ).
- + support des sockets Unix. Indispensable, notamment pour XFree.
- "Unix domain socket" -> Y
- + support TCP/IP. Indispensable surtout si vous êtes en réseau.
- "TCP/IP networking" -> Y
- Les autres options sont laissées à votre discrétion. Sachez que Netfilter/Iptables est indispensable si vous voulez mettre en pace un firewall ou une passerelle NAT.
- ATA/IDE/MFM/RLL support
- Tout ce qui concerne votre matériel IDE ( disque dur, CDROM ). Vous y trouverez aussi l'émulation IDE -> SCSI indispensable si vous voulez utiliser votre graveur IDE sous Linux. Il y aura aussi le support de votre chipset IDE. Surtout n'oubliez de l'activer. + support ATA/IDE/MFM/RLL pour accéder au sous menu qui vous permettra de choisir les pilotes IDE dont vous avez besoin.
- "ATA/IDE/MFM/RLL support" -> Y
- + support HD/CDROM IDE + DMA/UDMA + autres joyeuseries/optimisations + émulation SCSI pour graveur.
- "Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support" -> Y
- "Include IDE/ATA-2 DISK support" -> Y
- "Use multi-mode by default" -> Y
- "Include IDE/ATAPI CDROM support" -> Y ou m
- "SCSI emulation support" -> Y ou m
- "PCI IDE chipset support" -> Y
- "Generic PCI IDE chipset support" -> Y
- "Generic PCI bus-master DMA support" -> Y
- "Use PCI DMA by default when available" -> Y
- N'oubliez pas ensuite d'activer le pilote pour votre chipset en le mettant en Y voire m. Mais je vous recommande en Y.
- SCSI support
- Tout ce qui concerne votre matériel SCSI ainsi que le support générique SCSI si vous voulez utiliser un graveur IDE, et aussi les ZIP sur port parallèle.
- + Support SCSI pour les disques durs et CDROM.
- "SCSI support" -> Y ou m
- "SCSI disk support" -> Y ou m
- "SCSI CDROM support" -> Y ou m
- + Support SCSI générique pour ceux qui utilisent un graveur IDE.
- "SCSI generic support" -> Y ou m
- Les pilotes pour les cartes SCSI se trouvent dans la sous catégorie "SCSI Low-level drivers"
- REM : Ceux qui ont un ZIP sur port // doivent activer un des 2 pilotes dans la sous catégorie "SCSI Low-level drivers". Le premier sert pour les ZIP 250, le second pour les ZIP 750 :
- "IOMEGA parallel port (ppa - older drives)" -> Y ou m
- "IOMEGA parallel port (imm - newer drives)" -> Y ou m
- Network device support
- Tout ce qui concerne les périphériques réseau ( cartes réseaux, support PPP ). Les pilotes des cartes réseau 10/100 se trouvent dans la sous catégorie Ethernet (10 or 100Mbit )
- "Network device support" -> Y
- + Ceux qui ont l'ADSL ou une connection RTC/RNIS ( qui ont donc besoin du support PPP ), trouverons leur bonheur là
- "PPP (Point-to-point protocol) support" -> Y ou m
- les autres options PPP -> Y ou m
- Input core support
- Si vous avez une souris ou un clavier USB ( périphériques HID ), vous devriez activer les différents éléments
- Character devices
- Permet d'activer les terminaux virtuels, le port série, souris PS/2, joysticks, le support AGP ( agpgart ), la DRI ( /dev/dri ), l'I2C ( util pour le monitoring et pour les cartes TV ).
- + Terminaux virtuels
- "Virtual terminal" -> Y
- "Support for console on virtual terminal" -> Y
- + ports séries ( si vous l'utilisez )
- "Standard generic (8250/16550 and compatible UARTs) serial support" -> Y
- + support I2C pour une carte TV
- "I2C support -> I2C support" -> Y ou m
- "I2C support -> I2C bit-banging interfaces" -> Y ou m
- + support souris PS/2
- "Mice -> PS/2 mice ( aka "auxiliary device" ) support" -> Y ou m
- + support AGP
- "/dev/agpgart (AGP support)" -> Y ou m
- Ensuite vous choisissez le chipset de votre port AGP
- + support DRI ( 3D accélérée )
- "DirectRendering Manager ( XFree86 DRI support )" -> Y
- "DirectRendering Manager ( XFree86 4.1.0 and higher DRI support )" -> Y
- Ensuite vous choisissez la carte graphique qu'il faut
- Multimedia devices
- Vous pourrez y activer le support pour votre carte TV
- "Video For Linux" -> Y ou m
- Dans la sous catégorie "Video For Linux" vous choissisez le pilote qui correspond au pilote de votre carte TV.
- File systems
- Là vous pourrez activer le support pour différents systèmes de fihcier ( ext2/ext3, reiserfs, XFS, JFS, FAT16/FAT32, NTFS en lecture seul, UDF pour les DVD, iso9660 pour les CDROM, NFS, Coda, SMB ( réseau windows ), Davfs ), les quotas.
- "ISO 9660 CDROM file system support" -> Y
- "/proc file system support" -> Y
- "UDF file system support (read-only)" -> Y
- "Partition Types -> PC BIOS ( MSDOS partition table ) support" -> Y
- "Native Language support -> Codepage 850 (Europe)" -> Y ou m
- "Native Language support -> NLS ISO 8859-1 (Latin1, Western european Languages)" -> Y ou m
- "Native Language support -> NLS ISO 8859-15 (Latin1, Western european Languages with euro)" -> Y ou m
- "DirectRendering Manager ( XFree86 4.1.0 and higher DRI support )" -> Y
- Ensuite vous choisissez la carte graphique qu'il faut
- Compilation
- $> cd /usr/src/linux<- on va dans le rep où se trouve les sources du nouveau noyau
- Si vous utilisez les sources issues d'un rpm faites par précaution la commande suivante :
- $> make mrproper
- Maintenant nous allons configurer et compiler le kernel.
- $> make xconfig<- lance une interface graphique en tcl/tk pour configurer le noyau. Vous avez besoin du package nommé : tk
- Note : il existe aussi d'autre interface pour configurer le noyau et celles-ci sont en mode console comme par exemple : make menuconfig
- Celui-ci nécessite le package ncurses
- On paramètres les options, regardez les aides quand vous hésitez. On quitte en sauvegardant. Puis :
- $> make dep clean && make bzImage && make modules && make modules_install<- on lance la compilation. c'est long et croisez les doigts pour que tout se passe sans problême $> cp arch/i386/boot/bzImage /boot/vmlinux-2.4.x<- on copie l'image du noyau dans /boot
- Configuration de lilo/grub
- Lilo :
- On vas dans /etc/lilo.conf , on copie une section qui concerne l'ancien noyau, cela ressemble à peu près à cela :
- image=/boot/vmlinuz
- label=linux
- root=/dev/hda2
- initrd=/boot/initrd.img
- read-only
- On copie donc cette section dans le lilo.conf à la fin ou la suite de celle-ci. Puis on met pour image l'emplacement du noyau (selon les commandes que j'ai donné c'est /boot/vmlinux-2.4.x . On remplace le label linux par test.
- Cela devrait ressembler alors à cela à peu près :
- image=/boot/vmlinux-2.4.x
- label=test
- root=/dev/hda2
- initrd=/boot/initrd.img
- read-only
- Attention ! : seul les lignes "image =" et "label=" doivent être modifiées.
- On sauvegarde, puis on tape :
- $> /sbin/lilo<- on réinstalle lilo qui est le boot loader
- On redémarre, et au prompt de boot de grub on tape test pour essayer le nouveau noyau.
- Grub :
- On va dans /boot/grub/menu.lst , on copie une section qui concerne l'ancien noyau, cela ressemble à peu près à cela :
- title linux
- kernel (hd2,0)/boot/vmlinuz root=/dev/hda2
- initrd (hd2,0)/boot/initrd.img
- On copie donc cette section dans le menu.lst à la fin ou la suite de celle-ci. Puis on met pour image l'emplacement du noyau (selon les commandes que j'ai donné c'est /boot/vmlinux-2.4.x . On remplace le titre linux par test.
- Cela devrait ressembler alors à cela à peu près :
- title test
- kernel (hd2,0)/boot/vmlinux-2.4.x root=/dev/hda2
- initrd (hd2,0)/boot/initrd.img
- On redémarre, et au prompt de boot de lilo on sélectionne test pour essayer le nouveau noyau.
- Ceux qui installent le kernel à partir de rpm, notamment les rpm de cooker, doivent remplacer les noms génériques par les noms réelles. Ainsi il faudra :
- renommer /boot/vmlinuz en /boot/vmlinuz-2.x.y-zmdk
- renommer /boot/initrd.img en /boot/initrd-2.x.y-zmdk
- Pour connaitre les noms faites : $> ls -l /boot
- et mettez les bons noms
- Quelques explications rapides
- Liens symboliques :
- Nous avons utilisé une commande qui permettait de créer des liens symboliques ou raccourcis. En voici l'explication brève :
- ln = link
- -s = symbolique
- syntaxe : ln -s fichier_original lien_vers_le_fichier
- initrd :
- J'ai aussi parlé de initrd. Ce fichier est une image chargé par le noyau au tout début du boot et qui lui permet notamment de charger des drivers/modules et autres. Pour faire un nouveau initrd, il faut utiliser le programme mkinitrd comme suit :
- $> /sbin/mkinitrd -f --ifneeded /boot/initrd-2.4.x.img 2.4.x
- Sous Mandrake, il existe un script qui se charge de créer un initrd pour vous et de mettre en place les liens symboliques dessus. Imaginons que vous voulez créer un initrd pour la version 2.4.21.5mdk du noyau, alors il vous suffit de taper :
- /usr/share/loader/make-initrd 2.4.21.5mdk
- Il suffit ensuite de remplacer dans lilo.conf ou menu.lst, pour votre nouveau noyau, les occurences de initrd.img avec initrd-2.4.x.img.
- Plus d'info avec man initrd et aussi man mkinitrd
- Compilation :
- Nous avons utilisé des commandes pour la compilation du noyau. Voyons rapidement une explication :
- make mrproper<- "nettoie" les source du noyau. util seulement si vous installer à partir d'un rpm
- make dep clean<- crée les dépendances entre les modules
- make bzImage<- crée l'image du noyau. C'est celle qui est chargé au boot
- make modules<- crée les modules
- make modules_install<- installe les modules
- Installation d'un noyau 2.6 sous mandrake 9.2 :
- Ceci est vraiment donné à titre informatif. Sachez que le noyau 2.6 peut ne pas fonctionner sur votre système ou être plus instable.
- Préparation :
- REQUIS :
- mkinitrd, modutils, bootloader-utils, module-init-tool, udev, sysfsutils, libsysfs0
- Tout d'abord vous devez récupérer de nouvelles versions de certains packages :
- modutils >= 2.4.25-2mdk
- mkinitrd >= 3.4.43-10mdk
- bootloader-utils >= 1.6
- udev
- sysfsutils
- module-init-tools >= 0.9.15
- Le plus simple est de récupérer les packages disponibles sur cooker par exemple sur ce site ftp.
- Installation :
- Une fois fois que vous avez téléchargé et installé les packages requis, il ne vous reste plus qu'à récupérer un des noyaux 2.6 disponibles pour Mandrake. Vous avez le choix entre les noyaux 2.6 de Mandrake ( kernel-2.6 ) ou les kernel 2.6 de Thomas Backlund ( kernel-tmb-2.6 ).
- Dans notre cas, nous prendrons un noyau standard de mandrake ( même si je conseille souvent les noyau tmb disponibles dans contrib ou sur le site de Thomas Backlund ).
- Au moment où j'écris ces lignes le noyau 2.6 le plus récent de mdk est kernel-2.6.1.1mdk-1-1mdk.i586.rpm .
- Une fois qu'il est téléchargé, il suffit de faire :
- $> rpm -Uvh kernel-2.6.1.1mdk-1-1mdk.i586.rpm<- on installe le noyau
- $> /sbin/lilo<- on lance lilo pour vérifier que l'entrée pour le noyau 2.6 que l'on vient d'installer a été ajouté
- $> generate-modprobe.conf > /etc/modprobe.conf<- on génère le fihcier modprobe.conf qui contient la liste des modules à charger
- Ensuite il suffit de redémarrer et de sélectionner le nouveau noyau au démarrage en croisant les doigts. Sachez que si vous avez des pilotes propriétaires ( NVIDIA, ATI, Nforce, ... ) il vous faudra les recompiler/réinstaller voire même les patcher si ceux-ci ne sont pas compatible avec lenoayu 2.6
- Note 1:
- Le noyau 2.6 n'utilise plus le fichier /etc/modules.conf pour charger et configurer les modules. Désormais c'est le fichier /etc/modprobe.conf qui est utilisé.
- Dans le même ordre d'idée, c'est désormais le fichier /etc/modprobe.preload qui permet de spécifier les modules à charger au démarrage de manière inconditionnelle.
- Note 2:
- Les modules ont désormais comme extension .ko ( kernel object ) et non plus .o .
- Note 3:
- Ceux qui veulent les drivers nvidia pour noyau 2.6 peuvent se rendre sur http://minion.de/
- Quelques liens utiles :
- Wiki de Mandrake sur les différents noyaux existant sous mandrake :
- http://qa.mandrakesoft.com/twiki/b [...] dkKernel92
- Site de Thomas Backlund :
- http://www.netikka.net/tmb/
- L'actualité hebdomadaire du noyaux ( Kernel traffic ) :
- http://kt.zork.net/kernel-traffic/latest.html
- News, Interview et doc sur le noyau et ses hackers :
- http://kerneltrap.org/
- Envie de hacker le noyau linux ? commnecez par là :
- http://www.kernelnewbies.org/
- Le site officiel où récupérer le kernel original (vanilla) :
- http://www.kernel.org
- Un kernel HOWTO en FR :
- http://www.freenix.org/unix/linux/ [...] WTO-3.html
- http://www.freenix.org/unix/linux/ [...] HOWTO.html
- HOWTO migration vers 2.4.x :
- http://gcu-squad.org:8080/?viewtip+28
- http://www.toolinux.com/linutile/c [...] .htm <- ce howto m'a fortement inspiré, et je conseille fortement d'y faire un tour pour le lire.
- Surement le meilleur guide pour la compilation d'un noyau 2.4.x :
- http://casteyde.christian.free.fr/ [...] c6339.html
|
---------------
Mandriva : parce que nous le valons bien ! http://linux-wizard.net/index.php
|