라즈베리 파이는 어떻게 부팅합니까?


57

라즈베리 미니 컴퓨터가 있는데 부팅 프로세스가 어떻게 진행되는지 궁금합니다. 나는 자신의 스크립트로 내 자신의 커널과 init 램 디스크를 컴파일하고 PC에 내 자신의 최소 리눅스 시스템을 구축 할 수 있지만 부트 로더를 사용해야한다. 라즈베리는 부트 로더를 전혀 지원하지 않는 것 같습니다.

FAT32로 포맷 해야하는 SD 카드 (아마 부팅 가능한 플래그가있는 파티션)의 일부 파티션을 읽은 다음 GPU에서 제공하는 일부 파일을 읽는 GPU를 사용하여 부팅하는 것 같습니다.

그러나 내가 직접 컴파일 한 사용자 정의로 커널을 부팅하려면 어떻게해야합니까? 라즈베리가 커널 이미지를 찾아서 부팅 할 수 있도록 커널 이미지 / initrd (ram 디스크)를 어디에 복사해야합니까? 나는 기본적으로 라즈베리의 부팅 프로세스 또는 이에 대한 설명을 설명하는 매우 상세한 기술 문서를 찾고 있습니다.


답변:


59

Raspberry Pi 포럼 게시물에서 [아나 크로 리즘으로 반영하도록 편집 됨 loader.bin] :

  1. Raspberry Pi를 처음 켜면 ARM 코어가 꺼지고 GPU 코어가 켜집니다. 이 시점에서 SDRAM은 비활성화되어 있습니다.
  2. GPU는 SoC의 ROM에 저장된 첫 번째 단계 부트 로더 실행을 시작합니다. 첫 번째 단계 부트 로더는 SD 카드를 읽고 두 번째 단계 부트 로더 ( bootcode.bin)를 L2 캐시에 로드하여 실행합니다.
  3. bootcode.binSDRAM을 활성화하고 SD 카드에서 RAM으로 3 단계 부트 로더 (loader.bin)를 읽고이를 실행합니다. [최신 버전은 3 단계 부트 로더를 사용하지 않습니다. ]
  4. [해당되는 경우] loader.binGPU 펌웨어를 읽습니다 ( start.elf).
  5. start.elf읽고 config.txt, cmdline.txt그리고kernel.img

loader.bin많이하지 않습니다. .elf파일 을 처리 할 수 있으므로 start.elf메모리 상단에 로드해야합니다 (ARM은 주소 0의 SDRAM을 사용합니다). 거기에 엘프로드 지원을 추가 할 계획이다 bootcode.bin만들 것이다, loader.bin필요는 있지만, 낮은 우선 순위 (나는 그것이 부팅에 당신이 100ms를 저장할 수 추측)입니다. [이 변경은 이후에 이루어졌습니다. ]

도움이 될만한 자료는 다음과 같습니다.


2
이 bin 파일의 내용이 모두 독점 소프트웨어입니까?
Petr

3
@Petr 다음 은 Raspberry Pi 펌웨어 용 Github입니다. 제 답변으로 편집하겠습니다.
syb0rg

1
라즈베리 파이 자주 묻는 질문은 ,이 인수 "당신은 SD하지만 USB의 HD는 수에서 부팅해야합니다"라는 "초기 부팅 후. 당신은 SD 카드없이 부팅 할 수 없습니다."
syb0rg

1
B 플래그가있는 파티션이거나 먼저 파티션이어야하는 해당 파티션이 먼저 읽혀 집니까? 내가 그것을 너무 크게 만들어서 더 작은 SD 카드의 끝에 또 하나를 만들고 싶을 경우
Petr

1
@ 피터 당신은 또 다른 질문으로 그 질문을해야합니다!
syb0rg
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.