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.

