Leyendo información de SMBIOS

Leyendo información de SMBIOS

En Windows, ¿cómo puedo ver la capacidad del chip ROM instalado en mi computadora para almacenar UEFI/BIOS? Preferiría una forma de utilizar una herramienta o comando de Windows sin instalar ninguna otra aplicación.

Respuesta1

Leyendo información de SMBIOS

De Wikipedia:

Eninformática, elBIOS de administración del sistema(SMBIOS) la especificación defineestructuras de datos(y métodos de acceso) que se pueden utilizar para leer la información almacenada en elBIOSde uncomputadora. Alrededor de 1999 pasó a formar parte del dominio de laGrupo de trabajo de gestión distribuida(DMTF). [...] Aproximadamente al mismo tiempomicrosoftcomenzó a exigir queOEMy los proveedores de BIOS admiten la interfaz/conjunto de datos para que MicrosoftCertificación.

Fuente:BIOS de administración del sistema

La información de SMBIOS se almacena en diferentes tablas de datos; el primero (tipo 0) contiene detalles básicos como proveedor, versión y fecha de lanzamiento. El tamaño del dispositivo físico que contiene el BIOS corresponde a un solo byte que se encuentra enofender 0x9de la citada tabla.

El tamaño real se puede calcular así:

64K * (value + 1)

Un valor de 0significa que el tamaño es 64Kib, 1significa 128 KiB, y así sucesivamente.

Hasta donde yo sé, Windows no proporciona una utilidad incorporada que pueda recuperar datos SMBIOS específicos, como el tamaño de la ROM. Sin embargo, aún puedes escribir un guión tú mismo; consulte a continuación algunos ejemplos de trabajo. Como alternativa, puede utilizar un programa de terceros, por ejemplo, undmidecodePuerto de Windows.


secuencia de comandos por lotes

@echo off
setlocal enabledelayedexpansion

set key=HKLM\SYSTEM\CurrentControlSet\services\mssmbios\Data

for /f "tokens=3" %%G in (
'reg query "%key%" /v "SMBiosData" ^| findstr /i /c:"REG_"'
) do (
set "size=%%~G"
set /a size=64 * 0x!size:~34,2! + 64
)

echo ROM Size: %size% KiB
PAUSE
exit /b

VBScript

Set tables = GetObject("winmgmts:\\.\root\wmi").ExecQuery _
    ("SELECT * FROM MSSmBios_RawSMBiosTables")

For Each obj In tables
    WScript.Echo "ROM Size: " & (64 * obj.SMBiosData(9) + 64) & " KiB"
Next

Potencia Shell

$tables = Get-WmiObject -ComputerName . -Namespace root\wmi -Query "
    SELECT * FROM MSSmBios_RawSMBiosTables"

foreach ($obj in $tables)
{
    echo $("ROM Size: " + (64 * $obj.SMBiosData[9] + 64) + " KiB")
}

Observaciones

Windows Management Instrumentation (WMI) es el método preferido para leer información SMBIOS en Windows.

Fuente:Dispositivo\Objeto de memoria física

El controlador [SMBIOS] también almacena esta información en el registro en HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Mssmbios\Data. Aunque la información de SMBIOS se almacena en el registro en esta ubicación, los consumidores deben continuar usando WMI o GetSystemFirmwareTable()API para recuperar datos de SMBIOS. No hay garantía de que esta información se almacene en esta subclave del registro para cada versión posterior de Windows.

Fuente:Soporte SMBIOS en Windows

Otras lecturas

Respuesta2

No creo que puedas,al menos no de manera general.

