Target
Board
Raspberry Pi CM4 + IO Board
Host
PC - Window
목표
CM4의 EEPROM 부트로더를 최신화하고 BOOT_ORDER를 수정하여 부팅 순서 설정

 

1. Raspberry Pi Compute Module 4(이하 CM4)의 EEPROM 부트로더 개요

- CM4에는 EEPROM이 내장되어 있으며, 이 EEPROM에는 부트로더(Bootloader)가 저장됨

- CM4는 EEPROM에 저장된 부트로더를 실행하여 운영체제를 로드

 

2. CM4의 부트 과정

CM4의 부팅 과정은 다음과 같음

(1). EEPROM에서 부트로더 실행

- CM4는 부팅 시 SPI EEPROM에서 부트로더를 로드하고 실행

- 이 부트로더는 Raspberry Pi 재단에서 제공하며, 펌웨어 업데이트를 통해 변경할 수 있음

 

(2). 부팅 소스 확인

 

(3). 부트로더는 설정된 부팅 순서(BOOT_ORDER)에 따라 가능한 부팅 장치를 검색

기본적인 부팅 순서는 다음과 같습니다:

- eMMC (또는 SD 카드)

- USB 장치 (USB Storage, USB Boot 등)

- Network Boot (PXE, TFTP)

- Fallback (재시도 및 복구 모드 진입)

 

(4). 운영체제 커널 로드 및 실행

- 선택된 부팅 장치에서 운영체제 커널을 로드하여 실행


1. CM4 EEPROM Bootloader 업데이트를 위한 준비물

 
HOST
CM4 또는 rpiboot 도구가 설치된 Linux PC
DEVICE
CM4
케이블
USB to USB-A 케이블 (CM4의 경우 USB-C to USB-A 케이블)

 

HOST $ sudo apt install git libusb-1.0-0-dev pkg-config build-essential
HOST $ git clone --recurse-submodules --shallow-submodules --depth=1 https://github.com/raspberrypi/usbboot
 

 

- bootloader 수정

HOST $ cd ~/usbboot/recovery
HOST $ nano boot.conf
 

 

- 아래와 같이 수정

[all]
BOOT_UART=0
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0
 
# Try SD first (1), followed by, USB PCIe, NVMe PCIe, USB SoC XHCI then network
BOOT_ORDER=0xf25641
 
# Set to 0 to prevent bootloader updates from USB/Network boot
# For remote units EEPROM hardware write protection should be used.
ENABLE_SELF_UPDATE=1
 
HOST $ ./update-pieeprom.sh
 

 

STEP2 : DEVICE

- CM4를 USB 모드로 설정 : EMMC-DISABLE / nRPIBOOT(GPIO 40)를 GND에 연결. ROM을 usbboot 모드로 전환해야 함. 그렇지 않으면 SPI EEPROM 부트로더 이미지가 대신 로드됨

- CM4를 HOST의 USB 포트에 연결

- 전원을 공급

 

STEP3 : HOST

- recovery/pieeprom.bin부트로더 EEPROM에 쓰려면 다음 명령을 실행

- 다음 명령을 실행하여 업데이트된 pieeprom.bin이미지를 EEPROM에 씁니다.

HOST $ cd ~/usbboot

HOST $ sudo ./rpiboot -d recovery
 

완료되면 EEPROM_nWP는 low로 떨어짐

 

 

HOST 화면

 

DEVICE 화면 : rpiboot 실행 전 rpi-eeprom-config로 boot.conf 확인

 

DEVICE 화면 : rpiboot 실행 후 rpi-eeprom-config로 boot.conf 확인

 

BOOT_ORDER의 다양한 부팅 모드 설정 속성

Value
Mode
Description
0x0
SD CARD DETECT
Try SD then wait for card-detect to indicate that the card has changed - deprecated now that 0xf (RESTART) is available.
0x1
SD CARD
/eMMC
SD card (or eMMC on Compute Module 4).
0x2
NETWORK
Network boot
0x3
RPIBOOT
RPIBOOT
0x4
USB-MSD
USB mass storage boot
0x5
BCM-USB-MSD
USB 2.0 boot from USB Type C socket (CM4: USB type A socket on CM4IO board).
0x6
NVME
CM4 only: boot from an NVMe SSD connected to the PCIe interface.
0x7
HTTP
HTTP boot over ethernet.
0xe
STOP
Stop and display error pattern. A power cycle is required to exit this state.
0xf
RESTART
Restart from the first boot-mode in the BOOT_ORDER field i.e. loop

 

사용 예

0xf25641 Network → BCM-USB-MSD → NVME → USB → SD/eMMC
0xf14 USB → SD/eMMC → Network
0x1 SD/eMMC 우선
0xf21 Network → USB → SD/eMMC

 

 

Linux?

오픈소스 운영 체제(OS). 운영 체제(Operating System, OS)는 CPU, 메모리, 스토리지처럼 시스템의 하드웨어와 리소스를 직접 관리하는 소프트웨어. OS는 애플리케이션과 하드웨어 사이에서 모든 소프트웨어와 작업을 수행하는 물리적 리소스를 연결

 

Linux는 크게 아래 3가지로 구성 됨

1. 부트로더(Boot loader)

2. 커널(Kernel)

3. 파일 시스템(File system)


 

1. 부트로더(Boot loader)

OS가 시작되기 전 실행되어 커널을 메모리에 올려 OS를 실행 시켜 줌

 

1-1. 부트로더의 기능

- 메모리 초기와

- 하드웨어 초기와

- 네트워크 초기와

- 사용자 인터페이스 기능

 

1-2. 부트로더의 동작

- 압축 되어 있는 커널 이미지를 메모리에 복사

- 커널 이미지의 압축을 품

- 커널을 실행

- 루트 파일시스템을 마운트

- OS 운영에 필요한 프로그램을 실행

 

1-3. 부트로더의 종류

- U-Boot(Universal Bootloadcer)

- LILO(Linux Loader)

- GRUB(GRand Unified Bootloader)

- RedBoot

- BLOB(Boot Loader Object)

 

1-4. U-Boot의 구조

- uboot는 여러개의 디렉토리로 구성 되어 있음

 

 

2. 커널(Kernel)

- 시스템의 자원을 관리해주는 OS의 핵심부

- 컴퓨터 하드웨어솨 소프트웨어를 이어주는 핵심 인터페이스

- 두 가지 관리 리소스 사이에서 최대한 효율적으로 통신

 

2-1. 커널의 기능

OS의 핵심. 메모리에 상주하며 CPU에 명령을 내리는 소프트웨어

커널은 다음과 같은 4가지 기능을 수행

 

- 메모리 관리

: 메모리가 어디에서 무엇을 저장하는데 얼마나 사용되는지 추적

 

- 프로세스 관리

: 어느 프로세스가 CPU를 얼마나 사용할지 결정(스케쥴링)

 

- 장치 드라이버

: 하드웨어와 프로세스 사이에서 중재자/인터프리터 역할을 수행

 

- 시스템 호출 및 보안

: 프로세스의 서비스 요청을 수신

 

2-2. 커널의 종류

- 단일형 커널(Monolithic Kernel)

- 마이크로 커널(Micro Kernel)

- 하이브리드 커널(Hybrid Kernel)

등이 있다.

 

2-3. 시스템 콜(System Call)

- 사용자가 접근할 수 없는 커널 메모리, 커널 데이터 등을 대신해서 접근해 주는 인터페이스

- Application Program은 user mode에서 수행 되며 하드웨어 직접 접근과 메모리에 대한 허용되지 않는 접근이 제한됨

- open(), read(), write(), close() 등이 있음

 

 

3. 파일 시스템(File system)

파일 시스템은 OS에서 파일 또는 자료에 쉽게 접근할 수 있도록 보관하거나 조직하는 체계

저장장치의 많은 파일을 관리하는 방법이 파일 시스템

 

- ex4

: ex4는 1EB까지 지원. ex3은 16TB까지 지원(TB(테라) < PB(페타) < EB(엑사)

 

- swap

: swap 공간으로 사용되는 파일 시스템

 

- xfs

: 64bit 고성능 저널링 파일 시스템

 

- iso9660

: DVD/CD-ROM을 위한 표준 파일 시스템으로 읽기만 가능

 

- nfs(network file system)

: 원격 서버에서 파일 시스템을 마운트 할 때 사용

 

 

'리눅스(Linux) > 기본 지식' 카테고리의 다른 글

QEMU(Quick Emulator)  (0) 2025.04.18
MachineWare  (0) 2025.04.18
리눅스(Linux) 기본 명령어(2) - cd  (0) 2025.03.18
리눅스(Linux) 기본 명령어(1)  (0) 2025.03.18

+ Recent posts