2011-06-06 15 views
12

Digamos que me gustaría cambiar una configuración en el BIOS de mi computadora en Linux (digamos Ubuntu 11 si es importante). Qué tipos de API existen para permitir consultar y manipular la configuración del BIOS ?API para consultar y configurar propiedades de BIOS

Además, ¿cuáles son los buenos recursos para hacer este tipo de desarrollo?

Respuesta

4

flashrom es una utilidad para flashear una nueva imagen de BIOS desde Linux.

Para modificar la configuración del BIOS, puede usar el dispositivo/dev/nvram.

This page proporciona buena información sobre ambos.

Tenga en cuenta que el significado de los contenidos de la NVRAM depende completamente del BIOS; variará de BIOS a BIOS e incluso entre revisiones del mismo BIOS. Entonces, lo único que puede hacer de manera confiable es guardar las configuraciones de BIOS en un sistema y restaurarlas en un sistema idéntico.

7

La memoria CMOS existe fuera del espacio de direcciones normal y no puede contener directamente el código ejecutable. Se puede acceder a través de los comandos IN y OUT en el número de puerto 70h (112d) y 71h (113d). Para leer un byte CMOS, , se ejecuta una SALIDA al puerto 70h con la dirección del byte que se leerá y , una ENTRADA desde el puerto 71h recuperará la información solicitada.

Puede utilizar los inb y outb macros para leer y escribir a partir de estos puertos para obtener la configuración del BIOS enteros almacenados en el CMOS. Para la configuración del formato de memoria almacenado, consulte: http://bochs.sourceforge.net/techspec/CMOS-reference.txt

Estas asignaciones dependen realmente del proveedor, pero la mayoría de ellas deberían ser comunes.

Aunque esto no es una API, pero con esto puede hacer acceso directo a la memoria CMOS y crear su propia API. Para un programa rápido, recomendaría obtener una API. Vea la respuesta de @ Nemo en este caso.

4

Todo esto depende de lo que se entiende por "configuración del BIOS".

En el firmware de la máquina PC/AT, PC tradicional, la "configuración del BIOS" se guarda en la memoria RAM no volátil asociada con el chip del reloj en tiempo real. Hay casi no estandarización en cuanto a lo que representan los bytes individuales de NVRAM (aunque hay un par de convenciones comunes) y sus significados varían de proveedor de firmware a proveedor de firmware, y de la versión de firmware a la versión de firmware. Las herramientas para manipular la RTC NVRAM incluyen el dispositivo Linux y FreeBSD /dev/nvram.

Pero esta no es la única RAM no volátil en una PC moderna. La "ROM del BIOS" también es, en realidad, RAM no volátil. (No se puede simplemente escribir en una operación normal. Uno tiene que realizar encantamientos mágicos para habilitar ciclos de escritura. Pero no es memoria de solo lectura.) Posterior firmware de PC usa mucho más grande (potencialmente hasta 16MiB en comparación con 256 bytes) RAM no volátil para el almacenamiento de configuraciones. Los datos de gestión del sistema, como los datos de configuración ampliada del sistema y el infame grupo DMI, se almacenan allí. Las herramientas para manipular estos datos incluyen la utilidad Linux dmidecode que usa /dev/mem.

En una PC moderna con firmware EFI, la NVRAM "BIOS" es generalmente donde se almacenan las variables de entorno de firmware EFI. Estos pueden ser manipulados por herramientas como uefivars, que a su vez rely upon the /sys/firmware/efi filesystem (que efectivamente, aunque de forma indirecta, exports the kernel-mode EFI API for variables al modo de aplicación). Las variables EFI son las "configuraciones" de los firmwares de EFI modernos, que controlan una variedad de cosas, desde lo que está en el menú de EFI Boot Manager (c.f. la utilidad efibootmgr) hasta los dispositivos que constituyen la consola del sistema.

2

Estoy tratando de comisariar una lista de herramientas para hacer esto en mi wiki: https://wiki.xkyle.com/Configuing_BIOS_From_Linux

Aunque técnicamente no son de la API, que son métodos para hacer lo que están pidiendo.

Son específicos del vendedor y para servidores.

  • Intel Severs: servicios públicos syscfg
  • Servidores
  • Dell PowerEdge C: setupbios o su syscfg
  • Servidores HP: La utilidad CONREP
Cuestiones relacionadas