Почему BIOS не загружает ядро ​​Linux напрямую - почему MBR и все эти проблемы?

Недавно я узнал о процессе загрузки Linux. Я не могу не задаться вопросом, почему мы сталкиваемся с проблемой доступа к MBR после BIOS, чтобы инструкции могли, в свою очередь, загрузить ядро ​​в RAM.

Почему посредник - почему BIOS не загружает ядро ​​напрямую?


person PinkElephantsOnParade    schedule 20.09.2012    source источник
comment
Предполагается, что BIOS предназначен для быстрой проверки - он должен быть полностью независимым от ОС. Если это заставит вас использовать определенный метод загрузки, ваши методы загрузки также будут очень ограничены. В этой системе BIOS просто загружает код с наименьшим общим знаменателем, который может разрешить любой процесс загрузки. Это также позволяет вам использовать загрузчики, такие как GRUB, которые дают вам большой контроль.   -  person Linuxios    schedule 22.09.2012


Ответы (4)


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

person Rory Alsop    schedule 20.09.2012

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

Возможно, что еще более важно, он сохраняет весь процесс как можно более независимым от платформы. Вы можете заменить любой шаг в цепочке новой платформой или реализацией, а остальная часть процесса по-прежнему будет работать. Если BIOS загружает ОС напрямую, он должен понимать и уметь интерпретировать файловую систему, загрузчик, способ, которым ОС хранит компоненты на диске, какие компоненты необходимо загрузить и т. Д. Это необходимо сделать. для каждой ОС, файловой системы, загрузчика и т. д. Если создается новая файловая система (например), вы не сможете ее использовать, если не перепрограммируете BIOS, чтобы понять ее. Поскольку большая часть исходного кода BIOS не является общедоступной, это чрезвычайно затрудняет разработку файловых систем и операционных систем.

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

person bta    schedule 20.09.2012

Чтобы BIOS мог загружать Linux, он должен понимать формат своих разделов и файловых систем. Последнее наложило бы множество ограничений на файловую систему, которые может иметь файловая система / boot. Поэтому, чтобы минимизировать BIOS (B означает Basic: D) и позволить ОС развиваться независимо, BIOS загружает только первые 512 байт загрузочного носителя.

person user1202136    schedule 20.09.2012

Несмотря на то, что он должен быть «простым» в том, что он должен делать (инициализировать, настраивать и выполнять базовую проверку работоспособности системы), BIOS должен обладать хотя бы некоторым уровнем гибкости. Поэтому он был разработан для:

A) Разрешить пользователю / системному администратору настраивать некоторые аппаратные функции. Вот почему появляется сообщение «Нажмите DEL, чтобы войти в настройку». Как правило, значения по умолчанию оптимизированы для вашей системы, но некоторые параметры конфигурации включают тактовую частоту ЦП, задержку памяти, периферийные прерывания и т. Д.

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

C) Загрузите разнообразный набор операционных систем с разнообразного набора носителей (CD-ROM, USB-накопитель, различные жесткие диски и т. Д.)

Этот последний пункт - причина существования MBR. Это стандартная форма для перечисления основных разделов на диске (позволяющая использовать несколько ОС на одном диске) и того, какой код следует выполнить для загрузки и запуска операционной системы (этот код называется загрузчиком).

Во всяком случае, по крайней мере, поэтому «устаревший» BIOS работает именно так. Это постепенно отменяется в пользу новой прошивки инициализации под названием UEFI (по крайней мере, для x86 и x86-64), которая поддерживает еще большую гибкость.

Наконец, вы можете напрямую загрузить ядро. Взгляните на проект Coreboot (www.coreboot.org), который выполняет минимальную инициализацию, а затем загружает полезную нагрузку, которая может быть ядром или стандартным «устаревшим» BIOS ;-)

Надеюсь это поможет,

Janito

person Janito Vaqueiro Ferreira Filho    schedule 20.09.2012