이 글은 Yocto Project Quick Build
페이지를 번역하고 그 내용을 다듬어 작성한 것이다. 원문이 궁금하다면 아래의 출처
를 통해 그 내용을 확인하길 바란다. 이 짧은 글은 Yocto Project
를 통해 Linux
를 ARM64
아키텍쳐로 빌드한 후, QEMU
를 통해 실행하는 방법을 서술한다.
글을 쓰는 현 시점 기준(Aug 15, 21
) 으로 Yocto Project
는 아래의 배포판을 지원한다.
위 목록은 언제든지 바뀔 수 있으므로 공식 홈페이지를 통해 확인하길 바란다. WSL2
도 지원하긴 하지만 공식은 아니다.
50 Gbyte
이상의 디스크 여유 공간Git
버전 1.8.3.1
혹은 그 이상tar
버전 1.28
혹은 그 이상Python 3.6.0
혹은 그 이상gcc
버전 5.0
혹은 그 이상다음의 요구사항 역시 언제든 변할 수 있으므로 빌드 호스트 요구 사항 페이지를 확인하길 바란다.
공식 홈페이지 요구 사항에 쓰여있진 않지만, RAM
이 8 GiB
미만이면 커널 빌드 중 프로세스가 죽어버리므로 반드시 8 GiB
이상의 가상 메모리 사용이 가능한 호스트에서 빌드하길 바란다.
아래의 패키지는 빌드 호스트에 반드시 설치 되어야 한다:
sudo apt-get install gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3 xterm python3-subunit mesa-common-dev
패키지 매니저와 패키지명은 배포판마다 다를 수 있고, 시간이 지남에 따라 바뀔 수 있으므로 이 역시 공식 문서를 참조하길 바란다.
poky
저장소 복제하기git clone git://git.yoctoproject.org/poky
위 명령어를 입력해서 poky
저장소를 복제한다. 복제가 끝났다면 아래의 명령어를 입력하여 hardknott
브랜치로 갈아탄다. 현 시점으로 가장 최신 릴리즈는 hardknott
다. 자세한 사항은 릴리즈 정보를 확인하길 바란다.
git checkout -t origin/hardknott -b my-hardknott git pull
cd poky source oe-init-build-env
위 명령어를 입력하여 환경설정 스크립트를 실행한다. 그럼 Yocto Project
의 빌드 환경은 독자의 빌드 환경이 등록된다.
설정 파일은 build/conf/local.conf
이다. 이 파일을 통해 다양한 빌드 옵션 설정이 가능하다. 필자는 그 중에서 게스트 OS
의 아키텍쳐, 미러 서버 등록, 그리고 추가적인 패키지 설치를 설정할 것이다.
Guest OS
아키텍쳐 변경MACHINE ??= "qemuarm64"
MACHINE
을 검색해서 위와 같이 qemuarm64
로 변경한다. 필자는 ARM64
로 진행할 예정이지만, 다른걸로 바꿔도 괜찮다. 장치가 달라져도 Yocto Project
가 자동으로 크로스 컴파일해준다.
CORE_IMAGE_EXTRA_INSTALL += "strace" CORE_IMAGE_EXTRA_INSTALL += "gdb"
필자는 다음의 두 패키지를 추가로 설치할 것이다. 필요한 패키지가 있다면 필자가 작성한 것처럼, 더 적어 내려가면 된다.
gdb
패키지는 TUI
모드로 빌드된 패키지가 아니라서 layout
명령어를 사용할 수가 없다. 따라서 gdb
프로그램 빌드 시 layout
명령어가 사용 가능하도록 빌드 옵션을 변경할 것이다.
meta/recipes-devtools/gdb/gdb-common.inc
파일을 열어서 PACKAGECONFIG[tui]
옵션의 값을 다음과 같이 변경한다:
PACKAGECONFIG[tui] = "--enable-tui"
미러 서버는 패치 실패를 막아주고, 빌드 속도를 아주 약간 상승시킬 수 있다. 아래의 내용을 build/conf/local.conf
파일에 기입하면 된다:
SSTATE_MIRRORS = "\ file://.* http://sstate.yoctoproject.org/dev/PATH;downloadfilename=PATH \n \ file://.* http://sstate.yoctoproject.org/3.2.4/PATH;downloadfilename=PATH \n \ file://.* http://sstate.yoctoproject.org/3.3.2/PATH;downloadfilename=PATH \n \ "
미러 서버 주소는 언제든 바뀔 수 있으므로 공식 홈페이지를 확인하길 바란다.
빌드는 아래의 명령어를 입력하여 진행할 수 있다:
bitbake core-image-kernel-dev
core-image-kernel-dev
는 커널 스터디 용도로 사용 가능한 이미지라고 하는데 솔직히 무슨 차이가 있는지는 모르겠다. core-image-sato
의 경우 용량이 엄청 큰 GUI
환경을 제공하고 core-image-minimal
은 딱 부팅만 가능한 저용량 이미지이다. 자세한 정보는 Yocto Project
의 공식 이미지를 확인하길 바란다.
빌드에는 매우 매우 오랜 시간(대략 4 시간)이 걸리므로 다른 작업을 하길 바란다.
QEMU
실행하기빌드가 끝났다면 아래의 명령어를 입력하여 가상 환경에서 임베디드 리눅스를 실행해볼 수 있다:
runqemu qemuarm64 nographic
nographic
옵션이 들어가면 해당 콘솔창을 소유한 상태로 실행되고, 없다면 새로운 창이 하나 열리고 그 위에서 실행된다. CLI
환경에선 반드시 nographic
옵션으로 실행해야 한다.
정상적으로 실행 되었다면 아래와 같이 qemuarm64 login:
이 프롬프트된다. 사용자 명으로 root
를 입력하면 비밀번호 입력없이 바로 진입 가능하다.
[사이트] https://docs.yoctoproject.org/brief-yoctoprojectqs/index.html#welcome
[사이트] https://wavy00.blogspot.com/2016/11/yocto-qemu-arm-64bit.html
[사이트] http://git.yoctoproject.org/cgit.cgi/poky/tree/meta/recipes-devtools/gdb/gdb-common.inc?id=84c5aacaddb7174cc279efedf72c8aed0627437d
[이미지] https://www.slideshare.net/rossburton/why-you-should-use-the-yocto-project