맨위로가기

코어부트

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

코어부트는 1999년 시작된 오픈 소스 프로젝트로, 빠른 부팅과 오류 처리를 목표로 하는 BIOS를 개발한다. C 언어를 주로 사용하여 작성되었으며, x86, ARM, MIPS, RISC-V 등 다양한 아키텍처를 지원한다. 구글, AMD, MSI 등 여러 기업과 단체가 참여했으며, 크롬북, 씽크패드 등 다양한 기기에 탑재된다. 코어부트는 SeaBIOS, 리눅스 커널 등 다양한 페이로드를 실행할 수 있으며, 디버깅을 위한 기능도 제공한다. 리브레부트, osboot 등 여러 파생형이 존재하며, 유럽 코어부트 컨퍼런스(ECC)가 개최되기도 한다.

더 읽어볼만한 페이지

  • 펌웨어 - 바이오스
    BIOS(Basic Input/Output System, 기본 입출력 시스템)는 컴퓨터 하드웨어와 운영 체제 사이에서 하위 수준 인터페이스 역할을 하며, 부팅 과정에서 하드웨어를 초기화하고 제어하며, UEFI로 대체되는 추세이다.
  • 펌웨어 - 마이크로코드
    마이크로코드는 CPU 내에서 기본적인 연산을 수행하는 저수준 명령어 집합으로, 하드웨어와 소프트웨어 사이의 간극을 메우고, 복잡한 기계어 명령을 단순한 하드웨어 수준의 동작으로 분해하여 실행하며, 컴퓨터 아키텍처의 유연성을 높이고 오류 수정 및 기능 개선을 용이하게 한다.
  • 커스텀 펌웨어 - DD-WRT
    DD-WRT는 리눅스 기반의 임베디드 운영체제로, 무선 라우터에 설치되어 접근 제어, 대역폭 관리, VPN 설정, 무선 네트워크 확장 등 다양한 고급 기능을 제공하고, OpenVPN, WireGuard와 같은 VPN 프로토콜을 지원하며, 오래된 라우터를 활용하여 서버 등으로 활용할 수 있게 한다.
  • 커스텀 펌웨어 - OpenWrt
    OpenWrt는 무선 라우터와 같은 임베디드 장치용 리눅스 기반 자유 소프트웨어 펌웨어로, opkg 패키지 관리 시스템을 통한 기능 확장과 사용자 정의가 가능하며 LEDE 포크 프로젝트와의 재통합을 거쳐 발전해왔다.
  • 바이오스 - 아메리칸 메가트렌즈
    아메리칸 메가트렌즈(AMI)는 1985년에 설립된 회사로, BIOS 펌웨어, 서버용 마더보드, 스토리지 컨트롤러 등을 공급하며, 현재는 AMIBIOS, Aptio, AMIDiag 등 다양한 제품을 제공한다.
  • 바이오스 - 부트 섹터
    부트 섹터는 시스템 부팅 코드를 담은 저장 매체의 특정 영역으로, 볼륨 부트 레코드(VBR)와 마스터 부트 레코드(MBR)로 나뉘며, BIOS는 이를 실행하고 UEFI는 부트로더를 직접 로드하지만 바이러스 공격에 취약하다.
코어부트 - [IT 관련 정보]에 관한 문서
일반 정보
이름coreboot
coreboot 로고
coreboot 로고
설명오픈 소스 컴퓨터 펌웨어
저자Ronald G. Minnich, Eric Biederman, Li-Ta (Ollie) Lo, Stefan Reinauer, coreboot 커뮤니티
발표일1999년
최신 버전24.08
최신 버전 발표일2024년 9월 2일
리포지토리coreboot git 저장소
프로그래밍 언어대부분 C, 약 1%는 어셈블리어, 선택적으로 SPARK
플랫폼IA-32, x86-64, ARMv7, ARMv8, MIPS, RISC-V, POWER8
장르펌웨어
라이선스GPLv2-only
웹사이트coreboot 공식 웹사이트

2. 역사

1999년 겨울 로스앨러모스 국립 연구소(LANL)의 ''Advanced Computing Laboratory''(''고도 계산기 연구소'')에서 코어부트 프로젝트가 시작되었다.[50] 이 프로젝트의 목표는 빠른 부팅과 고성능의 오류 처리를 수행하는 BIOS를 만드는 것이었다.[51] 이 소프트웨어는 GNU 일반 공중 사용 허가서(GPL) 조항에 따라 라이선스가 부여된다. 주요 기여자는 LANL, AMD(Advanced Micro Devices), coresystems GmbH,[52] Linux Networx, Inc이다.[53] 구글(Google)은 코어부트 프로젝트의 일부를 후원하고 있으며,[54] 금융 선물 거래 기업 집단인 CME Group은 2009년부터 코어부트 프로젝트에 대한 지원을 시작했다.[55]

MSI, 기가바이트, 타이안과 같은 마더보드 공급업체도 coreboot를 표준 BIOS와 함께 제공하거나 일부 마더보드의 하드웨어 인터페이스 사양을 제공한다. 처음 세 모델을 제외한 모든 크롬북은 coreboot를 실행한다.[8] ARM 아키텍처를 지원하기 위해 Das U-Boot에서 파생된 코드가 투입, 통합되었다.[56]

2019년 6월, 코어부트는 무료 및 오픈 소스 소프트웨어로 공개된 후, NSA 소프트웨어인 Ghidra를 사용하여 펌웨어 관련 문제에 대한 리버스 엔지니어링 작업을 시작했다.[10]

3. 디자인

코어부트는 주로 C로 작성되었으며, 일부 어셈블리 코드를 사용한다. C를 주 프로그래밍 언어로 선택하여, 어셈블리로 작성된 기존 PC BIOS에 비해 코드 감사가 쉬워져 보안이 향상되었다.[25] 보안을 위해 코어부트의 일부를 Ada로 작성하는 빌드 및 런타임 지원도 있지만, 현재는 가끔 사용된다.[26] 소스 코드는 GNU GPL 버전 2 라이선스로 배포된다.

코어부트는 최소한의 하드웨어 초기화 후 운영 체제에 제어 권한을 넘긴다. x86 버전은 10개의 명령만 실행하고 32비트 모드로 실행되는데,[27] 이는 16비트 모드로만 실행되는 대부분의 다른 x86 BIOS와 다르다.

코어부트는 GNU GRUB 2와 같은 부트 로더에 제어 권한을 넘길 수 있으며, 플랜 9 커널과 같이 다른 커널을 직접 부팅하는 것도 가능하다. BIOS 호출 기능은 없지만, SeaBIOS 페이로드를 통해 BIOS 호출 기능을 사용할 수 있다.[22] SeaBIOS를 통해 마이크로소프트 윈도우, FreeBSD 등 리눅스 이외의 운영 체제도 구동할 수 있다.

3. 1. DRAM 초기화

메모리 컨트롤러와 DRAM는 코어부트가 초기화하는 가장 어려운 하드웨어이다. 경우에 따라 이 주제에 대한 기술 문서는 NDA로 제한되거나 사용할 수 없다. RAM 초기화는 RAM을 초기화하기 전에는 RAM을 사용할 수 없기 때문에 특히 어렵다. 따라서 DRAM 컨트롤러와 DRAM을 초기화하기 위해 초기화 코드는 CPU의 범용 레지스터 또는 Cache-as-RAM을 임시 저장 공간으로만 사용할 수 있다.

RAM 대신 레지스터를 사용하는 C 컴파일러인 romcc는 이 작업을 용이하게 한다. romcc를 사용하면 RAM을 사용할 수 있도록 하는 DRAM DIMM의 SPD ROM에 대한 SMBus 접근을 비교적 쉽게 할 수 있다.

