Contenidos
Bios vs uefi
Teniendo en cuenta esto, intenté instalar varias versiones de Linux en el SSD y me encontré con el fracaso casi siempre. Intenté instalar Arch, Debian estable, Debian sid y Ubuntu 12.10 desde una unidad USB, pero aunque la BIOS veía la unidad USB y empezaba a arrancar desde ella, en cuanto el sistema operativo intentaba enumerar los dispositivos USB perdía toda la funcionalidad del USB (incluido el dispositivo de arranque).
Finalmente grabé un DVD e instalé Ubuntu 12.10 en el SSD. Cabe señalar que mi teclado USB (y el ratón) funcionan bien mientras en el American Megatrends UEFI/BIOS. Incluso cuando estoy en los menús de pre-instalación en el Live Ubuntu DVD el teclado funciona bien.
Si hago un lsusb puedo ver todos los controladores de host USB pero ninguno de los dispositivos. Haciendo un lspci me muestra todo el hardware que esperaría. Y haciendo un lsmod no veo ningún módulo usb cargado (usb_ehci por ejemplo).
Estoy bastante desconcertado sobre lo que podría estar matando/impidiendo que el USB (y mi tarjeta de red integrada) funcione en Linux. No parece haber ningún problema con ninguno de estos dispositivos funcionando en la BIOS y no tengo una instalación de Windows disponible para probar y ver si funciona.
Psicologia de la Bios
Acabo de flashear la BIOS de 3 placas base X9SCD diferentes, todas alojadas en diferentes chasis MicroCloud. He hecho esto cientos de veces, con esta misma versión de BIOS (x9scd8.612), sin problemas. Tengo mi propia ISO de FreeDOS que arranco en el KVM IPMI y ejecuto un archivo por lotes que simplemente se ejecuta:
Los sistemas parecen funcionar bien aparte de no poder entrar en la BIOS. Pude instalar Windows 2019 en uno de los sistemas a través del IPMI/KVM y arrancar un SO Linux existente en otro. Es solo entrar en la BIOS lo que parece fallar.
Hoy me di cuenta de que, por alguna razón, Java no me permitía cargar el KVM sin agregar una excepción de seguridad. Esto fue sólo en los servidores que ejecutan el firmware IPMI 3.50. Los que están en 3.54 continuaron trabajando bien. Así que me pregunto si esto es realmente BMC / IPMI relacionados? Actualicé el firmware IPMI en ellos de todos modos, pero eso no lo arregló.
Además, acabo de probar otro servidor X9SCD que no ha sido tocado recientemente. ¡Ya estaba ejecutando IPMI 3.54 y no puedo entrar en la BIOS en eso! Estoy completamente desconcertado en cuanto a lo que está pasando. ¿Alguien más encuentra esto en las placas de la generación X9?
Actualización de la bios
La parte de inicio del instalador de Ubuntu es a veces incompatible con ciertas tarjetas gráficas. Arreglarlo y llegar al Escritorio de Ubuntu para probarlo o instalarlo puede ser a menudo un arreglo sorprendentemente fácil: el parámetro nomodeset. Para ver si te funciona:
La imagen de arriba en realidad sólo confirma que su DVD/USB arrancó usando UEFI y habrá algunos medios en la configuración del firmware para asegurar que las unidades se arrancan con el fin de hacer que el instalador UEFI se ejecute (una solución puede ser posiblemente tan simple como asegurar que SATA se establece en AHCI) – ¡compruebe el manual de sus proveedores! También consulte la sección 2.3 de la documentación de la comunidad UEFI para obtener más detalles.
No todas estas máquinas implementan el arranque seguro. Simplemente seleccionando UEFI en la configuración de la BIOS se configurará el modo UEFI en los discos duros. No hay solución para estos errores y la solución es deshabilitar UEFI para permitir que el instalador de Ubuntu se ejecute en modo heredado; después de lo cual se puede usar boot-repair para instalar grub-efi que entonces permite/necesita que UEFI se active de nuevo antes de que Ubuntu arranque usando UEFI. Una vez más, consulte la Documentación de la Comunidad UEFI de Ubuntu en la Sección 4
Interrupciones de la Bios
Actualmente estoy escribiendo un gestor de arranque diseñado para cargar un programa más largo de lo que permite el sector de arranque. Sin embargo, cada vez que ejecuto el programa (lo pruebo tanto en Virtualbox como en QEMU), la lectura del disco falla, y el reinicio del disco también falla.
El gestor de arranque está diseñado para cargar el sector inmediatamente posterior (se trata de un volumen FAT16, por lo que lo he convertido en un sector reservado en la descripción del disco), y ejecutar el programa inmediatamente después. Sin embargo, la lectura del disco siempre falla (CF se pone a 1), y el reinicio del disco hace lo mismo. Esto ocurre tanto en Virtualbox como en QEMU.
Dado que estás utilizando instrucciones de cadena como LODSB, debes asegurarte de que la bandera de dirección (DF) se borra con la instrucción CLD para que las operaciones de cadena avancen en la memoria. No puedes confiar en que DF esté despejado cuando el gestor de arranque comience a ejecutarse.
Cuando se lee el disco Int 13h/AH=2 se bloquea AX. Si hay un error tendrás que recargar AH con 2 y AL con el número de sectores a leer. Si rehaces el código puedes usar SI para almacenar el número de sectores a leer temporalmente. Normalmente no tienes que comprobar si un reinicio de disco falla, simplemente vuelve a hacer la operación de lectura. Intenta la operación unas cuantas veces y luego pasa a un estado de fallo/reinicio. He modificado tu código para poner un recuento de reintentos en DI. Cada vez que se hace un reinicio la cuenta de reintentos se reduce en 1. Si la cuenta de reintentos >= 0 entonces se intenta la lectura. Si la cuenta de reintentos es <= 0 entonces se reinicia.