¿Por qué los sistemas operativos (generalmente) no pueden acceder a la configuración del BIOS?

20

¿La placa base no proporciona un bus entre la CPU y el chip BIOS después del arranque? Si es así, ¿por qué no?

Si la CPU puede controlar la velocidad del ventilador, no veo por qué no debería poder controlar la configuración del BIOS.

Dmiters
fuente
Según tengo entendido, cuando el BIOS tira del cargador de arranque deja de funcionar, espere en casos de IPMI.
Linef4ult
Algunos fabricantes de placas base tienen utilidades para hacer eso, pero estas utilidades son específicas de esa placa base, Windows no la tiene incorporada, ya que esto podría ser una mala noticia si el malware la usa o un usuario promedio hurgando en la configuración de la BIOS.
Moab el
Como DavidPostill ya respondió. Windows (y otros sistemas operativos) a menudo pueden acceder al BIOS. Sin embargo, esto depende del conjunto de chips y la placa base y es posible que no funcione al 100% del tiempo. Sin embargo, si pasa del firmware BIOS al firmware UEFI obtendrá más control.
Hennes
Ha pasado un tiempo desde que vi una PC con un BIOS real. Si te refieres a UEFI, está justo ahí /sys/firmware/efien Linux.
Dmitry Grigoryev
Después de entregar el control al sistema operativo, el BIOS no se usa. Incluso puede sacar el chip del BIOS para programar otro en el caso de recuperación del BIOS / actualización de un BIOS dañado.
AStopher

Respuestas:

44

¿Por qué los sistemas operativos (generalmente) no pueden acceder a la configuración del BIOS?

La pregunta anterior no se puede responder ya que el sistema operativo puede acceder al BIOS.

Contestaré a continuación la pregunta que podría haberse hecho.


¿Cómo pueden los sistemas operativos acceder a la configuración del BIOS?

En Windows y Unix, el sistema operativo puede leer el BIOS.

Ventanas

Ejemplo (usando wmic):

F:\test>wmic bios /?

BIOS - Basic input/output services (BIOS) management.

HINT: BNF for Alias usage.
(<alias> [WMIObject] | <alias> [<path where>] | [<alias>] <path where>) [<verb clause>].

USAGE:

BIOS ASSOC [<format specifier>]
BIOS CREATE <assign list>
BIOS DELETE
BIOS GET [<property list>] [<get switches>]
BIOS LIST [<list format>] [<list switches>]


F:\test>wmic bios list brief
Manufacturer              Name                                        SerialNumber      SMBIOSBIOSVersion  Version
American Megatrends Inc.  BIOS Date: 09/05/11 11:20:58 Ver: 04.06.03  27546064-5001600  R1190V3            Sony - 20110905

Windows también puede escribir en el BIOS (algunos fabricantes de placas base proporcionan un actualizador de BIOS basado en Windows).

Consulte, por ejemplo, Cómo actualizar el BIOS si es necesario a través de Windows o en el BIOS .

Unix

Unix tiene comandos similares.

  • biosdecode analiza la memoria del BIOS e imprime la información sobre todas las estructuras.

  • Puede realizar llamadas de BIOS en tiempo real desde el usuario raíz utilizando aplicaciones C que incluyen ASM (código de ensamblaje) incorporado.

Fuente Cómo volcar datos del BIOS en un archivo


Otras lecturas

DavidPostill
fuente
55
Quiero agregar que antes de Windows XP, podría hacer, lo que en el mejor de mis conocimientos podría describirse como - truco de puntero para acceder a la configuración desde debug.com - recuerde que hubo un truco para borrar la protección de contraseña de algunas biografías modelos. Las búsquedas en la web "debug.com" bios passwordparecen aportar información relevante sobre el tema.
Theraot
1
todavía no responde el "¿Por qué?" ... insatisfactorio ...
Zaibis
@Zaibis No necesita responder el "por qué". El sistema operativo puede acceder al BIOS, por lo que preguntar (y responder) por qué ... incapaz ... es una pregunta sin sentido. He aclarado un poco la respuesta.
DavidPostill
1
"Unable" should be replaced by "able" as the OS can access the BIOS.Si solo quisiste que fuera una frase, debes eliminarla. Dado que seguir sus consejos sigue siendo una pregunta que ni siquiera está abordando.
Zaibis
1
@Zaibis <sigh> Todos los demás entendieron la respuesta (incluido el OP que aceptó la respuesta). Lo he actualizado nuevamente especialmente para ti;)
DavidPostill
19

Pueden hacerlo, pero no hay mucha interfaz estandarizada con la configuración allí, especialmente si se refiere a "BIOS" propiamente dicho (es decir, pre-UEFI).

Ciertas partes del BIOS se rigen por contratos de software entre el BIOS y el sistema operativo que se ejecuta sobre él. Hace mucho tiempo, las rutinas de BIOS se usaban para todo tipo de tareas cotidianas, como leer y escribir discos, mostrar cosas en la pantalla e imprimir en una impresora conectada, de ahí el nombre de "sistema básico de entrada / salida". Si el BIOS coincidía con el hardware, el sistema operativo podría admitir diferentes variantes de hardware sin tener que tener sus propias rutinas para todas esas cosas. Pero a medida que el hardware y los sistemas operativos se volvieron más complicados y superaron el conjunto limitado de instalaciones de BIOS, los sistemas operativos comenzaron a proporcionar sus propios controladores para casi todo, solo confiando en el BIOS para el arranque, la administración de energía y la recuperación de la información de configuración del sistema.

Pero el BIOS también se volvió más complicado y ganó todo tipo de configuraciones y habilidades que no estaban gobernadas por la interfaz OS-BIOS, e incluso para lo que está allí solo especifica los resultados , no la implementación . Eso significa que todos los fabricantes de BIOS son libres de hacer las cosas como quieran, que son libres de cambiar las cosas cuando lo deseen, siempre y cuando los sistemas operativos sigan funcionando, y que no tengan que decirle a nadie ninguno de los detalles. Acceder a los datos almacenados por el BIOS es pan comido, pero si tiene una utilidad que puede dar sentido a los datos, o que puede modificarlos de una manera que el BIOS realmente entienda, entonces probablemente fue hecho por el Los propios fabricantes de BIOS, o es el resultado de la ingeniería inversa.

hobbs
fuente
Sería genial si pudieras describir la parte del "pedazo de pastel" con algún detalle técnico. Por ejemplo, suponga que sé cómo ejecutar código C arbitrario en modo kernel; ahora, ¿cómo haría para descargar el BIOS manualmente?
Mehrdad
66
@Mehrdad El área de datos del BIOS y el área de datos extendida del BIOS se asignan a las direcciones de la memoria principal y, por lo tanto, se pueden leer y escribir directamente con los privilegios adecuados. (Por lo general, no desea hacer eso ...) Consulte, por ejemplo, wiki.osdev.org/Memory_Map_%28x86%29#BIOS_Data_Area_.28BDA.29 y stanislavs.org/helppc/bios_data_area.html y bioscentral.com/misc /bda.htm para obtener más información sobre el diseño BDA (el primero también ofrece una breve introducción a una variante del diseño EBDA). Alimente "Área de datos de BIOS" y "Área de datos de BIOS extendida" en su motor de búsqueda favorito para obtener más información.
un CVn