¿Qué hace exactamente que el BIOS decida si una unidad es de arranque o no?
El BIOS decide si una unidad es de arranque basado en el registro de partición de 16 bytes, presente después de la zona de código de MBR (que tuvo lugar en una tabla a partir de la 446 ª byte). El primer byte en cada registro de partición representa el estado de arranque de la unidad (y se establece en 0x80
si es de arranque, o 0x00
si no). Algunas BIOS pueden verificar otras partes del MBR (por ejemplo, tipos de partición, sumas de verificación), pero el requisito básico es el indicador de arranque.
¿Cómo salta la secuencia de arranque desde la unidad n. ° 1 y continúa intentando arrancar desde la unidad n. ° 2 si hay más de una unidad instalada en el sistema?
Esto depende de la implementación, y es por eso que debe seleccionar correctamente un orden de arranque. En la mayoría de los casos, el BIOS examinará cada medio de almacenamiento en el orden que establezca y determinará si puede arrancar desde ese dispositivo (a través de los datos de MBR). Si puede, lo hace; si no, continúa recorriendo los otros dispositivos (nuevamente, en el orden que seleccionó).
Después de que el BIOS transfirió el control al gestor de arranque en la unidad n. ° 1 que no tenía particiones "de arranque", ¿cómo se invoca exactamente el gestor de arranque en la segunda unidad?
Una vez que se encuentra un dispositivo de arranque válido (es decir, se establece el indicador de arranque y se pasan otras comprobaciones adicionales), el BIOS copia el sector MBR en la RAM. El BIOS luego reubica el puntero de instrucción al comienzo de esta ubicación (usando una JUMP
instrucción), donde se encuentra el segmento de código MBR, y luego la computadora se inicia.
Si el BIOS es compatible con la especificación de arranque del BIOS , el código MBR puede devolver el control al BIOS con una determinada instrucción, señalándolo de falla de arranque y pidiéndole que pruebe el siguiente dispositivo. Sin embargo, las BIOS más antiguas solo imprimen un mensaje de error. Un buen indicador si su BIOS lo admite es si puede arrancar desde USB.
Tengo entendido que lo único que el BIOS normalmente verifica en un MBR es su firma al final del sector de 512 bytes, y luego simplemente transfiere el control al gestor de arranque inicial ubicado en los primeros 446 bytes del sector de arranque.
Esto es correcto, aunque debe tenerse en cuenta que la mayoría de las BIOS modernas también buscarán una tabla de particiones GUID, así como la tabla de estilo MBR convencional más antigua.
¿Implica que los primeros 446 bytes del sector de arranque DEBEN contener algún código de gestor de arranque significativo incluso si el disco no es de arranque?
No , pero la unidad debe tener una tabla de particiones MBR o GUID válida; de lo contrario, la computadora no la detectará. Si bien la parte del código del MBR puede estar vacía, el primer sector de la unidad debe tener un MBR / GPT bien formado.
fdisk
manejará esos casos, aunque la versión original sí marcó encabezados MBR no válidos). Aconsejé al OP que publique el encabezado MBR sin procesar, pero también puede querer "activar" o desactivar el indicador de arranque (para configurar / restablecer el indicador manualmente).