Bắt đầu series về build bủng bằng Yocto thôi, bài đầu sẽ về build cho Beaglebone Black.
(Nếu các bạn gặp khó khăn trong quá trình thực hành theo blog, các bạn có thể tham khảo video thực hành của mình ở cuối bài )

- 1. Chuẩn bị bên máy host (Máy để build)
- 2. Clone source code
- 3. Setup và build
- 3.2 Thay đổi conf file
- 3.3 Build thôi
- 4. Flash image SD card
1. Chuẩn bị bên máy host (Máy để build)
Ở đây máy mình cài Ubuntu 22.04.5 LTS (Jammy Jellyfish). Mình cài dual boot với windows để tối ưu core
Dựa theo hướng dẫn bên Yocto Project Reference Manual , mục 1.3.2.1. Ta cài các package sau
sudo apt-get -y install gawk wget git-core diffstat unzip texinfo gcc-multilib \
build-essential chrpath socat cpio python3 python3-pip python3-pexpect \
libsdl1.2-dev xterm make xsltproc docbook-utils fop dblatex xmlto
2. Clone source code
Chúng ta dùng bản poky là 1 repo mẫu từ bên Yocto Project (reference repo) với phiên bản Scarthgap 5.0.
git clone -b kirkstone git://git.yoctoproject.org/poky/
cd poky
git clone -b kirkstone git://git.openembedded.org/meta-openembedded
git clone -b kirkstone git://git.yoctoproject.org/meta-ti
git clone -b kirkstone https://git.yoctoproject.org/meta-arm
3. Setup và build
3.1. Tạo môi trường build
source oe-init-build-env build-bbb
Câu lệnh này sẽ
- Set $OEROOT : Xác định thư mục gốc của yocto
- Set $PATH : Thêm bitbake vào path của session terminal, giống kiểu thêm vào biến môi trường ở Windows
- Set $BUILDDIR : Chọn thư mục output ./build-bbb (default sẽ là build, nhưng nếu chạy cho nhiều board thì nên chia riêng)
- Set $BBPATH : Để bitbake tìm thấy các layer
- Tạo cấu trúc thư mục $BUILDDIR

3.2 Thay đổi conf file
Thông thường ta sẽ thay đổi config file của môi trường build, bằng các layer, tuy nhiên ở đây để đơn giản mình sẽ thay đổi trong local.conf
nano ./build-bbb/conf/local.conf
Ta thay đổi MACHINE ?= “beaglebone”
nano ./build-bbb/conf/bblayers.conf
Ta add thêm các meta-openembedded, meta-arm, meta-ti, để có thêm các tính năng sẽ dùng sau
POKY_BBLAYERS_CONF_VERSION = "2"
BBPATH = "${TOPDIR}"
BBFILES ?= ""
BBLAYERS ?= " \
/home/zk47/Learning/poky/meta \
/home/zk47/Learning/poky/meta-poky \
/home/zk47/Learning/poky/meta-yocto-bsp \
/home/zk47/Learning/poky/meta-openembedded/meta-oe \
/home/zk47/Learning/poky/meta-arm/meta-arm-toolchain \
/home/zk47/Learning/poky/meta-arm/meta-arm \
/home/zk47/Learning/poky/meta-ti/meta-ti-bsp \
/home/zk47/Learning/poky/meta-ti/meta-ti-extras \
"
Lưu ý đường dẫn trong BBLAYERS là đường dẫn tuyệt đối tới các meta-layers, do đó sẽ tùy theo máy.
3.3 Build thôi
bitbake core-image-minimal
Ở đây mình chọn image này vì đúng như tên gọi, nó là cái tinh giản nhất, đúng chỉ là lên được OS, số lượng package rất it, nên build nhanh.
Mình dùng laptop chip 13700H, 14 core 20 luồng. Thời gian build rơi vào tầm hơn 1 tiếng

4. Flash image SD card
4.1 Check image
Sau khi build xong nếu các bạn không biết output ở đâu có thể check bằng câu lệnh
bitbake -e core-image-minimal | grep ^WORKDIR=
- bitbake -e <recipe> : Liệt kê environment hay các biến được set trong 1 recipe
- grep ^WORKDIR= : tìm các dòng bắt đầu bằng “WORKDIR=”
Output của câu lệnh sẽ dạng
zk47@zk47-ltu:~/Learning/poky/build-bbb$ bitbake -e core-image-minimal | grep ^WORKDIR=
WORKDIR="/home/zk47/Learning/poky/build-bbb/tmp/work/beaglebone-oe-linux-gnueabi/core-image-minimal/1.0-r0"
Các bạn vào được thư mục đó rồi mở tiếp folder deploy image sau cùng
cd /home/zk47/Learning/poky/build-bbb/tmp/work/beaglebone-oe-linux-gnueabi/core-image-minimal/1.0-r0
cd deploy-core-image-minimal-image-complete
4.2 Copy image sang sd card
Trong thư mục này sẽ có rất nhiều image

Nhưng để cho nhanh mình sẽ dùng image .wic.xz (tối ưu việc copy hơn do có bmap)
Các bạn cắm sd card vào, nếu đã có phân vùng được mount thì nhớ unmount trước, check bằng câu lệnh lsblk

Như ở đây thẻ nhớ mình đang nhận ở /dev/mmcblk0 và có 2 phân vùng đã được mount do đó ta cần umount nó trước
sudo umount /media/zk47/boot /media/zk47/root
Sau đó ta copy sử dụng bmaptool
sudo bmaptool copy core-image-minimal-beaglebone.wic.xz /dev/mmcblk0
Và thế là xong, ta đã build thành công và flash vào thẻ nhớ. Giờ ta cắm thẻ nhớ vào BBB và test thôi
Lưu ý giữ button S2 (boot button) để BBB nhận boot từ MMC1 là thẻ nhớ, nếu không giữ button S2 BBB sẽ boot từ MMC2 là eMMC.

–> Chúng ta sẽ đăng nhập bằng user root, không có mật khẩu

–> [Yocto-BBB] 2. UART Debug Board và Bitbake Append
Gửi phản hồi cho [Yocto-BBB] 2. UART Debug Board và Bitbake Append – Embedded Linux A-Z Hủy trả lời