최신 x86 프로세서에서는 DRAM이 초기화될 때까지 프로세서 캐시를 RAM으로 사용할 수 있다. 프로세서 캐시도 Cache-as-RAM[28][29] 모드로 초기화해야 하지만, DRAM을 초기화하는 것보다 더 적은 명령이 필요하다. 또한 Cache-as-RAM 모드 초기화는 CPU 아키텍처에 따라 다르므로 각 칩셋 및 마더보드에 따라 다른 DRAM 초기화보다 더 일반적이다.

4. 지원 플랫폼

coreboot는 IA-32, x86-64, ARM, ARM64, MIPS, RISC-V 등 다양한 CPU 아키텍처를 지원한다. 지원되는 시스템 온 칩(SoC) 플랫폼에는 AMD Geode 제품군이 있는데, OLPC 프로젝트를 위해 개발된 Geode GX 프로세서부터 시작하여, Artec Group에서 ThinCan 모델 DBE61에 추가한 Geode LX를 거쳐, OLPC용으로 개선되고 다른 Geode 파생형까지 지원하도록 확장되었다.

AMD Geode 기반 플랫폼 지원을 시작으로, coreboot는 다양한 AMD 프로세서 및 칩셋을 지원하게 되었다. 지원되는 프로세서에는 Family 0Fh 및 10h (K8 코어), Family 14h (Bobcat 코어, Fusion APU) 등이 있다. 또한, RS690, RS7xx, SB600, SB8xx 등 AMD 칩셋도 지원한다.

AMD는 2011년 초, AMD64 메인보드에서 시스템 장치를 초기화하는 부트스트랩 프로토콜인 AGESA(AMD Generic Encapsulated Software Architecture)를 오픈 소스로 공개했다. 이는 AMD64 하드웨어에서 coreboot 시스템 초기화에 필요한 기능을 제공하기 위함이었으나, 2014년에 개발이 중단되었다.[12]

5. 페이로드

코어부트는 libpayload영어 헬퍼 라이브러리를 사용하여 작성된 페이로드를 로드할 수 있다. 기존 페이로드에는 다음이 포함된다.


  • Depthcharge는 구글에서 크롬OS에 사용한다.[33]
  • 과거에 구글에서 크로미움OS에 Das U-Boot의 분기를 사용했다.[34]
  • SeaBIOS는 x86 BIOS의 한 구현이다. 데이터 크기가 작고, GCC를 사용하여 대부분 16비트C 언어로 작성되었다.
  • FILO[68]GRUB와 유사한 부트로더이며, USB 부팅을 지원한다.
  • Etherboot는 네트워크를 통해 운영 체제를 부팅할 수 있는 페이로드이다.
  • gPXE (현재 이름은 iPXE)는 SeaBIOS에서 실행되는 Etherboot의 후속 소프트웨어이다.
  • TianoCore[69]는 UEFI의 오픈 소스 구현이다. TianoCore는 하드웨어 초기화 메커니즘을 가지고 있지 않으며, 실제 초기화는 코어부트의 역할이다. 두 가지를 조합하여 UEFI를 완벽하게 지원할 수 있다.
  • 크롬 OS에서 구글이 채택한 부트로더 Das U-Boot는 그 파생물이 코어부트의 페이로드로 사용 가능하다.[70]


코어부트는 일반적으로 부트 로더를 사용하지 않고 직접 리눅스 커널을 로드한다. 그러나 부트 서버(boot server)로부터의 호출에 의해 Network booting|네트워크 상에서영어 리눅스를 기동시키는 iPXE(구 Etherboot)[57]나, 리눅스, 마이크로소프트 윈도우 2000/XP/Vista/7 및 BSD를 로드하는 데 사용되는 SeaBIOS영어[58][59][60]와 같은, 다른 임의의 스탠드얼론 ELF 실행 파일을 로드하는 것도 가능하다. 코어부트는 또한 Myrinet, Quadrics영어, SCI|Scalable Coherent Interface영어 클러스터 연결을 비롯한 임의의 기기에서 거의 모든 운영체제를 로드할 수 있다.

