Defining Custom Image and Distro for Raspberry Pi Zero 2W
이전 Post에서 만든 meta-jooojub-rpi에 image recipe와 distribution configuration을 추가하여 나만의 이미지를 만들기 위한 Layer를 완성하겠습니다.
이제 이전에 Raspberry Pi Zero 2W 이미지를 만들기 위해 수정했던 local.conf와 bblayers.conf 부분을 layer에 적용하겠습니다.
이렇게 하면 수동으로 수정했던 부분들이 모두 없어지고, Layer만 추가해서 바로 이미지를 만들 수 있어서 유지보수 및 배포가 용이합니다.
1. Add Image recipes
기존에 bitbake 하여 이미지를 빌드할 때 core-image-base를 사용했었습니다.
이 이미지를 기반(base)으로 커스텀 이미지 레시피를 생성할 수 있습니다.
이전 post에서 만들었던 meta-jooojub-rpi에 아래 경로로 파일과 디렉터리를 생성합니다.
저는 jooojub-rpi0-2w라는 이름으로 bitbake 하도록 만들었습니다.
recipes-core/images/jooojub-rpi0-2w.bbmake
core-image-base를 include하였으므로 이제는 jooojub-rpi0-2w로 이미지를 빌드할 수 있습니다.
bash
2. Create Distro Configuration
기존 local.conf의 수정 사항을 최소화하기 위해 나만의 Distro를 만들어 줍니다.
conf/distro/rpi0-2w.confshell
이전에 local.conf에서 수정했던 LICENSE와 IMAGE_ROOTFS 사이즈를 설정하는 부분을 이제 여기에 추가할 수 있습니다.
3. Create conf Templates
처음 빌드 환경을 만들기 위해 oe-init-build-env 할 때 내가 원하는 templates를 사용하도록 할 수 있습니다.
기본으로 poky/meta-poky/conf/templates를 사용합니다.
이 부분도 수정할 수 있도록 하여 추가 작업을 최소화하겠습니다.
기존 meta-poky의 templates를 복사합니다.
Copy default templateshell
이제 내가 원하는 부분을 추가합니다.
레이어를 매번 수동으로 추가하는 번거로움을 줄이기 위해, 초기 설정 시 자동으로 포함되도록 구성했습니다.
conf/templates/default/bblayers.conf.samplediff
oe-init-build-env하면 나오는 메시지를 수정하여 빌드 가능한 타겟(target) 목록이 출력되도록 추가했습니다.
conf/templates/default/conf-notes.txtdiff
local.conf에 추가해야 하는 MACHINE과 DISTRO도 원하는 값으로 수정합니다.
conf/templates/default/local.conf.samplediff
4. Build Test
지금까지 수정한 것이 잘 동작하는지 확인해 보겠습니다.
기존의 build directory는 과감히 삭제하고, 내가 만든 conf templates를 사용하여 빌드를 구성하도록 해보겠습니다.
TEMPLATECONF 환경변수에 기존에 작성했던 templates의 경로를 지정하면 됩니다.
절대 경로를 사용하는 것을 추천합니다.
Create build env with TEMPLATECONFshell
conf-notes.txt를 수정한 내용이 정상적으로 출력되는 것을 확인할 수 있습니다.
conf/bblayers.confbash
conf/bblayers.conf에도 layer가 잘 추가되어 있습니다.
conf/local.confbash
conf/local.conf에도 원하는 MACHINE과 DSTIRO 값이 들어가 있습니다.
원하는 값이 기본으로 들어가기 때문에 바로 bitbake를 수행하여 이미지를 생성할 수 있습니다.
bash
5. Next Step
Yocto 레시피 커스터마이징을 위한 기본 기반이 마련되었습니다.
이후에는 제가 원하는 기능을 하나씩 추가해 보겠습니다.