Recapitulatif compilation noyau (pour kmf)

Fermé
pristella Messages postés 859 Date d'inscription samedi 23 octobre 2004 Statut Contributeur Dernière intervention 8 mai 2007 - 21 déc. 2004 à 23:36
 kmf - 22 déc. 2004 à 00:21
salut (kmf)

COMPILATION D'UN NOUVEAU NOYAU


Bonjour,
Petit récapitulatif de la compilation de mon nouveau noyau (pour corrections):

Le noyau d'origine est un : linux-2.6.8.1-10mdksmp.
Mon nouveau noyau est un : linux-2.6.8.1-12mdk

voilà comment j'ai procédé :
Il n'y avait pas de sources du noyau sur ma mandrake 10.1 community, j'ai donc installé les sources qui se trouvaient sur les CD (kernel-source-2.6.8.1-10mdk mais différent de l'original smp en plus !!) puis j'ai migré en 10.1 officiel avec URPMI.
A l'issue, le kernel-source s'est mis à jour et m'a donné un kernel-source-2.6.8.1-12mdk (le lien linux et les sources ont été installé automatiquement dans /usr/src.

PREPARATION DU FICHIER CONFIG

cd /usr/src/linux
make mrproper (pour nettoyer les sources du noyau)
cp /boot/config-2.6.8.1-10mdksmp /usr/src/linux/.config
make oldconfig (j'ai fait enter à chaque arrêt)
make xconfig (pour les modification de configuration)
-dans processor type and future puis processor family, j'ai choisi pentium 4.
-dans high memory, j'ai choisi off (car j'ai 512mo de ram) mrdrrrr :(:(j'ai oublié de le coché celui-là. (dois-je refaire toute la compilation ???? :(:(
-dans files system puis ext3 journalling file system support, j'ai choisi yes.
Puis j'ai sauvé ce fichier config.

Ensuite toujours dans /usr/src/linux j'ai fait

make bzImage (certains font make puis make install avant make modules_install ????)

puis

make modules

puis

cd /usr/src/linux/
cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.8.1-12mdk
cp System.map /boot/System.map-2.6.8.1-12mdk

puis

cd /boot
mv vmlinuz vmlinuz.old
ln -sf /boot/vmlinuz-2.6.8.1-12mdk vmlinuz
rm System.map
ln -s System.map-2.6.8.1-12mdk System.map

puis

cd /usr/src/linux/
make modules_install

#pour le mkinitrd, j'ai pas compris ?????

PREPARATION DU FICHIER LILO.CONF

edition du fichier :

cd /usr/src/linux
emacs /etc/lilo.conf (et voilà le resultat après modifs)

default="linux-2.6.8.1-10mdksmp"
boot=/dev/hda
map=/boot/map
keytable=/boot/fr-latin1.klt
prompt
nowarn
timeout=100
message=/boot/message
menu-scheme=wb:bw:wb:bw

#ancien noyau

image=/boot/vmlinuz.old
label="linux-2.6.8.1-10mdksmp"
root=/dev/hda6
initrd=/boot/initrd.img
append="devfs=nomount acpi=ht resume=/dev/hda7 splash=silent"
vga=788
read-only

#nouveau noyau

image=/boot/vmlinuz
label="linux-2.6.8.1-12mdk"
root=/dev/hda6
initrd=/boot/initrd.img
append="devfs=nomount acpi=ht resume=/dev/hda7 splash=silent"
vga=788
read-only

#le reste ne change pas

image=/boot/vmlinuz
label="linux-nonfb"
root=/dev/hda6
initrd=/boot/initrd.img
append="devfs=nomount acpi=ht resume=/dev/hda7"
read-only

image=/boot/vmlinuz
label="failsafe"
root=/dev/hda6
initrd=/boot/initrd.img
append="failsafe acpi=ht resume=/dev/hda7 devfs=nomount"
read-only

other=/dev/hda1
label="windows"
table=/dev/hda


puis je sauvegarde lilo.conf en faisant simplement lilo à la console.

Voilà, j'espère ne pas avoir fait d'erreur.

Au fait dans high memory, j'ai oublié de coché off, il est à 4Go par defaut. dois-je refaire toute la compilation ???? :(:(

Si il y a des erreurs, n'hésite pas à les rectifier.

merci d'avance

A+

1 réponse

Salut,

j'ai l'impression qu'il n'y a pas d'erreurs et en principe ca doit marcher.
Pour le "high memory" ca va parfaitment marcher mais ce sera peut-etre un petit peu plus efficace pour ta machine si tu l'enleves. Avec les 4go il y a une gestion de memoire plus complique mais pour toi ca ne sert a rien si tu n'as que 512 Mb, mais ca fonctionne bien sur quand-meme. Les noyaux de Mandrake precompiles sont comme ca.

Pour le "make oldconfig" et "make xconfig" tu as fais en double. Peut-etre je me suis mal exprime dans l'autre poste. Si tu fais "make xconfig" pour modifier des choses tu n'a pas besoin de "make oldconfig".
Ce qui importe c'est de le faire au moins une fois et apres avoir mis une ancienne copie dans .config.
Le "make oldconfig" c'est identique a "make xconfig" + saufgarder sans modifs. Ca sert surtout si tu recompile la prochaine fois avec une autre version. Tu prends ton fichier config (maintenant avec le processeur, ext3, ...) et la il te suffira de faire "make oldconfig".

Pour les liens et les noms de vmlinuz, System.map dans /boot il n'y a pas d'erreurs qui empecherait le fonctionnement mais ce n'est pas indispensable de faire comme tu as fais. Le choix des noms de fichiers de noyau est libre tant le lilo.conf tient correctement compte de ca. Pour le System.map il est bien d'avoir le fichier avec la version: "System.map-version". Ca sert en quelque sorte pour les symboles des modules mais meme si ca manque ce n'est pas trop grave. Le lien de
ln -s System.map-2.6.8.1-12mdk System.map
ne fait pas de mal mais il ne remplit pas de fonction cruciale non-plus.
Je mettrais aussi le fichier .config comme copie dans /boot/config-version
(simplement pour saufegarde et rappel).

Pour l'ordre de make il y a plusieures facons de faire mais toutes doivent bien marcher. Moi j'evite de faire le "make install" car ca modifie le lilo.conf tout seul et il copie le noyau dans /boot/vmlinuz, eventuellement en ecrasant l'autre noyau. Je n'aime pas de ne pas controler ca moi meme. Je mets toujours des noms "vmlinuz-version" dans le /boot et dans le lilo.conf (ou le fichier config pour grub).

Alors pour le "mkinitrd" tu n'en as pas besoin a cause de "ext3" que tu as mis dans le noyau (et pas seulement en module). Tant tu n'as pas de disque scsi/sata pour lesquelles il faut avoir de drivers qui ne marchent qu'en module (et pas si on les met directement dans le noyau) ce n'est pas necessaire.
Avec "mkinitrd" on cree un fichier supplementaire qui sert comme image de ramdisk (disque dans la memoire) pour que le noyau puissent charger des modules apres le boot. Normalement ces modules se trouvent sur le disque dur et on n'en a pas besoin. Cependant si pour l'access a ce meme disque dur on a besoin de modules (comme ext3 ou driver scsi) comment charger les modules avant qu'on sache lire le disque ? La solution est le ramdisk dans le memoire que le noyau pourra lire sans driver special et qui est charge par le bios avec le noyau pendant le boot.
Donc si tu ne cree pas de ramdisk il faut enlever le truc correspondant dans le lilo.conf. En principe si on l'utilise il faut avoir pour chaque version du noyau aussi une version du ramdisk (le fichier: /boot/initrd.img).

Pour la compilation du noyau je reserverais le repertoire /usr/src/linux uniquement pour le noyau de Mandrake. Si tu reprends le 2.6.9 ou bien-tot le 2.6.10 tu peux le mettre dans ton home (s'il y a assez de place), disons dans /home/<toi>/kernel_test/linux-2.6.9 ou comme tu veux.
Tu peux presque tout faire en tant qu'utilisateur normal (configuration/compilation). C'est seulement pour les installations ou il faut etre root (make modules_install, copie de fichier noyau dans /boot etc.).
0