레노버 씽크패드 X60에서 실행되는 SeaBIOS 페이로드


기본적으로 코어부트는 다른 BIOS가 하드웨어 액세스에 이용하는 BIOS 인터럽트 루틴 서비스를 제공하지 않는다. 페이로드인 SeaBIOS는 BIOS 호출을 제공하고 있기 때문에, 그러한 BIOS 서비스를 요구하는 OS가 있더라도 코어부트는 로드할 수 있다.

6. 디버깅

CPU를 대체하거나 JTAG 포트를 통해 연결되는 CPU 에뮬레이터도 있으며, Sage SmartProbe[31][32]가 그 예시이다. 코드는 BIOS 장치를 플래싱하는 대신 BIOS 에뮬레이터에서 빌드하거나 다운로드할 수 있다.

coreboot는 아무것도 없는 상태에서 하드웨어를 초기화해야 하므로, 지원하는 칩셋과 마더보드로의 이식이 필요하다. 초기화 전 단계에서 coreboot는 시리얼 포트를 (캐시와 레지스터의 어드레싱만) 초기화한다. 이렇게 하면, 연결하는 터미널에 디버깅 텍스트를 송출할 수 있다.[65] 또한, POST에서 보고되는 에러 코드를 진단할 수 있는 IC 칩인 POST card|POST 카드영어를 연결하여, 2자리 16진수 진단용 코드를 출력시키기 위한 포트 0x80에 바이트 코드를 전송할 수 있다.

다른 이식을 위한 도움으로는 IOSS사가 판매하는 상용 제품 "RD1 BIOS Savior"(RD1 ROM 굽기 괜찮아!일본어)[66]가 있다. 이 제품은 두 개의 부트 메모리 장치를 조합한 것으로, 부트 메모리 소켓에 연결하여 수동으로 두 장치를 전환할 수 있다. 컴퓨터는 한 장치에서 부팅하고, 두 번째 메모리 장치로 전환하여 이미지를 리프로그래밍, 즉 굽는 것이 가능하다. 더 비싼 대체품으로는 외부에 장착하는 EPROM이나 플래시 메모리 프로그래머블 장치가 있다.

또한, CPU 대신, 혹은 JTAG 포트를 통해 연결하는 CPU 에뮬레이터의 이용도 고려되고 있다. JTAG 포트를 이용한 coreboot를 탑재한 제품의 예로는, Sage SmartProbe라는 것이 있다.[67] BIOS 장치에 굽는 대신, BIOS 에뮬레이터 상에서 코드를 빌드하거나 다운로드할 수 있다.

7. 컨퍼런스

2017년 10월에 3일 동안 유럽 코어부트 컨퍼런스(European Coreboot Conference, ECC)가 오프라인으로 개최되었다.

행사 및 연도날짜개최 도시장소자료
ECC20172017년 10월 26일 ~ 2017년 10월 29일독일 보훔보훔 루르 대학교 컨벤션 센터ECC2017 홈페이지


참조

