Что именно заставляет BIOS решать, является ли диск загрузочным или нет?
BIOS решает, является ли диск загрузочным, основываясь на 16-байтовой записи раздела, присутствующей после области кода MBR (хранится в таблице, начиная с 446- го байта). Первый байт в каждой записи раздела представляет загрузочный статус диска (и устанавливается на « 0x80
загрузочный», или, 0x00
если нет). Некоторые BIOS могут проверять другие части MBR (например, типы разделов, контрольные суммы), но основным требованием является флаг загрузки.
Как последовательность загрузки пропускается с диска № 1 и продолжает попытки загрузки с диска № 2, если в системе установлено более одного диска?
Это зависит от реализации, и поэтому вам нужно правильно выбрать порядок загрузки. В большинстве случаев BIOS просматривает каждый носитель в установленном вами порядке и определяет, может ли он загружаться с этого устройства (через данные MBR). Если это возможно, он делает - если нет, он продолжает цикл через другие устройства (опять же, в порядке, который вы выбрали).
После того, как BIOS передал управление загрузчику на диске № 1, на котором не было «загрузочных» разделов - как именно вызывается загрузчик на втором диске?
Как только будет найдено допустимое загрузочное устройство (т. Е. Установлен флаг загрузки и пройдены другие дополнительные проверки), BIOS копирует сектор MBR в ОЗУ. Затем BIOS перемещает указатель инструкций в начало этого местоположения (используя JUMP
инструкцию), где находится сегмент кода MBR, и затем запускается компьютер.
Если BIOS поддерживает спецификацию загрузки BIOS , код MBR может вернуть управление BIOS с определенной инструкцией, сигнализируя об ошибке загрузки и предлагая попробовать следующее устройство. Старые BIOS просто выводят сообщение об ошибке. Хорошо, если ваш BIOS поддерживает, можете ли вы загрузиться с USB.
Насколько я понимаю, единственное, что BIOS обычно проверяет на MBR, это его подпись в самом конце 512-байтового сектора, а затем он просто передает управление начальному загрузчику, расположенному в первых 446 байтах загрузочного сектора.
Это правильно, хотя следует отметить, что большинство современных BIOS также будут искать таблицу разделов GUID, а также более старую, обычную таблицу в стиле MBR.
Означает ли это, что первые 446 байтов загрузочного сектора ДОЛЖНЫ содержать какой-либо значимый код загрузчика, даже если диск не является загрузочным?
Нет , но диск должен иметь действительную таблицу разделов MBR или GUID - в противном случае он не будет обнаружен компьютером. Хотя часть кода MBR действительно может быть пустой, первый сектор диска должен иметь правильно сформированный MBR / GPT.
fdisk
будут обрабатываться эти случаи, хотя в оригинальной версии действительно были помечены неверные заголовки MBR). Я посоветовал оператору опубликовать необработанный заголовок MBR, но он / она может также захотеть «включить» / выключить загрузочный флаг (чтобы установить / сбросить флаг вручную).