소개 문제
새 프로젝트의 경우 하드웨어 플랫폼으로 Raspberry Pi Compute Module 5 (CM5) 을 사용하기로 결정했습니다.
다음으로 구성된 개발 키트를 받았습니다:
- Compute Module 5 (4 GB RAM and 32 GB eMMC)
- 27W USB-C Type-C PD Power Supply
- Compute Module 5 IO Board
- Antenna Kit
- Compute Module 5 IO Case
- 2 x HDMI® to HDMI® Cable
- Cooler for Compute Module 5
- USB-A to USB-C Cable.
목표
개발을 간소화하기 위해 Compute Module 5 IO Board 에 microSD 카드 슬롯이 포함되어 있으므로 microSD 카드에서 시스템 소프트웨어 (raspiOS) 를 실행하고 싶었습니다.
저는 Raspberry Pi Imager 를 사용하여 최신 라즈베리파이 OS를 microSD 카드에 플래시하고, 카드를 IO 보드의 슬롯에 삽입한 다음 시스템의 전원을 켰습니다.
그러나 OS가 부팅되는 대신 디스플레이에 "SD: 카드가 감지되지 않았습니다"라는 터미널과 같은 메시지가 표시되고 시스템이 부팅되지 않았습니다.
원인과 결과
몇 가지 조사 끝에 라즈베리 파이 문서에서 다음과 같은 설명을 발견했습니다. Compute Module 5:
- microSD 카드 슬롯(eMMC가 없는 라이트 버전에서만 사용, 다른 버전은 슬롯을 무시함)에 대한 설명을 찾을 수 있었습니다.
즉, microSD 슬롯은 온보드 eMMC 스토리지가 포함되지 않은 "Lite" 버전에서만 사용할 수 있습니다. 내 CM5에는 32GB eMMC가 있으므로 부팅 중에 SD 슬롯이 비활성화되고 무시됩니다.
eMMC를 사용하여 CM5에 시스템 소프트웨어를 설치하는 올바른 방법
eMMC가 장착된 CM5에 운영 체제를 설치하려면 공식 지침에 따라 setting up the IO Board.
중요한 단계는 IO 보드의 J2 헤더에 점퍼를 설치하는 것입니다. 이렇게 하면 CM5가 USB 부팅 모드로 전환되어 호스트 PC가 대용량 스토리지 장치처럼 eMMC에 액세스할 수 있습니다.
rpiboot 관련 문제 및 해결 방법
제 개발 머신(우분투 22.04)에서 처음에는 rpiboot 을 설치해 보았습니다:
sudo apt install rpiboot
하지만 이 버전이 오래되었거나 CM5와 호환되지 않아서인지 제대로 작동하지 않았습니다.
대신 소스에서 rpiboot를 빌드해야 했습니다. 여기 단계를 따르세요:
공식 리포지토리를 복제합니다:
git clone --recurse-submodules --shallow-submodules --depth=1 https://github.com/raspberrypi/usbboot
cd usbboot
종속 요소를 설치하고 빌드합니다:
sudo apt install git libusb-1.0-0-dev pkg-config build-essential
make
rpiboot 실행
를 실행하고 CM5를 연결하고 J2 점퍼를 제자리에 놓습니다:
sudo ./rpiboot -d mass-storage-gadget64
시스템이 CM5의 eMMC를 감지하고 이제 라즈베리파이 이미저 또는 dd를 사용하여 OS를 플래시할 수 있습니다.
요약
- CM5 SD 슬롯은 Lite(eMMC 없음) 버전에서만 작동합니다.
- CM5를 eMMC로 플래시하려면 다음과 같이 해야 합니다:
** J2 점퍼를 설정합니다.
** rpiboot를 사용하여 USB를 통해 eMMC를 노출합니다. - 패키지로 제공되는 rpiboot가 작동하지 않는 경우 소스에서 빌드하세요.
빌드가 완료되면 SD 카드처럼 eMMC에 직접 라즈베리파이 OS를 플래시할 수 있습니다.