[1] 웹사이트 Releases https://www.coreboot[...] n.d.
[2] 웹사이트 ARM https://www.coreboot[...] coreboot 2013-10-15
[3] 웹사이트 coreboot's licence https://github.com/c[...] 2018-10-13
[4] 웹사이트 '[LinuxBIOS] Welcome to coreboot' http://coreboot.org/[...] 2008-01-12
[5] 웹사이트 The Open Source BIOS is Ten. An interview with the coreboot developers http://www.h-online.[...] 2009
[6] 웹사이트 Google Sponsors the LinuxBIOS project http://google-code-u[...] 2023-09-29
[7] 웹사이트 CME Group Dives Into Coreboot and Other Linux Open Source Projects http://www.wallstree[...] 2015-09-23
[8] 웹사이트 Chromebooks http://www.coreboot.[...] coreboot 2014-01-16
[9] 웹사이트 GSoC2011(Week 1): Analysis of U-boot ARM boot code | coreboot developer blogs http://blogs.coreboo[...] 2014-04-12
[10] 웹사이트 Coreboot nutzt NSA-Tool zum Reverse Engineering https://www.golem.de[...] 2023-05-04
[11] 웹사이트 Technical details on AMD's coreboot source code release http://community.amd[...] AMD 2016-02-01
[12] 웹사이트 AMD's binary-only AGESA libraries https://mail.coreboo[...] 2017-05-08
[13] 웹사이트 Minifree http://minifree.org/ 2015-09-24
[14] 웹사이트 The Gluglug https://www.fsf.org/[...] 2015-09-23
[15] 웹사이트 pcengines/coreboot https://github.com/p[...] 2019-09-16
[16] 웹사이트 coreboot Firmware on Purism Librem devices https://puri.sm/core[...] 2020-06-19
[17] 웹사이트 Purism Laptops To Use 'Heads' Firmware To Protect Against Rootkits, Tampering (Updated) https://www.tomshard[...] 2020-06-19
[18] 웹사이트 New Dasharo v1.1 Firmware For The MSI Z690 Board - Phoronix https://www.phoronix[...] 2023-10-27
[19] 웹사이트 NovaCustom-Dasharo October-2023 Firmware Update (ADL v1.7.0 & TGL v1.5.0) - NovaCustom https://configurelap[...] 2023-10-27
[20] 웹사이트 The NitroPC Pro is Qubes-Certified! - Nitrokey https://www.nitrokey[...] 2023-10-27
[21] 뉴스 Starbook mk v review https://fossbytes.co[...]
[22] 웹사이트 SeaBIOS http://www.coreboot.[...]
[23] 웹사이트 coreboot Add-on Layer (ADLO) http://www.coreboot.[...]
[24] 웹사이트 SEBOS, Security Enhanced Bootloader for Operating Systems, Phase 2 http://www.missl.cs.[...]
[25] 웹사이트 Comparison of UEFI and legacy BIOS https://phoenixts.co[...]
[26] 웹사이트 commit https://review.coreb[...]
[27] 웹사이트 coreboot v3 early startup code http://lxr.linux.no/[...] 2008-08-17
[28] 웹사이트 CAR: Using Cache as RAM in Linux BIOS http://rere.qmqm.pl/[...] qmqm.pl 2009-01-15
[29] 웹사이트 A Framework for Using Processor Cache as RAM (CAR) http://www.coreboot.[...]
[30] 웹사이트 "[coreboot] AMD's binary-only AGESA libraries" https://mail.coreboo[...] 2019-09-08
[31] 웹사이트 Sage Electronic Engineering - SmartProbe JTAG debugger, Sage EDK, coreboot and Embedded Systems and Software Engineering http://www.se-eng.co[...]
[32] 웹사이트 Sage SmartProbe FAQ http://www.loper-os.[...] S.Datskovskiy 2021-04-30
[33] 웹사이트 Depthcharge: The ChromeOS bootloader https://docs.google.[...] 2015-10-26
[34] 웹사이트 Modify u-boot code to allow building coreboot payload. [chromiumos/third_party/u-boot-next : chromeos-v2011.03] https://groups.googl[...] 2011-07-24
[35] 웹사이트 Binary Blob Reduction Policy https://libreboot.or[...] 2023-11-01
[36] 웹사이트 osboot project https://osboot.org/ 2023-05-26
[37] 웹사이트 Libreboot – Osboot is now part of Libreboot https://libreboot.or[...] 2023-05-26
[38] 웹사이트 How to install ChromeOS Flex on a Chromebook https://www.androidp[...] 2023-05-30
[39] 웹사이트 GNU Boot Summary https://savannah.gnu[...] 2023-10-30
[40] 웹사이트 Canoeboot project https://canoeboot.or[...] 2023-11-16
[41] 웹사이트 3mdeb Sp. z o.o. — Embedded Firmware development consultancy https://3mdeb.com 2024-02-16
[42] 웹사이트 Dasharo • GitHub https://github.com/D[...] 2024-02-16
[43] 웹사이트 About Dasharo - Dasharo Universe https://docs.dasharo[...] 2024-02-16
[44] 간행물 merge/skulls https://github.com/m[...] 2024-05-29
[45] 웹사이트 About Heads https://osresearch.n[...] 2024-05-29
[46] 간행물 linuxboot/heads https://github.com/l[...] LinuxBoot 2024-05-29
[47] 웹사이트 Announcing coreboot 4.1 | coreboot http://blogs.coreboo[...] blogs.coreboot.org 2015-07-30
[48] 웹사이트 '[LinuxBIOS] Welcome to coreboot' http://coreboot.org/[...] coreboot.org 2011-02-14
[49] 웹사이트 Campaign for Free BIOS http://www.fsf.org/c[...] FSF 2011-02-15
[50] 웹사이트 Who is working on coreboot? http://www.coreboot.[...] coreboot.org 2011-02-15
[51] 웹사이트 The Open Source BIOS is Ten http://www.h-online.[...] The H Open Source 2011-02-15
[52] 웹사이트 coresystems GmbH i.L. http://www.coresyste[...] coresystems.de 2011-02-15
[53] 문서 シリコングラフィックスの一部문
[54] 웹사이트 Google Sponsors the LinuxBIOS project https://googlecode.b[...] The official Google Code blog 2011-02-15
[55] 웹사이트 CME Group Dives Into Coreboot and Other Linux Open Source Projects http://www.wallstree[...] Wall Street & Technology 2011-02-15
[56] 웹사이트 GSoC2011(Week 1): Analysis of U-boot ARM boot code http://blogs.coreboo[...] blogs.coreboot.org 2011-10-10
[57] 문서 Preboot Execution Environment 참조
[58] 문서 레거시시스템의 오픈소스 BIOS 구현 프로젝트
[59] 웹사이트 SeaBIOS http://www.seabios.o[...] seabios.org 2011-02-15
[60] 웹사이트 SeaBIOS - coreboot http://www.coreboot.[...] coreboot.org 2011-02-15
[61] 웹사이트 ADLO - coreboot http://www.coreboot.[...] coreboot.org 2011-02-15
[62] 웹사이트 SEBOS, Security Enhanced Bootloader for Operating Systems, Phase 2 http://www.missl.cs.[...] www.missl.cs.umd.edu 2011-02-15
[63] 웹사이트 coreboot v3 early startup code http://lxr.linux.no/[...] lxr.linux.no 2011-02-15
[64] 웹사이트 Integrating 9load into the LinuxBIOS http://plan9.bell-la[...] plan9.bell-labs.com 2011-07-10
[65] 문서 GNU GRUB 시리얼포트 디버깅 가능
[66] 웹사이트 RD1 BIOS Savior http://www.ioss.com.[...] ioss.com.tw 2011-02-15
[67] 웹사이트 Sage Electronic Engineering http://www.se-eng.co[...] www.se-eng.com 2011-03-24
[68] 웹사이트 FILO - coreboot http://www.coreboot.[...] www.coreboot.org 2011-07-10
[69] 웹사이트 TianoCore - coreboot http://www.coreboot.[...] www.coreboot.org 2011-07-10
[70] 웹사이트 Modify u-boot code to allow building coreboot payload. [chromiumos/third_party/u-boot-next : chromeos-v2011.03] https://groups.googl[...] groups.google.com 2011-07-25
[71] 웹사이트 A Framework for Using Processor Cache as RAM (CAR) http://www.coreboot.[...] coreboot.org 2006-10-10
[72] 웹사이트 "[coreboot] AMD's binary-only AGESA libraries" https://mail.coreboo[...] 2014-11-05
[73] 웹사이트 http://www.coreboot.[...]
[74] 웹사이트 http://coreboot.org/[...]
[75] 웹사이트 http://www.coreboot.[...]
[76] 웹사이트 http://www.fsf.org/c[...]
[77] 웹아카이브 소스코드 https://archive.toda[...] 2012-07-10



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com