On Wed, Sep 25, 2002 at 09:52:21AM +0200, Romuald DELAVERGNE wrote:
> Apr�s quelques recherches voil� ce que je peux rajouter � propos d'uname.
> La commande 'uname' fait uniquement appel � la fonction syst�me uname (man 
> 2 uname).
> Les infos qu'elle renvoie sont stock�es dans un buffer qui est initialis� 
> � la compilation du noyau.
> Elles sont d'ailleurs accessible dans /proc/sys/kernel/.
> Voici le fichier source: rep_linux/init/version.c
> D'ailleurs dans 'include/linux/uts.h' on peut voir le fameux 'unknown' en 
> dur.
> J'en d�duit donc que ce que renvoie uname n'est pas la config de la 
> machine mais celle de la machine o� a �t� compil� le noyau. Il n'y a que 
> le nom de la machine qui serait calcul� dynamiquement.
> Arr�tez-moi si j'ai dit des conneries.

Correct, le noyau a une structure system_utsname initialis�e
� la compilation (dans init/version.c). Apparement, les
seuls champs de la structure qui changent apr�s sont:
- Le nom de la machine (avec sethostname) (kernel/sys.c)
- Le domaine de la machine (setdomainname) (kernel/sys.c)

(Je sais pas si on peut parler de "calcul dynamique" dans ce
cas l�... �a fait toujours partie de la structure.)

> J'en d�duit donc que ce que renvoie uname n'est pas la config de la 
> machine mais celle de la machine o� a �t� compil� le noyau. 

Heureusement, �a n'est pas vrai (� moins que je n'ai pas
compris), sinon les noyaux cross-compil�s (compil� sur un
PC pour un Mac par exemple) diraient "i686" au lieu de
"PowerPC" :-)    Les valeurs sont choisies par le
compilateur, suivant la configuration du noyau:

Makefile:
$(CC) [...] -DUTS_MACHINE='"$(ARCH)"' [...] -c -o init/version.o init/version.c

(donc, la "machine" prend la valeur de l'architecture pour
laquelle on compile). Pareil pour UTS_RELEASE, en un peu
plus compliqu�.

Donc:
- uname(1) ne fait que �crire en humain le contenu d'une
  structure du noyau
- cette structure est initialis�e au moment de la
  compilation
- le hostname/domainname est ensuite sauv� dans cette
  structure

Et par cons�quence: l'architecture et processeur indiqu� par
uname indiquent ce pour quoi ce noyau a �t� compil�, ET NON
PAS ce sur quoi il tourne en ce moment. Ce sur quoi il
tourne en ce moment est indiqu� par un cat /proc/cpuinfo.


Bon c'est pas tout �a, mais mon syst�me ne boote toujours
pas.

A+
Yves.

Répondre à