코어 부트
coreboot![]() | |
원저작자 | Ronald G. Minnich, Eric Biedman, Li-Ta(올리) Lo, Stefan Reinauer 및 coreboot 커뮤니티 |
---|---|
초기 릴리즈 | 전( |
안정된 릴리스 | 4.16 / 2022년 2월 [1] ; 전( |
저장소 | |
기입처 | 대부분 C이고 조립률은 1% 정도 됩니다.옵션인 Ada |
플랫폼 | IA-32, x86-64, ARMv7,[2] ARMv8, MIPS, RISC-V, POWER8 |
유형 | 펌웨어 |
면허증. | GPLv2[3] |
웹 사이트 | www![]() |
coreboot(이전의 LinuxB)IOS는 [4]대부분의 컴퓨터에 탑재되어 있는 자체 펌웨어(BIOS 또는 UEFI)를 최신 32비트 또는 64비트 운영체제의 로드 및 실행에 필요한 최소한의 작업만 수행하도록 설계된 경량 펌웨어로 대체하는 것을 목적으로 하는 소프트웨어 프로젝트입니다.
코어 부트에서는 하드웨어가 초기화되므로 지원하는 모든 칩셋과 메인보드에 이식해야 합니다.따라서 코어 부트는 제한된 수의 하드웨어 플랫폼과 메인보드 모델에서만 사용할 수 있습니다.
코어부트의 변종 중 하나는 Libreboot입니다.Libreboot는 [5]최종 사용자를 대상으로 하는 소프트웨어 배포입니다.
역사
코어부트 프로젝트는 1999년 겨울 Los Alamos 국립연구소(LANL)[6]의 Advanced Computing Laboratory에서 시작되었습니다.이 프로젝트는 고속 기동과 인텔리전트한 [7]에러 처리를 실현하는 BIOS를 목표로 하고 있습니다.GNU General Public License(GPL)의 조건에 따라 라이선스가 부여됩니다.LANL, SiS, AMD, Coresystems 및 Linux Networx, Inc. 및 메인보드 벤더 MSI, Gigabyte 및 Tyan이 주요 공헌자입니다.MSI, Gigabyte, Tyan은 표준 BIOS와 함께 코어 부팅을 제공하거나 메인보드의 하드웨어 인터페이스 사양을 제공합니다.구글은 coreboot [8]프로젝트를 부분적으로 후원합니다.선물거래소 클러스터인 CME 그룹은 [9]2009년부터 코어부트 프로젝트를 지원하기 시작했습니다.
Coreboot은 7년 연속(2007~2014년) Google Summer of [10][11]Code에 등록되었습니다.처음 세 가지 모델을 제외한 모든 크롬북은 코어부트를 [12][13]실행합니다.Das U-Boot의 코드가 ARM 명령 [14]세트에 기반한 프로세서를 지원할 수 있도록 동화되었습니다.
2019년 6월, 코어부트는 소프트웨어 [15]스위트의 오픈 소스 릴리스에 이은 펌웨어 고유의 문제에 대한 역엔지니어링 노력을 위해 NSA 소프트웨어 Ghidra를 사용하기 시작했다.
지원되는 플랫폼
코어부트에서 지원되는 CPU 아키텍처에는 IA-32, x86-64, ARM, ARM64, MIPS 및 RISC-V가 포함됩니다.지원되는 SOC 플랫폼에는 OLPC용으로 개발된 Geode GX 프로세서를 시작으로 AMD Geode가 포함됩니다.Artec Group은 ThinCan 모델 DBE61에 Geode LX 지원을 추가했습니다.이 코드는 AMD에 의해 채택되었으며 Geode LX 플랫폼으로 업그레이드된 후 OLPC에 대해 더욱 개선되었으며 다른 Geode 변형을 지원하기 위해 코어 부트 커뮤니티에 의해 더욱 개발되었습니다.플래시롬을 사용하여 Geode 플랫폼에 코어부트를 플래시할 수 있습니다.
AMD Geode 기반 플랫폼에서의 초기 개발 이후 코어 부트 지원은 많은 AMD 프로세서 및 칩셋으로 확장되었습니다.프로세서 목록에는 패밀리 0Fh 및 10h(K8 코어)와 최근 패밀리 14h(Bobcat 코어, Fusion APU)가 포함되어 있습니다.코어 부트 지원은 AMD 칩셋(RS690, RS7xx, SB600 및 SB8xx)으로도 확장됩니다.
AMD 64 메인보드상의 시스템 디바이스를 초기화하는 부트스트랩 프로토콜인 AMD 범용 캡슐화 소프트웨어 아키텍처(AGSA)는 AMD64 [16]하드웨어상의 코어 부트 시스템의 초기화에 필요한 기능을 제공하는 것을 목적으로 2011년 초에 오픈 소스되었습니다.그러나 이러한 릴리스는 AMD에 의한 향후 개발의 기반이 되지 않았고, 그 후 [17]중단되었습니다.
코어 부트 또는 그 파생 모델 중 하나로 프리로드할 수 있는 디바이스는 다음과 같습니다.
- x86 기반의 Chromebook,[18][19]
- Libreboot X200과 T400(ThinkPad X200과 T400은 각각 Minifree(이전에는 Gluglug으로 알려짐)에서 구입 가능),[20][21]
- 1자녀당 1노트북 이니셔티브의 OLPC XO
- ThinCan 모델 DBE61, DBE62 및 DBE63 및 PC [22]엔진에서 제조된 팬리스 서버/라우터 하드웨어.
- 모든 Puri.sm Librem 노트북에는 [23]coreboot이 포함되어 있습니다.[24]
- 일부 System76 PC에서는 오픈소스 임베디드 컨트롤러 펌웨어를 포함하여 coreboot TianoCore 펌웨어를 사용합니다.
- StarLabs Systems는 [25]대체 수단으로 Coreboot 펌웨어를 사용합니다.
설계.
Coreboot은 일반적으로 Linux 커널을 로드하지만 네트워크를 통해 Linux 커널을 부팅할 수 있는iPXE, gPXE, Etherboot, SeaB 등 다른 스탠드 얼론 ELF 실행 파일을 로드할 수 있습니다.Linux[26] 커널, Windows 2000 이후 및 BSD를 로드할 수 있는IOS. Windows 2000/XP 및 OpenBSD 지원은 ADLO에 [27][28]의해 이전에 제공되었습니다.코어부트는 Myrinet, Quadrics, SCI 클러스터 인터커넥트 등 지원되는 디바이스에서 커널을 로드할 수도 있습니다.Plan 9 커널과 같은 다른 커널을 직접 부팅할 수도 있습니다.커널을 직접 로드하는 대신 coreboot은 GNU GRUB 2의 coreboot 지원 버전과 같은 전용 부트 로더에 제어를 넘길 수 있습니다.
Coreboot은 주로 C로 작성되며 어셈블리 코드는 소량입니다.프라이머리 프로그래밍 언어로 C를 선택하면 일반적으로 [29]어셈블리에 기술되어 있던 현재의 PC BIOS에 비해 코드 감사가 쉬워지기 때문에 보안이 향상됩니다.Ada에서는[30] 보안 바를 더욱 높이기 위해 코어부트의 일부를 쓰는 빌드 및 런타임 지원이 있지만, 현재는 산발적으로만 사용되고 있습니다.소스 코드는 GNU GPL 버전2 라이선스로 출시됩니다.
Coreboot은 하드웨어 초기화를 최소화하고 제어권을 운영체제로 넘깁니다.그 결과, operating system이 제어되면, 코어 부트 코드는 실행되지 않습니다.coreboot의 특징은 x86 버전이[31] 10개의 명령만 실행한 후 32비트 모드로 실행된다는 것입니다(기타 x86 BIOS는 거의 모두 16비트 모드에서만 실행).이는 최신 PC 하드웨어에서 사용되는 최신 UEFI 펌웨어와 유사합니다.
coreboot 자체로는 BIOS 호출 서비스를 제공하지 않습니다.바다비IOS payload를 사용하여 BIOS 콜을 제공할 수 있으므로 코어 부트에서는 Windows 2000/XP/Vista/7 및 BSD 등의 서비스를 필요로 하는 운영시스템을 로드할 수 있습니다.그러나 대부분의 최신 운영체제는 다른 방법으로 하드웨어에 액세스하여 초기 초기화와 폴백 메커니즘으로만 BIOS 호출을 사용합니다.
코어 부트 단계
- 부트 블록 단계:플래시 액세스를 준비하고 사용할 ROM 스테이지를 조사합니다.
- ROM 스테이지:메모리 및 초기 칩셋 초기화(UEFI의 PEI와 약간 유사)
- RAM 스테이지: CPU, 칩셋 및 메인보드 초기화, PCI 리소스 할당, ACPI 및 SMBIOS 테이블 생성, SMM 핸들러(UEFI의 DXE 스테이지와 약간 유사)
- 페이로드
DRAM 초기화 중
코어 부트 초기화가 가장 어려운 하드웨어는 DRAM 컨트롤러와 DRAM입니다.경우에 따라 이 주제에 대한 기술 문서는 NDA에 의해 제한되거나 이용할 수 없습니다.RAM을 초기화하기 전에는 사용할 수 없기 때문에 RAM 초기화가 특히 어렵습니다.따라서 DRAM 컨트롤러와 DRAM을 초기화하기 위해 초기화 코드에는 CPU의 범용 레지스터 또는 캐시 as RAM만이 임시 스토리지로 포함될 수 있습니다.
ROMCC는 RAM 대신 레지스터를 사용하는 C 컴파일러로 작업을 용이하게 합니다.ROMCC를 사용하면 RAM을 사용할 수 있는 DRAM DIMM의 SPD ROM에 SMBus에서 비교적 쉽게 접근할 수 있습니다.
새로운 x86 프로세서에서는 DRAM이 초기화될 때까지 프로세서 캐시를 RAM으로 사용할 수 있습니다.프로세서 캐시도 캐시 as[32][33] RAM 모드로 초기화해야 하지만 DRAM 초기화보다 필요한 명령이 적습니다.또, 캐쉬 as RAM 모드의 초기화는 CPU 아키텍처에 특화되어 있기 때문에, 각 칩셋과 메인보드에 특화된 DRAM 초기화보다 범용적입니다.
대부분의 최신 x86 플랫폼에서는 벤더에서 제공하는 클로즈드 소스 바이너리 전용 컴포넌트가 DRAM 설정에 사용됩니다.Intel 시스템의 경우 FSP-M이 [34]필요하지만 AMD는 현재 지원되지 않습니다.Binary AGEA는 현재 AMD 시스템의 독자적인 UEFI 펌웨어에 사용되고 있으며, 이 모델은 향후 AMD 관련 코어 부트 [35]지원으로 이행될 예정입니다.
코어 부트 개발 및 디버깅
코어 부트에서는 하드웨어의 초기화가 필요하므로 코어 부트에서는 지원하는 모든 칩셋과 메인보드로 이식해야 합니다.RAM을 초기화하기 전에 coreboot은 시리얼 포트(어드레싱 캐시 및 레지스터 전용)를 초기화하여 연결된 단말기에 디버깅텍스트를 송신할 수 있습니다.또, 접속되어 있는 POST 카드의 2 자리수의 디스플레이에 표시되는 포토 0 x 80 에 바이트 코드를 송신할 수도 있습니다.
또 다른 포팅 지원으로는 www.ioss.com.tw의 상용 "RD1 BIOS Savior" 제품이 있습니다(이 제품은 www.iad.gov/ioss/)의 US Interagency OPSEC Support Staff와 혼동하지 마십시오).이 제품은 2개의 부트 메모리 소켓에 연결되어 있으며 2개의 디바이스 사이에서 수동 스위치를 선택할 수 있습니다.컴퓨터는 1개의 디바이스에서 기동할 수 있습니다.그 후 스위치를 전환하여 컴퓨터가 두 번째 디바이스를 재프로그래밍하거나 "플래시"할 수 있습니다.더 비싼 대체품은 외부 EEPROM/NOR 플래시 프로그래머입니다.
CPU를 교환하거나 JTAG 포트를 통해 접속하는 CPU 에뮬레이터도 있습니다.예를 들어 Sage[36][37] SmartProbe가 있습니다.코드는 BIOS 디바이스의 플래시가 아닌 BIOS 에뮬레이터 상에 구축 또는 다운로드 할 수 있습니다.
페이로드
코어부트는 payload를 로드할 수 있습니다.이 payload는,libpayload 도우미 라이브러리.기존 페이로드에는 다음이 포함됩니다.
- SeaBIOS는 x86 BIOS의 작은 구현으로 대부분 GNU C 컴파일러를 사용하여 16비트 C로 작성됩니다.
- UEFI의[38] 무료 오픈 소스 구현인 TianoCore
- OpenBIOS, 오픈 펌웨어의 무료 오픈 소스 구현
- GNU GRUB, 부트 로더
- FILO, USB 부팅을 지원하는 GRUB급 부트로더
- Etherboot: 네트워크를 통해 운영 체제를 부팅할 수 있습니다.
- Etherboot의 후속 버전인 gPXE/iPXE는 SeaB에서 실행 중일 때 작동합니다.IOS 또는 TianoCore
- Charge는 Chrome[39] OS용 구글에서 사용합니다.
- Das U-Boot 브랜치는 과거에 Google에서[40] Chromium OS용으로 사용되었습니다.
유럽 코어 부트 회의
2017년 10월에 조직되어 3일간 계속된 유럽 코어부트 회의(European Coreboot Conference)가 물리적 회의 중 하나입니다.
회의 이력
이벤트 및 연도 | 날짜. | 개최 도시 | 장소 | 자원. | 테마 |
---|---|---|---|---|---|
ECC2017 | 26.10. – 29.10 | 보쿰, 독일 | RUB 컨벤션 센터 | https://ecc2017.com |
벤더
Coreboot은 오픈 소스이며, Chrome OS Devices, [41]PC Engine, Star Labs, System76 및 Purism 등의 서드 파티는 하드웨어에 coreboot을 [42]탑재하여 출하합니다.
변종
Coreboot 에는 원래의 코드 베이스로부터, 각각 약간 다른 목적을 가지는 다수의 변종이 있습니다.
- librecore - 자유도, 비x86 명령어 세트 컴퓨터 및 펌웨어 개발 프레임워크에 중점을 둔 변종입니다.
- Libreboot - 모든 바이너리 블럽을 제거하는 데 주로 초점을 맞춘 변형입니다.
libreboot는 독자적인 바이너리블롭이 [43][5]없는 코어부트의 디스트리뷰션으로서 확립되어 있습니다.libreboot은 코어부트의 직접적인 포크가 아닙니다.대신 업스트림 공급업체로서 최신 코어부트와 긴밀히 연계하여 항상 재베이스하는 병행 작업입니다.가능한 한 업스트림에서 패치가 Marge됩니다.libreboot는 자체 소프트웨어를 제거할 뿐만 아니라 빌드 [44]및 설치 프로세스를 자동화하여 코어 부트를 사용하기 쉽게 하려고 합니다.
Libreboot 프로젝트는 일부 ThinkPad,[45][46] MacBook 및 ARM Chromebook 노트북의 완전한 libre 변형을 위해 필요한 수정을 가능하게 했다.
「 」를 참조해 주세요.
레퍼런스
- ^ "Releases". coreboot. n.d.
- ^ "ARM". coreboot. 15 October 2013. Retrieved 1 February 2014.
- ^ "coreboot's licence". github.com. 1991. Retrieved 13 October 2018.
- ^ "[LinuxBIOS] Welcome to coreboot". 12 January 2008.
- ^ a b "Libreboot". libreboot.org. Retrieved 31 July 2014.
- ^ coreboot FAQ: coreboot 관련 작업자
- ^ 안톤 보리소프:오픈 소스 BIOS는 10. Wayback Machine에서 2012년 9월 16일에 실시된 코어 부트 개발자와의 인터뷰.더 에이치, 2009년.
- ^ "Google Sponsors the LinuxBIOS project".
- ^ "CME Group Dives Into Coreboot and Other Linux Open Source Projects". Wall Street & Technology. Archived from the original on 12 August 2010. Retrieved 23 September 2015.
- ^ "GSoC". coreboot.org. Retrieved 1 February 2014.
- ^ "Previous GSoC Projects". coreboot.org. Retrieved 1 February 2014.
- ^ Larabel, Michael (22 April 2012). "Many FSF Priority Projects Still Not Progressing". Phoronix. Retrieved 29 December 2014.
The success out of Coreboot recently is Google providing Sandy/Ivy Bridge support for Coreboot. Google's planning to begin shipping new Intel "Chromebooks" that will use Coreboot. Google likes Coreboot for the faster start-up time, among other benefits.
- ^ "Chromebooks". coreboot. 16 January 2014. Archived from the original on 8 May 2016. Retrieved 17 February 2014.
- ^ "GSoC2011(Week 1): Analysis of U-boot ARM boot code coreboot developer blogs". Retrieved 12 April 2014.
- ^ "Coreboot Project Is Leveraging NSA Software To Help With Firmware Reverse Engineering - Phoronix". www.phoronix.com.
- ^ "Technical details on AMD's coreboot source code release". AMD. 28 February 2011. Archived from the original on 25 March 2014. Retrieved 1 February 2016.
- ^ Griffith, Bruce (5 November 2014). "AMD's binary-only AGESA libraries". Retrieved 8 May 2017.
- ^ "Supported Motherboards - coreboot". www.coreboot.org. Retrieved 3 April 2017.
- ^ "Many FSF Priority Projects Still Not Progressing". Phoronix. 22 April 2012. Retrieved 22 September 2015.
- ^ "Minifree". Retrieved 24 September 2015.
- ^ "The Gluglug". fsf.org. Archived from the original on 23 September 2015. Retrieved 23 September 2015.
- ^ "pcengines/coreboot". Retrieved 16 September 2019.
- ^ "coreboot Firmware on Purism Librem devices". Retrieved 19 June 2020.
- ^ "Purism Laptops To Use 'Heads' Firmware To Protect Against Rootkits, Tampering (Updated)". Retrieved 19 June 2020.
- ^ 스타북 mk v 리뷰 - fosbytes
- ^ SeaBIOS(이전에는 레거시 B)IOS)는 오픈 소스 레거시 BIOS 구현입니다.
- ^ "coreboot Add-on Layer (ADLO)". Archived from the original on 25 November 2010.
- ^ SEBOS, 운영체제용 보안 강화 부트로더, 페이즈2 2007년 6월 19일 웨이백 머신에서 아카이브, Bochs BIOS 경유 코어부트에 PC BIOS 서비스 추가 (Link는 2008년 7월 18일에 삭제됨)를 참조해 주세요.
- ^ UEFI와 레거시 BIOS를 비교하여 UEFI에 동일한 이점을 제공
- ^ 지원 추가 커밋
- ^ "coreboot v3 early startup code". Archived from the original on 10 July 2012. Retrieved 17 August 2008.
- ^ Yinghai Lu; Li-Ta Lo; Gregory R. Watson; Ronald G. Minnich (15 January 2009). "CAR: Using Cache as RAM in Linux BIOS" (PDF). qmqm.pl. Archived from the original (PDF) on 3 March 2016. Retrieved 25 February 2014.
- ^ "A Framework for Using Processor Cache as RAM (CAR)" (PDF).
- ^ "The Mission Of Coreboot - Is It About Open-Source Or Appeasing Hardware Vendors?". Phoronix Forums. Retrieved 8 September 2019.
- ^ Griffith, Bruce (5 November 2014). "[coreboot] AMD's binary-only AGESA libraries". Retrieved 8 September 2019.
- ^ "usurped title". www.se-eng.com. Archived from the original on 15 March 2011.
{{cite web}}
:Cite는 일반 제목(도움말)을 사용합니다.CS1 유지보수: 부적합한 URL(링크) - ^ "Sage SmartProbe FAQ". S.Datskovskiy. Retrieved 30 April 2021.
- ^ "Google Pushes "Project PIANO" Into Coreboot - Phoronix". phoronix.com. Retrieved 23 September 2015.
- ^ "Depthcharge: The ChromeOS bootloader". docs.google.com. Retrieved 26 October 2015.
- ^ "Modify u-boot code to allow building coreboot payload. [chromiumos/third_party/u-boot-next : chromeos-v2011.03]". 24 July 2011.
- ^ "PC Engines". Retrieved 5 May 2022.
- ^ "Distributions". Retrieved 5 May 2022.
- ^ "Libreboot". Free Software Foundation. Retrieved 31 July 2014.
- ^ "About the libreboot project". libreboot.org. Retrieved 25 April 2015.
- ^ Gay, Joshua (9 October 2012). "Respects Your Freedom hardware product certification". Free Software Foundation. Retrieved 25 February 2015.
- ^ "Hardware compatibility list". libreboot.org. Retrieved 25 February 2015.
추가 정보
- M. Jones, IBM의 Linux 부팅 프로세스 내부
- Linux용 BIOS 열기 by Peter Seebach (아카이브만)
- Linux BIOS 미드레인지 도입 준비, by Bruce Byfield
- LinuxB에서 지원되는 최초의 데스크톱 메인보드IOS: GIGABYTE M57SLI-S4, Brandon Howard 제작
- Ron Minnich의 LinuxB 비디오 녹화FOSDEM 2007의 IOS 토크
- Coreboot Your Service, Linux Journal, 2009년 10월
- media.ccc.de - "Peter Stuge" 검색