FUNIX

Mettez un manchot dans votre PC



[ Présentation | Etape 1 | Installation | Configuration | Construction du noyau | Configuration du loader | Essais successifs  | Si ça foire ]

Dernière modification 15.07.02

Mettre à jour son noyau

Présentation

Dans cette page je vous présente les manips que j'ai faites pour installer le noyau 2.5.7 sur ma Mandrake 8.1 avec noyau 2.4.8-26mdk. Ce n'est ni le dernier noyau disponible, ni la dernière version de la Mandrake, mais cette page a pour objet de vous présenter une "recette" pour mettre à jour son noyau qui marche pour toutes les configs matérielles et logicielles.
Vous constaterez que la compil d'un noyau n'est pas insurmontable, il faut savoir qu'il y a toujours moyen de revenir au noyau précédent, donc pas de panique.

Toutes les manips décrites sont à faire en tant que root.

Etape 1

La première étape est de créer une disquette de boot au cas où, je vous recommande la commande drakfloppy pour créer la disquette, elle vous sera utile si l'installation du nouveau noyau foire.
Dans un deuxième temps, on va éviter de booter en mode graphique (avec le lancement du login graphique kdm ou de gdm), pour cela dans le fichier /etc/inittab on mettra:

id:3:initdefault:

Avec le 3 au lieu du 5.
 

Installation

On va chercher le noyau sur un des miroirs qu'on trouvera sur www.kernel.org, pour ma part j'avais pas envie de récupérer une trentaine de Mo avec ma modeste ligne RTC. Je me suis rabattu sur archive tarball linux-2.5.7.tar.gz qui fait dans les 33Mo plus ancienne trouvée dans un magazine. On la placera sous /usr/src.
A présent plaçons nous sous /usr/src

cd /usr/src

On décompresse l'archive

tar xvfz linux-2.5.7.tar.gz

Ca donne un répertoire linux-2.5.7 Maintenant veillez à installer les packages tcl et tk puis expect
 

Configuration

On rentre dans le répertoire /usr/src/linux-2.5.7, on lance l'utilitaire de configuration du noyau:

make xconfig

La fenêtre suivante apparaît:

Vous pouvez voir qu'on peut sauver la configuration dans un fichier (Store Configuration to File) ou charger la config d'un fichier (Load Configuration from file).  C'est cette dernière option qui nous intéresse car il existe sur la Mandrake un fichier config de votre configuration courante, il vaut mieux partir de cette bonne base. Concrètement il faudra charger le fichier /boot/config après vous pouvez toujours modifier quelques paramètres.
La configuration est divisée par thèmes, pour chaque thème on a un tas de paramètres à fixer, exemple avec le thème Processor type and features:

Vous avez la possibilité d'inclure le support de telle ou telle chose dans le noyau ou en module, l'intérêt du module est qu'il est chargé en mémoire uniquement quand c'est nécessaire, du coup le noyau se retrouve plus petit, ce qui est mieux, dans la mesure du possible on choisira l'option module. Ne pas hésiter à cliquer sur Help pour chaque paramètre et de suivre les conseils.

Je vous conseille fortement de sauvegarder votre config dans un fichier, c'est utile pour des essais successifs, une fois terminée vous devez au niveau de la fenêtre principale cliquez sur Save and Exit.

Sur ma Mandrake 8.1, j'ai eu une suite d'erreur pour des variables dans le fichier config courant non reconnues, elles seront tout bonnement ignorées.
 

Construction du noyau

On tapera maintenant :

make dep

Puis

make bzImage

Voilà le résultat:

tools/build -b bbootsect bsetup compressed/bvmlinux.out CURRENT > bzImage
Root device is (3, 5)
Boot sector 512 bytes.
Setup is 4780 bytes.
System is 796 kB
make[1]: Quitte le répertoire `/usr/src/linux/arch/i386/boot'

Mon noyau fait donc 796 Ko

On construit maintenant les modules:

make modules

On installe le tout

make modules_install

Cela va créer un répertoire /lib/modules/2.5.7 qui ne va absolument pas écraser les modules du noyau précédent qui sont sous /lib/modules/2.4.8-26mdk/

Maintenant on va sous /usr/src/linux-2.5.7/arch/i386/boot et on copie le noyau sous /boot

cp bzImage /boot/vmlinuz-2.5.7

On va maintenant dans /usr/src/linux-2.5.7 et on tape :

cp System.map /boot/System.map-2.5.7

On tape maintenant sous /boot

mkinitrd /boot/initrd-2.5.7 2.5.7

NOTE Lors d'une mise à jour précédente, j'ai obtenu le message suivant:
No module 53c7,8xx found for kernel 2.4.2
J'ai donc tapé
cp /usr/src/linux-2.4.2/drivers/scsi/53c7,8xx.o /lib/modules/2.4.2/kernel/drivers/scsi/
et relancé la commande mkinitrd

Voilà l'arborescence de /boot

-rw-r--r--    1 root     root          512 jui 13 20:12 boot.0300
lrwxrwxrwx    1 root     root           11 jui 13 20:12 boot.b -> lilo/boot.b
-rw-r--r--    1 root     root          624 aoû  5  2001 chain.b
lrwxrwxrwx    1 root     root           18 jui 15 06:51 config -> config-2.4.8-26mdk
-rw-r--r--    1 root     root        37483 sep 23  2001 config-2.4.8-26mdk
-rw-r--r--    1 root     root          256 jui 13 20:12 fr-latin1.klt
drwxr-xr-x    2 root     root         1024 jui 13 20:12 grub/
-rw-r--r--    1 root     root       170957 jui 13 20:12 initrd-2.4.8-26mdk.img
-rw-r--r--    1 root     root       454880 juil 15 09:50 initrd-2.5.7
lrwxrwxrwx    1 root     root           22 jui 13 20:12 initrd.img -> initrd-2.4.8-26mdk.img
lrwxrwxrwx    1 root     root           14 jui 13 19:56 kernel.h -> kernel.h-2.4.8
-rw-r--r--    1 root     root          441 jui 15 06:51 kernel.h-2.4.8
lrwxrwxrwx    1 root     root           12 jui 13 20:12 lilo -> lilo-graphic/
drwxr-xr-x    2 root     root         1024 jui 13 19:53 lilo-graphic/
drwxr-xr-x    2 root     root         1024 jui 13 20:12 lilo-menu/
drwxr-xr-x    2 root     root         1024 jui 13 20:12 lilo-text/
-rw-------    1 root     root        50688 jui 13 20:12 map
lrwxrwxrwx    1 root     root           12 jui 13 20:12 message -> lilo/message
-rw-r--r--    1 root     root          652 aoû  5  2001 os2_d.b
lrwxrwxrwx    1 root     root           22 jui 13 20:14 System.map -> System.map-2.4.8-26mdk
-rw-r--r--    1 root     root       435683 sep 23  2001 System.map-2.4.8-26mdk
-rw-r--r--    1 root     root       442747 mar 18 09:45 System.map-2.5.7
lrwxrwxrwx    1 root     root           19 jui 13 20:12 vmlinuz -> vmlinuz-2.4.8-26mdk
-rw-r--r--    1 root     root      1047752 sep 23  2001 vmlinuz-2.4.8-26mdk
-rw-r--r--    1 root     root       860412 juil 15 09:45 vmlinuz-2.5.7

Configuration du loader

On lance drakboot puis on clique sur configuration de LILO/GRUB
 


Choisissez le loader (lilo ou grub), puis cliquez sur Avancé

Saisissez les informations concernant votre nouveau noyau. Au niveau de image, doit apparaître les fichiers vmlinuz disponibles sous /boot

Maintenant on peut configurer le menu de lilo, votre ancien noyau doit rester celui par défaut.


On clique sur Terminer. Voilà c'est terminé, au reboot vous devriez  avoir le choix de booter avrc le nouveau noyau.

Vous pouvez maintenant lancer kdm ou gdm, pour cela taper (toujours en tant que root) :

init 5

Si vous retrouvez le login graphique, vous pouvez modifier /etc/inittab pour remettre le 5 à la place du 3. Si le lancement échoue, vous pouvez toujours lancer kde, pour cela, votre utilisateur doit avoir dans sa home directory un fichier .xinitrc contenant :

PATH="$PATH:/usr/X11R6/bin"
exec startkde

Pour lancer kde il suffit de taper

startx

Essais successifs

Il se peut qu'un tas de services ne marchent plus (carte son, réseau, ...), plusieurs essais de config sont nécessaires pour que vous arriviez à refaire tout marcher correctement, voilà les manips pour refaire un essai

cd  /usr/src/linux-2.5.7/

make xconfig

Charger votre fichier de config  préalablement sauvé

make clean
make dep
make bzImage
make modules

rm -Rf /lib/modules/2.5.7

make modules_install
cd /usr/src/linux-2.5.7/arch/i386/boot
cp bzImage /boot/vmlinuz-2.5.7
cd /usr/src/linux-2.5.7
cp System.map /boot/System.map-2.5.7

Et on reboote.

Si ça foire

En toute théorie vous devriez pouvoir rebooter avec votre ancien noyau, toutefois au cas où, vous devez rebooter avec la disquette contenant l'ancien noyau. Vous devez ensuite :
supprimer /boot/System.map et recréer le lien de System.map vers System.map-2.4.8-26mdk
ln -s System.map-2.4.8-26mdk System.map

N'oublier pas  de remettre le 5 dans le fichier /etc/inittab.
 
 

[Retour page d'accueil FUNIX]