Básicamente, eso es porqueel tamaño del código BIOS no proporciona ninguna información útilpara usted, el usuario.El BIOS en una computadora compatible con IBM PCtiene algunas responsabilidades principales, la mayoría de las cuales también se aplican a otras plataformas, pero pueden implementarse de manera diferente:

  • Realiza la Autoprueba de Encendido (POST)
  • Realiza detección e inicialización básica de hardware.
  • Configura el entorno de ejecución básico, cuyos detalles se remontan a laPC original IBM 5150desde 1981 (la CPU está enmodo real, varios registros de la CPU se inicializan con valores conocidos y varios indicadores de la CPU se configuran con valores conocidos)
  • Proporciona un sistema operativo con acceso al hardware (muy primitivo) y funciones de detección; Estos no son utilizados por los sistemas operativos modernos, ya sea debido a restricciones técnicas de la CPU (no hay una manera fácil de salir demodo largo, por ejemplo) o debido a limitaciones de rendimiento (cambiar hacia adelante y hacia atrás a real omodo V86ejecutar el código BIOS de 16 bits lleva mucho tiempo, por lo que es más rápido permanecer en modo protegido o largo y hacerlo usted mismo en el sistema operativo)
  • Carga el cargador de arranque de primera etapa del sistema operativo en una ubicación fija conocida en la RAM y le transfiere la ejecución.
  • Proporciona una interfaz de usuario para configurar la configuración básica del sistema; estrictamente hablando esto es opcional, yLas BIOS de la década de 1980 a menudo noproporcionar dicha interfaz, en lugar de confiar ensoftware enviado por separadoo en hardwareInterruptores DIPpara configurar incluso ajustes básicos del sistema como el tipo de tarjeta gráfica y la cantidad de RAM instalada

En nada de esto existe ningún beneficio para el usuario al saber cuánto código se utiliza para implementar estas tareas. En los primeros días (estamos hablando de DOS antes de Windows 3.0 a 3.1 aquí, desde principios de los 80 hasta principios de los 90), a menudo se confiaba en el BIOS para realizar funciones básicas y, por lo tanto, el tamaño del código del BIOS podíapotencialmenteCorresponden al menos en parte al rendimiento, pero en las computadoras modernas, el BIOS ha sido relegado básicamente al papel de un sistema operativo.iniciadore interfaz de configuración de hardware de bajo nivel. Además, en las computadoras de esa época, si el código BIOS era reemplazable, era quitando y reinstalando físicamente los chips ROM en la placa base;BIOS actualizables mediante flashson una invención mucho posterior.

Esto se compara con encontrar el tamaño de los dispositivos de almacenamiento o la RAM. La diferencia es queSer capaz de saber el tamaño de ellos realmente te dice a ti, el usuario, algo que vale la pena saber:La cantidad de espacio de almacenamiento disponible, por dispositivo o en conjunto, es un factor determinante de la cantidad de datos que podrá almacenar en la computadora, y el tamaño de la RAM es uno de los factores determinantes de la cantidad. datos con los que puede trabajar al mismo tiempo y qué tan rápido será trabajar con esos datos.

poder,En principio, vaya al sitio web de un fabricante de placa base en particular y busque imágenes de actualización del BIOS descargables. El tamaño de esos archivos de imagen corresponderá, con un alto grado de certeza, al tamaño del chip ROM flash que contiene el código BIOS.en esa placa base en particular.Creo que un tamaño común hoy en día es del orden de unos pocos megabytes;el BIOS original de la PC IBM 5150 era de 8 KBy a partir del XT (IBM 5160), esto se elevó a 32 KB en los IBM. Leí en alguna parte una anécdota de que los primeros clones de BIOS de PC de IBM para salas blancas al menos una vez hicieron que las personas involucradas se preguntaran si les faltaba algo, ya que podían hacerlo con mucho menos código.

Y por supuesto, eso ignora por completo la posibilidad deHay otro firmware en el sistema.además del BIOS de la PC. Tarjetas gráficas, tarjetas de red, tarjetas controladoras de disco y todo tipo de periféricosproporcionar sus propios BIOSque desde el punto de vista de la implementación están completamente separados del BIOS de la PC en la placa base, al igual que un navegador web está (o debería estar) completamente separado del sistema operativo.

Respuesta3

En Linux puedes encontrar la capacidad de flash rom de muchas maneras. El comando dmidecode proporciona mucha información útil sobre el BIOS, incluida la capacidad del chip. Finalmente descubrí que es de 1 MB. Sugiero a todos que echen un vistazo a su placa base o prueben un CD en vivo con Linux.

información relacionada