COREBOOT와 SEABIOS는 어떤 관계가 있나요?

COREBOOT와 SEABIOS는 어떤 관계가 있나요?

libreboot를 지원하는 하드웨어에 투자하는 데 관심이 있고 펌웨어 blob을 제거하는 coreboot의 포크인 것은 알지만 seabios가 무엇인지 이해하지 못합니다.

나는 몇 가지 조사를 했지만 정확히 seabios가 이 모든 것에 적합한 위치에 대한 정보(내가 이해하는)를 찾을 수 없었습니다. seabios는 페이로드이지만 운영 체제 커널(Linux 등)도 "페이로드" 역할을 할 수 있다고 설명합니다. Chromebook을 조정하려고 할 때 qemu 및 Purism 제품에서 seabios가 언급된 것을 본 적이 있지만, 내가 이해한 바로는 coreboot를 사용할 때 seabios가 필요하지 않습니다.

seabios가 더 높은 수준("페이로드"라는 용어로 표시됨)인지 아니면 더 낮은 수준("seabios"라는 이름 자체로 표시됨)인지 여부입니다.

GPU 펌웨어 > 커널 드라이버 > 사용자 공간 드라이버/API 계층(예: 메사, SDL...)과 애플리케이션이 있는 Linux의 오픈 소스 비디오 드라이버 스택과 비슷하다고 생각합니다.

제가 아는 바로는 Coreboot/Libreboot는 하드웨어 초기화 프로그램이고 Seabios는 부트로더(GRUB 또는 ISOLINUX)를 로드하는 프로그램이고 거기에서 시작되지만 세부 사항은 아직 명확하지 않습니다.

나는 10년 넘게 GNU/Linux를 풀타임으로 사용해왔지만 내 지식은 systemd 및 GRUB 스크립트에만 국한되어 있습니다. 지금까지 libre BIOS/UEFI 대안을 살펴본 적이 없습니다.

하드웨어 구입을 결정하기 전에 이에 대해 좀 더 명확히 설명해 주시면 정말 감사하겠습니다(지원되는 하드웨어 목록은 매우 제한되어 있습니다)!

답변1

당신이 찾고 있는 복잡한 대답이 무엇인지 모르겠습니다. 여기에 간단하지만 길고 일화적인 시도가 있습니다.

소비자들이 사용해 온IBM PC 클론오랫동안. 그들은 BIOS라고 불리는 플랫폼 초기화를 위한 펌웨어를 가지고 있었는데, 어느 시점에서는 IBM이 아닌 다른 제조업체들이 호환 가능한 기계를 생산할 수 있도록 리버스 엔지니어링되었습니다. 다른 컴퓨터 시스템은 다른 펌웨어를 사용합니다.아이테니엄, 나중에 Intel 프로세서(TianoCore)로 구동되는 Mac 및 PC의 새로운 표준이 된 EFI를 개발했습니다. 원래 LinuxBIOS로 명명된 Coreboot는 원래 목표였던 Linux 커널을 부팅하기 위해 독점 코드의 대부분 또는 전부(가능한 경우)를 제거하려고 시도합니다. 어떤 시점에서 당시 프로젝트 멤버들은 Linux 커널을 로드하는 것 이외의 메커니즘을 지원하는 것이 더 유연할 것이라고 결정했습니다. 컴퓨터의 원래 펌웨어를 Coreboot로 교체하는 것은 Linux 사용자에게도 어려운 것처럼 보이며, 성공하면 Linux만 부팅할 수 있게 됩니다. Coreboot에서 Windows를 실행하는 것은 대부분의 사람들이 생각하는 것과 다를 수 있지만틈새 시장. 더 좋은 예는 BSD에 더 익숙한 사용자입니다. 물론 Minix, Haiku 등 더 많은 것들이 있습니다. 이들 중 하나를 실행하려면 해당 운영 체제에 필요한 인터페이스를 제공하는 "페이로드"를 선택해야 합니다.

추가 자료 및 자료:

  • 매튜 개럿:ACPI, 커널 및 펌웨어 계약
  • Depthcharge: Chrome OS 부트로더
    • Chromium 프로젝트 웹사이트에는 Chome OS 장치를 PC와 비교하고 엔지니어가 부팅 시간을 단축하기 위해 부팅 프로세스에서 제거한 항목을 설명하는 멋지고 간단한 다이어그램이 있습니다. 아쉽게도 지금은 찾을 수 없습니다.

저는 펌웨어 엔지니어도 아니고 이러한 프로젝트에 참여하지도 않으며 어떤 프로젝트에도 참여하지 않습니다. 저는 단지 10년 이상의 Linux 경험을 가진 사람일 뿐입니다.

엔지니어에게 물어보고 싶다면 Reddit이나 해당 메일링 리스트에서 MrChromebook에 물어보세요.

답변2

일반 BIOS는 단순히 하드웨어를 설정하는 것 이상의 작업을 수행합니다. 16비트 리얼 모드 코드로 호출하여 다양한 하위 수준 작업을 수행하고 시스템에 대한 하위 수준 정보를 검색할 수 있는 다양한 기능을 구현합니다. BIOS는 매우 낮은 수준에서 설계되었으며(결국 시스템을 초기화함) 플랫폼(칩셋 및 기타 하드웨어)에 매우 익숙해야 하기 때문에 BIOS는 이러한 낮은 수준의 기능을 제공할 수 있습니다.

예를 들어, BIOS는 칩셋 레지스터를 프로그래밍하여 초기화 중에 메모리 맵을 설정하므로 BIOS는 시스템의 물리적 메모리 맵을 검색하는 데 사용할 수 있는 e820 기능을 제공합니다.

아래 표에서 BIOS가 제공하는 표준 기능의 전체 목록을 볼 수 있습니다.https://en.wikipedia.org/wiki/BIOS_interrupt_call

Coreboot는 BIOS가 아니기 때문에 Coreboot는 이 기능을 제공하지 않습니다. Coreboot에는 "입/출력 시스템"이 없습니다. 단지 시스템을 초기화하고 페이로드를 실행합니다. BIOS 인터페이스가 필요한 경우 SeaBIOS를 페이로드로 사용해야 합니다.

Linux에서는 BIOS 기능에 어떤 식으로든 의존하지 않으며 BIOS에 영향을 주지 않고 하드웨어를 처리하는 자체 루틴이 있으므로 Linux에서 BIOS 인터페이스로 작업하지 마십시오. 물리적 메모리 맵 획득과 같은 일부 작업은 여전히 ​​필요하므로 Coreboot는 Linux 부팅 프로토콜의 일부로 이 정보를 Linux 헤더의 Linux 커널에 전달합니다.https://github.com/coreboot/coreboot/blob/7128063ecc8099932a4bef8d2e28101b7f652804/util/cbfstool/linux.h

Coreboot는 BIOS가 아닙니다. BIOS 및 UEFI와는 다른 범주에 존재합니다. 페이로드에 BIOS가 필요한 경우 작동하지 않습니다. Coreboot->SeaBIOS->부팅하려는 항목으로 이동해야 합니다.

도움이 되었기를 바랍니다.

관련 정보