Я прочитал, что компьютер загружает ОС путем поиска первых 512 КБ каждого подключенного устройства. Если это пространство памяти действует как загрузочный сектор, оно начинает загружать пространство памяти после него.

Согласно этой статье: https://www.gnu.org/software/grub/manual/multiboot/multiboot.html.

Несколько ОС, существующих на одном жестком диске, выполняют "цепочку". Теперь, если все они находятся на одном жестком диске, как машина узнает, через сколько прыжков она найдет другой загрузочный сектор.
И что цепочки

2 ответа2

1

Я прочитал, что компьютер загружает ОС путем поиска первых 512 КБ каждого подключенного устройства.

Почти правильно. Аппаратное обеспечение стиля ПК считывает первый сектор, который составляет 512 байт. (не килобайт).

Если это пространство действует как загрузочный сектор, оно начинает загружать пространство после него.

Тоже почти правильно. Классическая прошивка материнской платы содержала нечто, называемое BIOS. Когда ПК включится, это будет выполнено. Одной из его задач была передача управления другому устройству (например, дисководу гибких дисков).

Более продвинутые версии не поддерживают только одно устройство, но будут проверять несколько устройств и переходить к следующему в случае, если одно не сможет обеспечить загрузочное решение. Например, он может попытаться загрузиться с дискеты, и если это не удастся, перейдите к попытке загрузки с компакт-диска, а тот, который потерпел неудачу, попытается загрузиться с первого жесткого диска. (где первый также интересно, если у вас есть несколько дисков).

Большую часть времени он будет читать первый сектор жесткого диска. И жесткий диск, как правило, имел схему разбиения (MBR для IBM-совместимого ПК) и некоторый загрузочный код. Это тогда следовало бы за цепью грузчиков.

Например, прошивка загрузит один загрузочный сектор и запустит код внутри.

Код, прочитанный из этого сектора, будет лучше понимать диск и загружать большую программу. (при необходимости повторите с несколькими этапами).

Несколько ОС, существующих на одном жестком диске, выполняют "цепочку".

ОС не выполняет связывание. Но если одним из ваших последующих этапов является продвинутая программа начального загрузчика (например, grub), то она может запрашивать ввод данных пользователем и в зависимости от этого она может продолжаться по-разному. Например, он может загрузить ядро Linux и может загрузить и запустить NTloader.

1

Я прочитал, что компьютер загружает ОС путем поиска первых 512 КБ каждого подключенного устройства.

BIOS BIOS делает это - и он не обязательно поражает каждое подключенное устройство, только те, которые он знает, как читать и которые он настроен для чтения из настроек.

ПК с более новым стандартом UEFI могут загружать файл непосредственно из раздела EFI на жесткий диск. Традиционно BIOS не понимает файловые системы, такие как NTFS или FAT, но UEFI немного более интеллектуален и может фактически считывать файлы с устройства.


В случае с BIOS загружается не полноценная ОС, а небольшая программа, являющаяся загрузчиком первого этапа. Этот загрузчик первого этапа может загрузить полную ОС, но на самом деле только в случае DOS или другой очень простой ОС.

Обычно происходит то, что загрузчик первого этапа включается и загружает загрузчик второго этапа, который может быть старым NT/XP NTLDR , загрузчиком Windows Vista+ winload.exe или GRUB.

Загрузчики (вторая ступень и выше) могут делать больше, чем BIOS, поэтому они читают файл конфигурации или данные и могут предоставить вам меню для загрузки ОС. Загрузчик перезаписывается после загрузки ОС.

Цепочка - это когда загрузчик вызывает другой загрузчик. Поскольку Windows загружается только со своим собственным загрузчиком, если у вас установлен GRUB, GRUB загружает Windows так, что он идет вперед и просто загружает загрузчик первого этапа, который BIOS все равно загрузил бы. Это хранится в первом секторе его раздела, я считаю. То же самое сделано с DOS.

Это не требуется, если GRUB может загружать ОС напрямую, что может быть для любого Linux. Linux не слишком заботится о том, как он и его initramdisk попадают в память в отличие от других ОС.


UEFI может загружать ОС напрямую, но Windows не поддерживает этот AFAIK, поэтому обычно системы UEFI напрямую загружают winload.exe и запускают его.

Другие не-ПК загрузчики, такие как U-Boot (что может запускать ваш домашний маршрутизатор), понимают файловые системы FAT и Linux и напрямую загружают из них Linux, а затем напрямую запускают ОС.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .