Image에 원하는 package를 추가하는 4가지 방법에 대해서 알아 보자.
1. local.conf 사용.
- local.conf IMAGE_INSTALL 혹은 IMAGE_INSTALL_append을 사용하는것은 페키지를 이미지에 추가하는 가장 쉬운 방법이나 확장성이 낮다. 예) IMAGE_INSTALL_append = " strace"
- 추가되는 페키지의 순서가 중요하지 않다면 IMAGE_INSTALL += " strace" 와 같이 사용해도 된다.
- 특정이미지에 한정시킬수도 있다. 예) IMAGE_INSTALL_append_pn-core-image-minimal = " strace"
strace를 이미지에 추가.
주의!. 반드시 추가하고자 하는 페키지 이전에 공백 1칸이 추가되어야 한다.
core-image-minimal에만 한정적으로 strace가 추가
2. IMAGE_FEATURES and EXTRA_IMAGE_FEATURES 이용.
- 이미 존재하는 이미지에 추가로 페키지를 추가 할때 유용한 방법으로 IMAGE_FEATURES 와 EXTRA_IMAGE_FEATURES 이용. 둘의 차이는 거의 없으나 사용 구분을 위해 recipes에서는 IMAGE_FEATURES를, local.conf에서는 EXTRA_IMAGE_FEATURES를 사용.
- meta/classes/core-image.bbclass에 가능한 IMAGE_FEATURES 목록있으니 참고하여 추가.
- 테스트 : Dropbear SSH server를 core-image-minimal에 추가하자. - core-image-minimal에는 기본으로 ssh server가 들어있지 않음.
- meta/recipes-core/images/core-image-minimal.bb 아래에 한줄추가.
IMAGE_FEATURES += "ssh-server-dropbear"
- $ bitbake core-image-minimal 이후 qemu 실행. 실행시 SSH server 자동실행됨 확인 및 ps으로 확인.
- custom recipe를 생성했을경우 image폴더의 .bb파일에 INSTALL_IMAGE로 추가할 페키지를 정의할수 있음.
- 테스트 : core-image-minimal에 strace추가.
- meta/recipes-core/images/core-image-minimal.bb 아래에 한줄추가. IMAGE_INSTALL += "strace"
- $ bitbake core-image-minimal 이후 qemu 실행. qemu에서 strace 실행 확인.
- 복잡한 custom image에서는 group recipe를 생성해서 원하는 package들을 한번에 관리하는것이 편리하다.;
- .meta/recipes-core/packagegroups/packagegroup-base.bb이 좋은 example로서 PACKAGES에 group package목록들이 있고 RDEPENDS와 RRECOMMENDS에서 각 group에 대한 package들을 열거하고 있다. IMAGE_INSTALL += "strace"
- 아래는 간단한 group recipe 예제
DESCRIPTION = "My Custom
Package Groups"
inherit packagegroup
PACKAGES = "\
packagegroup-custom-apps \
packagegroup-custom-tools \
"
packagegroup-custom-apps \
packagegroup-custom-tools \
"
RDEPENDS_packagegroup-custom-apps
= "\
dropbear \
portmap \
psplash"
dropbear \
portmap \
psplash"
RDEPENDS_packagegroup-custom-tools
= "\
oprofile \
oprofileui-server \
lttng-tools"
oprofile \
oprofileui-server \
lttng-tools"
RRECOMMENDS_packagegroup-custom-tools
= "\
kernel-module-oprofile"
kernel-module-oprofile"
-
위의 예제의 packagegroup-custom-app와 packagegroup-custom-tools를 IMAGE_INSTALL에 추가하여 관련 package들을 한번에 추가한다.