Какая связь между COREBOOT и SEABIOS

Я заинтересован в инвестировании в аппаратное обеспечение, поддерживающее libreboot, и я понимаю, что это форк coreboot с удаленными блобами прошивки, однако я не понимаю, что такое seabios.

Я провел небольшое исследование, однако не смог найти информацию (насколько я понимаю) о том, какое именно место во всем этом занимает seabios. Было объяснено, что seabios — это полезная нагрузка, однако ядро ​​ОС (скажем, Linux) вместо этого может быть «полезной нагрузкой». Я видел упоминание о seabios при попытке настроить Chromebook, а также на qemu и продуктах Purism, однако, насколько я понял; Seabios не требуется при использовании coreboot.

Seabios находится на более высоком уровне (как предполагает термин «полезная нагрузка») или на более низком уровне (как предполагает само название «seabios»).

Я предполагаю, что это похоже на стек видеодрайверов с открытым исходным кодом в Linux, в котором у вас есть прошивка графического процессора > драйвер ядра > драйвер пользовательского пространства/уровень API (например, mesa, SDL,...), а затем приложение.

Насколько я понял, Coreboot/Libreboot — это программа инициализации аппаратного обеспечения, а Seabios — это то, что загружает загрузчик (GRUB или ISOLINUX), и это происходит оттуда, однако подробности мне все еще неясны.

Я использую GNU/Linux на постоянной основе уже более десяти лет, однако мои знания не ограничиваются сценариями systemd и GRUB. До сих пор никогда не рассматривал бесплатные альтернативы BIOS/UEFI.

Я был бы очень признателен за разъяснения по этому вопросу, прежде чем покупать оборудование (даже несмотря на то, что список поддерживаемого оборудования сильно ограничен)!

4
06.06.2020, 00:25
1 ответ

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

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

Полный список этих стандартных функций, предоставляемых BIOS, можно посмотреть в таблице здесь:https://en.wikipedia.org/wiki/BIOS_interrupt_call

Coreboot не поддерживает эту функцию, поскольку Coreboot не является BIOS. В Coreboot нет «системы ввода-вывода». Он просто инициализирует вашу систему и запускает вашу полезную нагрузку. Если вам нужен интерфейс BIOS, вы должны использовать SeaBIOS в качестве полезной нагрузки.

Отказ от использования интерфейса BIOS работает в Linux, поскольку Linux в любом случае не использует функции BIOS.он имеет свои собственные процедуры для работы с вашим оборудованием и оставляет BIOS в покое. Некоторые вещи, такие как получение карты физической памяти, по-прежнему необходимы, и по этой причине Coreboot передает эту информацию ядру Linux в заголовке Linux как часть протокола загрузки Linux :https://github.com/coreboot/coreboot/blob/7128063ecc8099932a4bef8d2e28101b7f652804/util/cbfstool/linux.h

.

Coreboot — это не BIOS. Он существует в категории, отдельной от BIOS и UEFI. Если вашей полезной нагрузке нужен BIOS, он не будет работать. Вам нужно выбрать Coreboot -> SeaBIOS -> Все, что вы хотите загрузить.

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

2
18.03.2021, 23:29

Теги

Похожие вопросы