Newsgroup: it.comp.os.linux.sys
Titolo: DMI

Mi stavo chiedendo se fosse possibile cambiare le stringhe DMI
direttamente da linux.
Con dmidecode si possono decodificare, ma se volessi modificare quelle
attuali come ad esempio
"Asset tag: To be filled by O.E.M."
?

>>>>>>>> ncalrpc   Local procedure call
 
forse + con ncalrpc
5.2.1 DmiAccessMode
      This enumerated type defines the access modes for an attribute.
            FIELD NAME                 DESCRIPTION
       MIF_UNKNOWN               Unknown access mode
       MIF_READ_ONLY             Read access only
       MIF_READ_WRITE            Readable and writable
       MIF_WRITE_ONLY            Write access only
       MIF_UNSUPPORTED           Attribute is not supported
         typedef enum {
              MIF_UNKNOWN,
              MIF_READ_ONLY,
              MIF_READ_WRITE,
              MIF_WRITE_ONLY,
              MIF_UNSUPPORTED
         } DmiAccessMode_t;
(seguita 5.2.1)
ed in particolare da rpc con metodo:
DmiSetMode
      This data structure describes set operations
        FIELD NAME                      DESCRIPTION
       DMI_SET               Set data values
       DMI_RESERVE           Reserve resources for a set operation
       DMI_RELEASE           Release previously reserved resources
         typedef enum {
              DMI_SET,
              DMI_RESERVE,
              DMI_RELEASE
         } DmiSetMode_t;
6.3.2 DmiSetAttribute
      The DmiSetAttribute procedure provides a simple method for setting a
      single attribute value. The compId, groupId, attribId, and keyList
      identify the desired attribute; the setMode parameter defines the
      procedure call as a Set, Reserve, or Release operation. The new
      attribute value is contained in the DmiDataUnion structure whose
      address is passed in the value parameter.
DmiErrorStatus_t DMI_API
DmiSetAttribute (
    [in]      DmiHandle_t           handle, [in]      DmiId_t             
     compId, [in]      DmiId_t               groupId, [in]      DmiId_t   
               attribId, [in]      DmiAttributeValues_t* keyList, [in]    
     DmiSetMode_t          setMode, [in]      DmiDataUnion_t*       value );
The name of the RPC specific DMI client library is as follows:
                  PLATFORM                  LIBRARY NAME
                  UNIX             	    dmirpc.so
    Devi connetterti con il client rpc all'interfacia DMI e ammesso che i
 componenti non siano settati in read only potrai settare quello che vuoi.
Comunque le specifiche sono fatte benone e te le scarichi dal sito.
con dmidecode non puoi impostare nada ..
ma magari da un'informazione come questa : Handle 0xDE00, DMI type 222, 13
puoi impiastrare in 0xDE00... (meglio da rpc , scherzavo è :P)
perchè tu volere farti male per così poco :D ?

 perchè tu volere farti male per così poco :D ?
Perchè se no che gusto ce?
No, così, si fa per cazzeggiare il weekend...
Poi una volta presa dimestichezza potrebbe tornare utile sia nella
gestione
delle immagini dei vari computer (backup e restore automatico in base
all'UUID)
o via SNMP per qualche server etc...
dato che molti valori sono "To be filled by O.E.M.", be allora
riempiamoli :D

 riempiamoli :D
uhmm , non so' xche' ma ho il grosso sospetto sospetto che sia una rom....
-- 
I fantasmi sono invisibili.
Come si spiega allora che io riesca a vedere lo spettro di Fourier?
                -- Andrea `Zuse' Balestrero, "Matemastica e Deformatica"

 
di solito stanno in flashrom. possono essere aggiornati (almeno alcuni 
valori). ad esempio sulle macchine ibm puoi aggiornare: tipo macchina, 
seriale, asset tag.
per il come, di solito con un flash del bios.

 uhmm , non so' xche' ma ho il grosso sospetto sospetto che sia una rom....
Be, sotto dos è presente un programmino che mi fa impostare tali
valori.
Incredibile che sotto linux non abbia ancora trovato nulla...



se mi paghi lo faccio io :P ...
scaricati :  "apt-get source dmidecode"
poi guardati il codice che è fatto bene e modifica le func. di lettura
adattandole in scrittura.
spacchiamo le DMI ?  
provato a vedere a cosa accede dmidecode? --> /dev/mem
accedi al file di dispositivo e smanetta i valori agli Handle specificati
dal comando dmidecode quando lo lanci.
non mi va :D.. fai due righe zozze in C e scrivi agli indirizzi riportati
da dmidecode .. è solo un puntatore sozzo.. poi mi racconti.
se chiedi agli sviluppatori di dmidecode sono sicuro che ti supporteranno ;)..
sul man
     Each record has:
       · A handle. This is a unique identifier, which allows records to refer‐
         ence  each  other.  For  example, processor records usually reference
         cache memory records using their handles.
       · A type. The SMBIOS specification defines different types of  elements
         a  computer  can  be  made  of. In this example, the type is 2, which
         means that the record contains "Base Board Information".
       · A size. Each record has a 4-byte header (2 for the handle, 1 for  the
         type,  1  for  the  size),  the rest is used by the record data. This
         value doesn’t take text strings into account (these are placed at the
         end of the record), so the actual length of the record may be (and is
         often) greater than the displayed value.
       · Decoded values. The information presented of course  depends  on  the
         type of record. Here, we learn about the board’s manufacturer, model,
         version and serial number.
OPTIONS
       -d, --dev-mem FILE
              Read memory from device FILE (default: /dev/mem)

 adattandole in scrittura.
Guarda, per ora ho risolto usando Hiren's BootCD che ha un tools che
serve
proprio a leggere/scrivere l'SMBIOS.
Avevo pensato anche io a modificare il dmidecore, son partito tutto
bello
fiero poi mi son ricordato: "Accidenti, io non conosco il C!" ed ho
lasciato stare :)