Зачем нужен загрузчик?

Зачем нужен загрузчик?

Насколько мне известно, после запуска BIOS или чего-то подобного, выполняющего функции прошивки, управление передается загрузчику.

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

Кроме того, в руководстве GRUB говорится:Вкратце, загрузчик — это первая программа, которая запускается при запуске компьютера.Разве BIOS не является первой запускаемой программой?

решение1

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

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

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

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

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

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

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

решение2

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

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

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

решение3

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

Три причины:

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

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

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

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

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

Связанный контент