前言
因為在工作上會在RDK-B的框架下開發,而RDK-B的Build system就是用Yocto,終於最近比較有動力,就搭建一下環境及手邊樹梅派的板子,把這部份摸熟一點也記錄一下。
Yocto簡介
做嵌入式軟體開發應該都會常常聽到BuildRoot和Yocto,他們都是一種建立Embedded Linux distribution的build system,關於更多Yocto介紹可以到他們官網了解更多,這邊就不再贅述,接下來就是開始建置環境。
環境建置
首先需要在一台電腦上先安裝虛擬磯的環境,我是習慣用VMWare,接著就是開一個新的虛擬磯,大概的配置如下:
- CPU核心:8
- RAM:8G
- OS:20.04.6 LTS
- Storage: 120 GB
一切都就緒後,就可以開始安裝相依性的套件
相依套件安裝
在編譯Yocto之前需要以下的相依套件,更多細節可參考 https://docs.yoctoproject.org/brief-yoctoprojectqs/index.html
1 | $ sudo apt 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 python3-subunit mesa-common-dev zstd liblz4-tool file locales libacl1 |
配置及編譯
首先當然需要先下載Yocto source code,我們先建立一個資料夾,並透過git clone source code.
1 | mkdir my-rpi && cd my-rpi |
接著就是下載Raspberry Pi的meta層
1 | git clone -b kirkstone git://git.yoctoproject.org/meta-raspberrypi |
初始化yocto開發環境
1 | source poky/oe-init-build-env build-rpi |
加入剛剛下載的Raspberry Pi的meta層
1 | bitbake-layers add-layer ../meta-raspberrypi |
修改配置
1 | sed -i 's/^MACHINE.*/MACHINE ?= "raspberrypi3"/g' conf/local.conf |
編譯image
1 | bitbake core-image-minimal |
編譯完成後image大概會在下面的路徑
1 | /my-rpi/build-rpi/tmp/deploy/images/raspberrypi3/core-image-minimal-raspberrypi3.wic.bz2 |
他是一個symbollink實際上對應到像這樣檔名的image
1 | core-image-minimal-raspberrypi3-20231111193508.rootfs.wic.bz2 |
之後就可以透過balenaEtcher等工具燒錄image到SD卡
開機後的console畫面會像這樣
這樣就大功告成囉!