28

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

Почему BIOS не может загрузить ядро ОС напрямую?

Также в руководстве GRUB говорится: вкратце, загрузчик - это первая программа, которая запускается при запуске компьютера. Разве BIOS не первая программа, которая запускается?

3 ответа3

27

BIOS должен был бы знать, как загрузить ядро, и это сделало бы BIOS слишком сложным: представьте себе BIOS, который должен знать, как загрузить множество различных операционных систем, как передать им параметры ядра и т. Д ...

Таким образом, он только инициализирует оборудование и переходит в известное место, где хранится загрузчик; затем управление передается ему.

Из Unix и Основы Интернета HOWTO:

Вы можете спросить, почему BIOS не загружает ядро напрямую - почему двухэтапный процесс с загрузчиком? Ну, BIOS не очень умный. На самом деле это очень глупо, и Linux вообще не использует его после загрузки. Первоначально он был написан для примитивных 8-битных ПК с крошечными дисками и буквально не может получить доступ к достаточному количеству диска для непосредственной загрузки ядра. Шаг загрузчика также позволяет вам запустить одну из нескольких операционных систем из разных мест на вашем диске, в маловероятном случае, если Unix не достаточно хорош для вас.

Что касается BIOS, являющегося первой программой, которая запускается: (из Википедии)

Программное обеспечение BIOS встроено в ПК и является первым кодом, запускаемым ПК при включении («загрузка прошивки»).

Но прошивка программного обеспечения. Так что я бы предположил, что руководство по GRUB по крайней мере сбивает с толку эту часть; загрузчик можно рассматривать как первый определенный пользователем программный продукт, который запускается на компьютере.

10

Причина в гибкости. У вас может быть несколько разных ОС на одном жестком диске (Windows, Linux и т.д.), Или у вас может быть несколько разных версий одной и той же ОС. Следовательно, лучше иметь независимый от ОС фрагмент кода, который знает, где находится каждая ОС, установленная на жестком диске, как загрузить каждую из них, какую загрузить, представить меню или нет и т.д. Это загрузчик.

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

Что касается первой программы, которая запускается при запуске компьютера: различия между прошивкой и программным обеспечением довольно тонки, а процесс запуска современного компьютера очень сложен. BIOS сам по себе также не монолитная программа, а несколько отдельных этапов, соединенных вместе. Тем не менее, bootloader является первым изменяемым пользователем кодом, который запускается. Это первый фрагмент кода, который пользователь может повредить, стереть, заразить вирусом и т.д. Поэтому я полагаю, что, хотя технически BIOS является первым программным обеспечением, которое запускается, загрузчик является первым в том смысле, что если компьютер не загружается, пользователь должен чтобы проверить, все ли в порядке.

2

Почему BIOS не может загрузить ядро ОС напрямую?

Три причины:

  • BIOS на исходной платформе ПК, когда он был представлен в 1981 году, должен был выполнять ту же роль, что и в операционной системе CP/M, а именно - тонкий слой абстракции для пары устройств и простой загрузчик дисков. У CP/M был еще один уровень, называемый "BDOS", который обрабатывал файловую систему. DOS во многих отношениях был похож на CP/M, поскольку в то время это была популярная операционная система, и его структура была аналогичной. BIOS предназначался для поддержки аппаратных аспектов платформы, роль, которую драйверы в ОС выполняют в настоящее время.

  • Понятие файловой системы как отдельной от ОС еще не получило широкого распространения.

  • В это время RAM и ROM были дорогими и скудными ресурсами. Оригинальный ПК IBM 5150 можно было получить всего с 16 КБ ОЗУ (ссылка). Размер ПЗУ этой системы составлял 48 КБ, и в нее входил интерпретатор BASIC. В то время не было такого понятия, как стандартная файловая система.

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

Я не уверен в возможностях UEFI - у него может быть реальная возможность загрузки, которая не используется Windows по той или иной причине (Windows настаивает на использовании своего собственного менеджера загрузки при установке). Другие прошивки без BIOS, такие как U-Boot и во многих телефонах и маршрутизаторах, загружают и запускают ядра напрямую. Не было технической причины для этого с тех пор, как BIOS начал иметь место в ПЗУ, чтобы делать больше вещей.

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