devlinux
Trong bài viết này, chúng ta sẽ cùng tìm hiểu cách tạo một layer Yocto mới và xây dựng ứng dụng HelloWorld trong Yocto. Đây là một bài hướng dẫn cơ bản nhưng rất hữu ích, giúp bạn làm quen với cách tổ chức và quản lý layer cũng như cách tích hợp ứng dụng vào hệ thống Yocto.
Layers (meta-layers) là cách Yocto Project tổ chức và quản lý các thành phần của hệ điều hành. Mỗi layer chứa các recipe, patch, và cấu hình liên quan đến một bộ chức năng hoặc một loại phần cứng cụ thể. Điều này giúp chia nhỏ hệ thống và quản lý chúng một cách hiệu quả.
Đầu tiên, chúng ta cần thiết lập môi trường Yocto bằng cách chạy lệnh sau trong thư mục dự án Yocto (thư mục: poky):
source oe-init-build-env
Kết quả:
~/yocto/poky$ source oe-init-build-env
### Shell environment set up for builds. ###
You can now run 'bitbake <target>'
Common targets are:
core-image-minimal
core-image-sato
meta-toolchain
meta-ide-support
You can also run generated qemu images with a command like 'runqemu qemux86'
Sử dụng công cụ bitbake-layers để tạo layer mới:
~/yocto/poky/build$ bitbake-layers create-layer ../meta-devlinux
NOTE: Starting bitbake server...
Add your new layer with 'bitbake-layers add-layer ../meta-devlinux'
Điều này sẽ tạo một layer mới có tên là meta-devlinux, trong đó:
Thêm layer mới vào hệ thống
bitbake-layers add-layer ../meta-devlinux
Đi đến thư mục meta-devlinux trong môi trường Yocto của bạn. Tạo một thư mục mới cho ứng dụng:
cd meta-devlinux
mkdir -p recipes-apps/hello-world
Tiếp theo, tạo file hello-world.bb trong recipes-apps/hello-world:
DESCRIPTION = "Simple hello-world application"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
SRC_URI = "file://hello-world.c"
S = "${WORKDIR}"
do_compile() {
${CC} hello-world.c ${LDFLAGS} -o hello-world
}
do_install() {
install -d ${D}${bindir}
install -m 0755 hello-world ${D}${bindir}
}
Tạo file hello-world.c trong thư mục ./files/hello-world.c
#include <stdio.h>
int main() {
printf("Devlinux: hello world!\n");
return 0;
}
Mở file conf/local.conf trong thư mục build/conf và thêm ứng dụng vào danh sách các ứng dụng sẽ được xây dựng:
IMAGE_INSTALL_append = " hello-world"
Thay đổi biến để MACHINE xây dựng máy ảo QEMU cho kiến trúc ARM.
MACHINE ?= "qemux86-64"
Bây giờ chúng ta có thể xây dựng image với ứng dụng hello-world:
bitbake core-image-minimal
Sau khi quá trình xây dựng hoàn tất, bạn có thể bắt đầu chạy máy ảo QEMU.
runqemu qemux86-64 nographic
Đăng nhập sau đó chạy chương trình helloworld:
hello-world
Kết quả:
root@qemux86-64:~# hello-world
Devlinux: hello world!
Chúng ta đã tạo thành công một layer Yocto mới và xây dựng ứng dụng helloworld. Từ đó bạn có thể mở rộng và tùy chỉnh layer của mình để thêm nhiều ứng dụng và tính năng hơn.
devlinux
0 Bình luận