Re: Fichier System.map

Page principale

Répondre à ce message
Auteur: Francois-Xavier 'FiX' KOWALSKI
Date:  
À: Frederic Mantegazza
CC: ML Guilde
Sujet: Re: Fichier System.map
Frederic Mantegazza <mantegazza@???> writes:

> Bon, je viens de faire une petite erreur de manipe. J'ai vire le
> fichier /boot/System.map du noyau installe par la SuSE.
>
> Ce fichier est-il indispensable ? Si oui, comment le re-generer ?
> Puis-je re-installer le paquet contenant le noyau de la SuSE ? Quel
> risque y a-t-il ?


Bon, comme je me suis lamentablement plante lors de ma tentative
precedente...

A regarder le Makefile du noyau, le System.map est le resultat de la
commande suivante:

nm vmlinux | grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | sort > System.map

Le probleme -- bien sur -- est que "vmlinux" n'est que le code utile
du noyau. L'image utilise -- incluant le bootstrap i386 -- inclue une
version compresse du noyau, qui est de-compactee par le code du
bootstrap. Cette image est donc a priori inutilisable pour regenerer
System.map.

Apres une rechrge (grep/find/strings), System.map n'est utilise que
par les modutils, sa disparition est donc potentiellement tres
dangereuse...

Seulement vu la presence de /proc/ksyms, qui donne le meme type de
resultat (a la l'offset des symboles pres), je ne vois pas a priori
l'interet de System.map. Le code de depmod donne la solution:

/*
* Add the symbol defined in the kernel, simulating a pseudo module.
* Create a dummy module entry in the list of modules.
* This module is used to handle the exported kernel symbols.
*
* Load from the currently running kernel
* OR
* from a file containing kernel symbols from a different kernel.
* The file can be either a "System.map" file or a copy of "/proc/ksyms".
*
* Return -1 if any error.
*/

Pour regenerer ton System.map, il te suffit donc de faire, en tournant
ton noyau:

cat /proc/ksyms > /boot/System.map

[avec les ajustements de nom fichier (suffixe) & de path correspondant
a ta distrib]

...voila! (Ouf)

PS: le risque est donc nul si ton noyau support le fs-type "/proc", ce
qui est desormais toujours le cas en pratique.

--
François-Xavier 'FiX' KOWALSKI