Estoy buscando un software de código abierto como Virtual-box que pueda ejecutar en Linux pero que brinde la posibilidad de programar el BIOS (usar un programa de BIOS personal).
Quiero entender (de manera práctica) el proceso de arranque de la computadora y tener una manipulación más profunda del modo real x86. También quiero comprender los diferentes mecanismos para comunicarme con los periféricos, es decir, controlar dispositivos como el teclado y el disco duro, y comprender los modos de E/S y las interrupciones.
Respuesta aceptada:
Hay varios emuladores de máquinas virtuales que pueden emular un procesador x86 y periféricos. Cada uno viene con un BIOS, varios de ellos con un BIOS de código abierto. Debe mirar a QEMU, que funciona de forma completamente independiente del host (puede ejecutarse en cualquier máquina, aunque tiene mecanismos para ejecutarse más rápido si la máquina emulada tiene la misma arquitectura que el host). QEMU viene con PC-BIOS.
Si quieres trabajar en modo real x86, también puedes echar un vistazo a Dosbox.
Coreboot también debería ser de su interés. Es un BIOS de código abierto para x86.
Mirar un BIOS le dará una idea de cómo se inicia un procesador x86, incluidas todas las peculiaridades heredadas de más de 30 años de historia con una evolución significativa en las capacidades del hardware. No es lo mejor para mirar si lo que quieres entender es cómo comunicarte con los periféricos. Para ello, mire los controladores de dispositivo en el kernel de un sistema operativo, ya sea Linux o uno más simple como MINIX 3.
También recomendaría echar un vistazo a otras arquitecturas de CPU, como ARM y MIPS, para que tenga una idea de lo que es común en las interacciones del sistema operativo/hardware y lo que es específico de la arquitectura de la PC.