Le royaume de Eric Buist >> Informatique >> Quelques-unes de mes recherches personnelles >> Trucs et astuces >> Astuces spécifiques au DIRO
Me contacter Plan du site
<< Imprimer de quoi Établir le profil d'une machine Linux Ajouter une touche personnelle >>

Établir le profil d'une machine Linux

Il faut tout d'abord déterminer quels sont les invariants d'une machine. On en retrouve un bon nombre, qu'on ne pourra pas nécessairement détecter du point de vue logiciel. Certaines données peuvent être obtenues facilement, d'autres demandent de la devinette. Sous Windows, on retrouve toutes les données dans le Gestionnaire de Périphériques, soit en cliquant droit sur le Poste de Travail et en choisissant Propriétés. Toutefois, ces paramètres dépendent des pilotes qui gèrent le matériel. Après l'installation de Windows 98, une carte ATI All-in-Wonder 128 apparaîtra comme une carte VGA PCI! Pourtant, la signature de la carte doit bien exister en mémoire, non? Windows ne nous la donne pas, les données sont trop complexes pour l'utilisateur moyen! Sous Linux, il est possible d'entreprendre une analyse de la machine sans quitter le clavier et sans nécessiter des pilotes déjà installés. Vous pouvez entreprendre l'analyse immédiatement après l'installation. Cela se fait en examinant les fichiers du système de fichiers /proc. Nous allons ici examiner les fichiers principaux décrivant une machine du DIRO se trouvant dans un laboratoire d'informatique.

Le processeur

Ces données sont localisées dans /proc/cpuinfo. Voici ce qui s'affiche si on entre cat /proc/cpuinfo au clavier sous le shell.

processor  : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 6
model name      : Celeron (Mendocino)
stepping        : 0
cpu MHz         : 399.106
cache size      : 128 KB
fdiv_bug        : no
hlt_bug         : no
sep_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 mmx fxsr
bogomips        : 796.26

Autant vous le dire tout de suite, je ne dispose pas des connaissances pour effectuer l'analyse exhaustive de ce qu'on voir là. On apprend toutefois sans mal que c'est un Intel Celeron 400Mhz. Ce processeur peu coûteux dispose d'une mémoire cache de 128 KB, ce qui est un peu petit. Les autres informations sont superflues pour nous et elles feront fuir l'utilisateur moyen, c'est dommage tout de même. Un jour, nous pourrons, je l'espère, tout comprendre ce qu'il y a là.

La mémoire

J'admets que l'on peut obtenir cette information lors de l'ouverture de la machine, mais il arrive que nous ne puissions pas avoir l'occasion de voir la machine s'amorcer. Il serait illogique de redémarrer une machine sur le campus pour répondre à une simple et impérieuse curiosité tandis que la commande cat /proc/meminfo nous livrera l'information en peu de temps! Le résultat de cette commande sur la même machine que pour le processeur est le suivant.

        total:    used:    free:  shared: buffers:  cached:
Mem:  130883584 108068864 22814720 62394368  9760768 50515968
Swap: 1077501952   917504 1076584448
MemTotal:    127816 kB
MemFree:      22280 kB
MemShared:    60932 kB
Buffers:       9532 kB
Cached:       49332 kB
SwapTotal:  1052248 kB
SwapFree:   1051352 kB

En arrondissant un peu, on en conclut que la machine dispose d'une mémoire de 128MB, ce qui n'est pas mal du tout. L'espace de swap, à peu près équivalent à la mémoire virtuelle de Windows, s'élève à 1 Gb, ce qui n'est pas mal du tout. Comme vous vous rendez compte, interpréter ces données est simple, cela ne relève que de simples lectures et conversions si besoin.

Le bus PCI

Mais la simplicité ne peut pas durer en informatique. Allons voir ce qui se cache dans /proc/pci. Lorsque je regarde cela, je me dis que cela ne vaut pas la peine de tout débouler le fichier comme ça. Je vais donc le diviser en sections et tenter de tirer ce que je peux de chacune d'elles.

PCI devices found:
  Bus  0, device   0, function  0:
    Host bridge: Intel 440BX - 82443BX Host (rev 3).
      Medium devsel.  Master Capable.  Latency=64.  
      Prefetchable 32 bit memory at 0xf8000000 [0xf8000008].
  Bus  0, device   1, function  0:
    PCI bridge: Intel 440BX - 82443BX AGP (rev 3).
      Medium devsel.  Master Capable.  Latency=128.  Min Gnt=140.
  Bus  0, device   7, function  0:
    ISA bridge: Intel 82371AB PIIX4 ISA (rev 2).
      Medium devsel.  Fast back-to-back capable.  Master Capable.  No bursts.  

On apprend ici que le chipset de la machine est un Intel 440BX. On découvre aussi que le board est capable d'AGP, ce qui en fait nécessairement un board assez récent, peut-être supporte-t-il ACPI, mais rien ne nous le dit pour le moment. Ces trois lignes décrivent ainsi le chipset, le pont de AGP vers PCI et le pont de PCI vers ISA.

  Bus  0, device   7, function  1:
    IDE interface: Intel 82371AB PIIX4 IDE (rev 1).
      Medium devsel.  Fast back-to-back capable.  Master Capable.  Latency=64.  
      I/O at 0x1060 [0x1061].
  Bus  0, device   7, function  2:
    USB Controller: Intel 82371AB PIIX4 USB (rev 1).
      Medium devsel.  Fast back-to-back capable.  IRQ 9.  Master Capable.  Latency=64.  
      I/O at 0x1040 [0x1041].

Bon, cela ne sert pas à grand-chose, à part qu'on sait que la machine pourrait disposer d'un port USB et a, comme tout le monde, ses contrôleurs IDE.

  Bus  0, device   7, function  3:
    Bridge: Intel 82371AB PIIX4 ACPI (rev 2).
      Medium devsel.  Fast back-to-back capable.  

Bon, cela dit de quoi! On vient de voir la mention ACPI, le board possède donc un certain support de cette norme. Cela laisse supposer que nous avons affaire à un boîtier d'alimentation ATX avec SoftOff et tout ce que l'ordinateur moderne comporte à ce niveau. Pour le démontrer formellement, il faudrait éteindre l'ordinateur avec shutdown -h now, encore un test que je préfère ne pas tenter pour ne pas me faire taper sur les doigts.

  Bus  0, device  12, function  0:
    Multimedia audio controller: Unknown vendor Unknown device (rev 3).
      Vendor id=1073. Device id=c.
      Medium devsel.  IRQ 11.  Master Capable.  Latency=64.  Min Gnt=5.Max Lat=25.
      Non-prefetchable 32 bit memory at 0xf4000000 [0xf4000000].

QUOI? Lorsque j'ai vu cela, j'ai été surpris. Cette entrée semble dire que la machine posséderait une carte son bas de gamme, peut-être du noname. Il se peut que cette carte soit intégrée à même la carte mère.

  Bus  0, device  14, function  0:
    Ethernet controller: Intel 82557 (rev 8).
      Medium devsel.  Fast back-to-back capable.  IRQ 10.  Master Capable.  Latency=66.  Min Gnt=8.Max Lat=56.
      Non-prefetchable 32 bit memory at 0xf4008000 [0xf4008000].
      I/O at 0x1000 [0x1001].
      Non-prefetchable 32 bit memory at 0xf4100000 [0xf4100000].

Bon, on a une carte réseau, mais il me semble impossible d'en obtenir la vitesse. C'est une Ethernet soit 10 Mbits, soit 100 Mbits, mais rien ne peut le confirmer. Il se peut fort bien que ce soit une 10, car les 100 sont souvent notées Fast Ethernet.

  Bus  1, device   0, function  0:
    VGA compatible controller: ATI Mach64 GB (rev 92).
      Medium devsel.  Fast back-to-back capable.  IRQ 11.  Master Capable.  Latency=66.  Min Gnt=8.
      Non-prefetchable 32 bit memory at 0xf5000000 [0xf5000000].
      I/O at 0x9000 [0x9001].
      Non-prefetchable 32 bit memory at 0xf4200000 [0xf4200000].

La carte graphique est là, c'est une ATI Mach64. On peut effectuer une recherche sur le site de ATI et se rendre compte que cette carte n'est pas AGP. Elle est PCI, étant mentionnée sur le bus PCI, mais pas AGP. Ce qui permet d'affirmer que la fente AGP de l'ordinateur est vide.

Le disque dur

Pour celui-là, on va se contenter du premier. On suppose que la machine est bien montée et qu'on a branché ce disque comme Primary Master, ce qui est la convention. Le fichier spécial pour ce disque sera donc hda, il faut donc chercher un répertoire de ce genre dans /proc. Le disque dur est un IDE, on va donc chercher dans /proc/ide. Là se trouve le sous-répertoire hda qui contient les fichiers que nous avons besoin. Le fichier /proc/ide/hda/model contient

FUJITSU MPD3130AT

Le fichier /proc/ide/hda/capacity contient, quant à lui,

25431840

Cela ne parle pas fort, on sort donc la pitonneuse et on obtient, après deux divisions par 1024, 24.25. Il nous manque des unités, il va falloir les déduire. On a effectué une double conversion, donc il faut exclure l'octet et le kilo-octet, puisque l'unité fondamentale en informatique est l'octet ou bien le bit. Mais il est illogique de spécifier une capacité de disque dur en bits. La valeur est soit 24.25MB (à rejeter!) ou 24.25 GB (un peu mieux). On va tout de même traiter le cas des bits pour regarder la marge d'erreur amenée par la déduction. On obtient alors 3178980. Il faudrait que la valeur de la capacité soit en kilo-bits pour refléter un disque plausible de 3GB. Je devrai retourner sur la machine en question chercher plus de données. Je ne peux pas, par cette simple valeur, obtenir la capacité réelle du disque.

Le lecteur de CD-ROM

Il faut tout d'abord obtenir le fichier spécial du lecteur, en tapant ls -l /dev/cdrom. Sur la machine que j'ai observée, j'ai obtenu un lien symbolique vers /dev/hdc. On va donc retourner dans /proc pour obtenir l'information voulue. Il faut regarder le fichier /proc/ide/hdc/model qui contient

MATSHITA CR-589

Bon, on aimerait mieux sa vitesse, non? On va tenter de la trouver! Il faut tout d'abord se rendre sur le site de Matshita. Le site n'existe pas et il faut faire une recherche pour trouver du Matshita, ce qui nous mène à Panasonic. Après des recherches sur le site de Panasonic, j'ai enfin trouvé la page qui nous intéresse. On y apprend qu'on a affaire à un lecteur 32x.