Das U-Boot

Das U-Boot
Das U-Boot
U-Boot Logo.svg
개발자DENX 소프트웨어 엔지니어링
초기 릴리즈1999년 10월 15일, 22년 전(1999년 10월 15일)
안정된 릴리스
v2022.01 / 2022년 1월 10일, 6개월 전(2022-01-10)[1]
저장소
기입처C, 어셈블리
이용가능기간:영어
유형부트 로더
면허증.GPL-2.0 이후[2]
웹 사이트www.denx.de/wiki/U-Boot/ Edit this on Wikidata

Das U-Boot ('Universal Boot Loader'라는 부제가 붙어있고 종종 U-Boot로 줄여서 사용되기도 합니다. 자세한 내용임베디드 디바이스에서 디바이스 운영체제 커널을 부팅하는 명령을 패키징하기 위해 사용되는 오픈 소스 프라이머리 부트 로더입니다.68k, ARM, Blackfin, MicroBlaze, MIPS, Nios, SuperH, PPC, RISC-V, x86 등 다수의 컴퓨터 아키텍처에서 사용할 수 있습니다.

기능

U-Boot은 1단계 및 2단계 부트로더입니다.SD 카드, SATA 드라이브, NOR 플래시(SPI 또는 I²C 사용) 또는 NAND 플래시와 같은 지원되는 부팅 장치에서 시스템의 ROM(ARM CPU의 온칩 ROM)에 의해 로드됩니다.사이즈 제약이 있는 경우 U-Boot은 2단계로 나눌 수 있습니다.플랫폼은 U-Boot의 제거 버전인 작은 SPL(Secondary Program Loader)을 로드하고 SPL은 몇 가지 초기 하드웨어 구성(를 들어 CPU 캐시를 RAM으로 사용하여 DRAM 초기화)을 수행하고 더 크고 완전한 기능의 U-Boot [3][4][5]버전을 로드합니다.SPL 사용 여부에 관계없이 U-Boot은 1단계(메모리 컨트롤러 및 SDRAM 구성 등)와 2단계 부팅(설정해야 하는 다양한 장치에서 최신 운영 체제를 로드하기 위한 여러 단계를 수행하거나 사용자가 부팅 프로세스와 상호 작용하고 제어할 수 있는 메뉴를 제공하는 등)을 수행합니다.

U-Boot은 Embedded Base Boot Requirements([6]EBBR) 사양에 정의된 UEFI 사양의 서브셋을 구현합니다.GRUB 또는 Linux 커널과 같은 UEFI 바이너리는 부트 매니저 또는 명령줄 인터페이스를 통해 부팅할 수 있습니다.

U-Boot은 콘솔 또는 시리얼 포트에서 명령줄 인터페이스를 실행합니다.CLI를 사용하면 커널을 로드 및 부팅할 수 있으며 파라미터가 기본값에서 변경될 수 있습니다.디바이스 정보 읽기, 플래시 메모리 읽기 및 쓰기, 시리얼 포트 또는 네트워크에서 파일 다운로드(커널, 부트 이미지 등) 및 디바이스 트리 조작 및 환경 변수(영속 스토리지에 쓸 수 있으며 기본 부트 명령 및 타임아웃 등의 U-Boot 동작을 제어하는 데 사용되는 명령도 있습니다.이더넷 MAC 주소 등의 하드웨어 데이터)를 참조해 주세요.

커널 및 기타 부트 데이터의 메모리 위치를 숨기거나 자동으로 선택하는 PC 부트로더와 달리 U-Boot에서는 물리 메모리 주소를 데이터 복사(커널, ramdisk, 디바이스 트리 등) 및 커널로의 점프 및 커널 인수로서 명시적으로 지정해야 합니다.U-Boot의 명령어는 상당히 낮은 수준이기 때문에 커널을 부팅하는 데는 몇 가지 단계가 필요하지만 더 일반적인 작업에 동일한 명령을 사용할 수 있기 때문에 U-Boot을 다른 부트 로더보다 유연하게 만들 수 있습니다.U-Boot을 사용하여 U-Boot를 업그레이드할 수도 있습니다.어디선가(로컬 스토리지, 또는 시리얼 포트 또는 네트워크)에서 새로운 부트로더를 메모리로 읽어, 그 데이터를 부트로더가 속해 있는 영속 스토리지에 쓰는 것만으로, 간단하게 업그레이드할 수 있습니다.

U-Boot은 USB를 지원하므로 시리얼 포트로부터의 입력 외에 USB 키보드를 사용하여 콘솔을 조작할 수 있으며 SD 카드 리더 등의 USB 대용량 스토리지 디바이스에 액세스하여 부팅할 수 있습니다.

데이터 스토리지 및 부팅 소스

U-Boot는 커널 및 기타 필요한 데이터(디바이스 트리 또는 램디스크 이미지 등)를 메모리에 읽어 들여 적절한 인수로 커널을 실행함으로써 운영 체제를 부팅합니다.

U-Boot의 명령어는 실제로 임의의 데이터를 읽거나 쓰는 데 사용할 수 있는 일반화된 명령어입니다.이러한 명령을 사용하면 다음과 같은 U-Boot을 지원하는 모든 스토리지 시스템에서 데이터를 읽거나 쓸 수 있습니다.

(주의: 이들은 U-Boot에서 데이터(커널 또는 ramdisk 이미지 등)를 메모리에 로드할 수 있는 부팅 소스입니다.U-Boot 자체는 플랫폼에 의해 부팅되어야 하며, 이는 플랫폼의 ROM이 부팅 가능한 디바이스에서 실행되어야 합니다.이것은 당연히 플랫폼에 따라 다릅니다.)

  • 온보드 스토리지 또는 접속 스토리지
    • SD카드
    • SATA
    • SCSI
    • I²C(EEPROM 또는 NOR 플래시 등)
    • SPI(NOR 또는 NAND 플래시 등)
    • ONFI(원래 NAND 플래시)
    • eMMC(관리 대상 NOR 또는 NAND 플래시)
    • eUFS(Managed NAND Flash)
    • NVMe
    • USB 대용량 저장 장치
  • 시리얼 포트(파일 전송)
  • 네트워크 부트(옵션으로 DHCP, BOOTP 또는 RARP 사용)

호환 파일 시스템

U-Boot은 커널이 루트 파일 시스템 또는 초기 램디스크로 사용하기 위해 파일 시스템을 읽을 필요가 없습니다.U-Boot은 단순히 커널에 적절한 파라미터를 제공하거나 내용을 이해하지 않고 데이터를 메모리에 복사합니다.

그러나 U-Boot은 파일 시스템에서 읽을 수도 있고 경우에 따라 쓸 수도 있습니다.이렇게 하면 U-Boot이 로드하는 데이터를 스토리지 디바이스의 고정된 위치에 저장하도록 요구하지 않고 U-Boot은 파일 시스템을 읽어 커널, 디바이스 트리 등을 경로 이름으로 검색하고 로드할 수 있습니다.

U-Boot에는 다음 파일 시스템이 지원됩니다.

디바이스 트리

디바이스 트리는 하드웨어 레이아웃을 설명하기 위한 데이터 구조입니다.디바이스 트리를 사용하면 벤더는 수정이 덜 된 메인라인 U-Boot을 특수한 용도 이외의 하드웨어에서 사용할 수 있습니다.Linux 커널에서도 채택된 디바이스 트리는 (U-Boot 및 Linux의) 수많은 제품 고유의 포크가 존재하는 임베디드 업계의 상황을 개선하기 위한 것입니다.메인라인 소프트웨어를 실제로 실행할 수 있기 때문에 고객은 벤더 업데이트 부족에 대한 보증을 받을 수 있습니다.


역사

XPedite5501에서의 U-Boot

이 프로젝트의 원조는 Magnus [7]Damm이 작성한 8xx Power PC 부트로더 8xx ROM입니다.1999년 10월 Wolfgang Denk는 SourceForge.net으로 프로젝트를 옮기고 PPCBoot으로 이름을 변경했습니다.이것은 SF.net이 [7]숫자로 시작하는 프로젝트 이름을 허용하지 않았기 때문입니다.PPCBoot 버전 0.4.1은 2000년 7월 19일에 처음 공개되었습니다.

2002년 이전 버전의 소스 코드가 ARMBoot이라는 제품에 잠시 포크되었지만, 그 직후 PPCBoot 프로젝트에 다시 통합되었습니다.2002년 10월 31일에 PPCBoot-2.0.0이 출시되었습니다.이는 PPC [8][9]ISA 이외의 다른 아키텍처에서 작업할 수 있는 기능을 반영하여 이름이 변경되었기 때문에 PPCBoot이라는 이름으로 마지막 릴리스가 되었습니다.

PPCBoot-2.0.0은 2002년 11월에 U-Boot-0.1.0이 되어 x86 프로세서 아키텍처로 동작하도록 확장되었습니다.2003년 3월 MIPS32, 4월 MIPS64, 10월 Nios II, 12월 Cold Fire, 2004년 4월 MicroBlaze 등의 아키텍처 기능이 다음 달에 추가되었습니다.2004년 5월 U-Boot-1.1.2 릴리스는 다양한 [9]아키텍처에 걸친 216개 보드 제조사의 제품에 적용되었습니다.

현재 이름인 Das U-Boot독일어로 된 명확한 기사를 추가해, 제2차 세계대전 독일 U보트에서 벌어지는 1981년 독일 잠수함 영화 Das Boot에서 2개 국어를 구사할 수 있는 말장난을 만들어냈다.GNU General Public License의 조건에 따라 출시된 무료 소프트웨어입니다.크로스툴, 임베디드 Linux Development Kit(ELDK) 또는 OSELAS 등의 크로스툴을 사용하여 임의의 아키텍처용 x86 PC 상에 구축할 수 있습니다.툴 체인

임베디드 Linux 시스템에서 U-Boot의 중요성은 Karim Yaghmour의 저서 Building Embedded Linux Systems에서 매우 간결하게 언급되어 있습니다.Karim Yaghmour는 U-Boot에 대해 "다른 부트로더는 꽤 많지만 유니버설 부트로더인 'Das U-Boot'은 가장 풍부하고 유연하며 가장 활발하게 개발된 부트로더입니다."라고 시작합니다.이용할 [10]수 있습니다."

사용법

  • ARM 기반의 Chromebook은 U-Boot과 함께 출하됩니다.Celeron 및 i5 기반의 Chromebook에서는 코어부트[11]payload로 사용합니다.
  • Amiga를 실행하는 PowerPC 기반의 AmigaOne 컴퓨터 시리즈OS는 U-Boot, 특히 ACube Systems Srl의 Sam440ep과 Sam460ex와 AmigaOne X1000의 후속 모델인 A-Eon의 AmigaOne X5000을 사용합니다.
  • 유비퀴티 네트워크 디바이스는 U-Boot을 사용합니다.
  • Amazon Kindle & Kobo eReader 디바이스는 U-Boot을 부트 로더로 사용합니다.
  • TP-Link 및 기타 OpenWRT/LEDE 호환 MIPS 기반 무선 라우터는 U-Boot을 사용하여 부트를 수행합니다.
  • Teltonika 셀룰러 라우터는 U-Boot 기반의 부트로더를 사용합니다.
  • SpaceX의 Falcon과 Dragon은 둘 다 [12]U-Boot을 사용합니다.
  • 아사히 리눅스는 애플 실리콘 [13]맥에서 리눅스를 부팅하기 위해 m1n1의 페이로드로 사용합니다.

「 」를 참조해 주세요.

메모들

  1. ^ 이것은 진정한 NFS 부트입니다(U-Boot 자체는 NFS를 사용하여 커널을 로드합니다).네트워크에서 커널을 로드하고 커널에서 NFS 마운트를 루트 파일 시스템으로 사용하도록 지정하는 것이 아닙니다.

레퍼런스

  1. ^ Rini, Tom (10 January 2022). "U-Boot v2022.01 released". u-boot (Mailing list). Retrieved 12 February 2022.
  2. ^ "Das U-Boot's licence". git.denx.de. 2013. Retrieved 2018-10-13.
  3. ^ "Preparing a Uboot image for Altera's Cyclone V SoC FPGA".
  4. ^ "U-Boot on i.MX6". 18 June 2013.
  5. ^ "Archived copy". Archived from the original on 2017-09-05. Retrieved 2016-06-15.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  6. ^ https://github.com/arm-software/ebbr, Embedded Base Boot Requirements (EBBR) 사양, 2021-03-25 취득
  7. ^ a b PPCBoot 홈페이지:작가들
  8. ^ [PPCBoot 사용자] PPCBoot의 할로윈 릴리즈: 2.0.0 - 최종 릴리즈." 볼프강 덴크, 2002년 10월 31일
  9. ^ a b "U-Bootdoc History". Retrieved September 4, 2011.
  10. ^ Karem Yaghmour의 임베디드 Linux 시스템 구축, 9장
  11. ^ coreboot tutorial oscon 2013, 페이지 6
  12. ^ 저희는 SpaceX 소프트웨어 팀입니다.무엇이든 물어보세요!답변 4
  13. ^ "U Boot · AsahiLinux/docs Wiki". GitHub. Retrieved 2022-04-29.

외부 링크