构建系统
硬件要求
- 主机系统
推荐使用 Ubuntu 或 Windows (WSL2)。
- 32GB 及以上内存
- 90GB 及以上可用硬盘空间
Yocto 项目
Yocto 项目支持的 Linux 发行版:参考链接
环境搭建
radxa@ROCK 4D$
sudo apt-get update
sudo apt-get install \
build-essential chrpath cpio debianutils diffstat file gawk gcc git \
iputils-ping libacl1 locales python3 python3-git \
python3-jinja2 python3-pexpect python3-pip python3-subunit socat \
texinfo unzip wget xz-utils zstd -y
# 安装 liblz4 相关工具(不同发行版包名可能不同)
# Ubuntu/Debian: liblz4-tool 或 liblz4-dev
# Fedora/RHEL: lz4 lz4-devel
# Arch Linux: lz4
if command -v apt &> /dev/null; then
sudo apt-get install liblz4-tool -y || sudo apt-get install liblz4-dev -y
elif command -v dnf &> /dev/null; then
sudo dnf install lz4 lz4-devel -y
elif command -v pacman &> /dev/null; then
sudo pacman -S lz4 --noconfirm
fi
# 安装 repo 工具
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
获取源码
radxa@ROCK 4D$
mkdir ~/yocto-rockchip-sdk && cd ~/yocto-rockchip-sdk
repo init -u https://github.com/radxa/yocto-manifests.git -b scarthgap
repo sync
链接配置文件
将 ROCK 4D 的配置文件链接到 local.conf。
radxa@ROCK 4D$
cd ~/yocto-rockchip-sdk/build/conf
ln -sf rockchip-<soc>-<board>.conf local.conf
ROCK 4D 链接示例:
ln -sf rockchip-rk3576-rock4d.conf local.conf
开始构建
radxa@ROCK 4D$
cd ~/yocto-rockchip-sdk
source ./oe-init-build-env
bitbake core-image-minimal
构建成功后,会在 ~/yocto-rockchip-sdk/build/tmp/deploy/images/ 目录下生成 ROCK 4D 对应的镜像文件。
ROCK 4D 构建示例:
-
core-image-minimal-rockchip-rk3576-rock-4d.rootfs.update.img -
core-image-minimal-rockchip-rk3576-rock-4d.rootfs.wic
其中 *.rootfs.update.img 文件为为 MicroSD 卡启动系统的镜像文件,*.rootfs.wic 文件为 eMMC 启动系统的镜像文件。
常见问题
缺少 en_US.UTF-8 语言环境
Please make sure locale 'en_US.UTF-8' is available on your system
若系统中没有 en_US.UTF-8,则需要按照下面步骤设置:
radxa@ROCK 4D$
sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
sudo echo "export LANG=en_US.UTF-8" >> ~/.bashrc
source ~/.bashrc
编译过程中系统崩溃
可以尝试设置 Yocto 构建系统的并行度,防止编译过程中系统崩溃。
在 ln -sf rockchip-rk3576-rock4d.conf local.conf 中添加以下配置:其中 BB_NUMBER_THREADS 为并行编译的线程数,PARALLEL_MAKE 为并行编译的 Make 参数,可以根据系统配置进行调整。
Ubuntu
BB_NUMBER_THREADS = "8"
PARALLEL_MAKE = "-j 8"
Weston 构建错误(缺少 PAM 特性)
在构建 Weston 时可能会遇到以下错误:
ERROR: weston-10.0.4-r0 do_configure: Function failed: do_configure
ERROR: Logfile of failure stored in: .../weston-10.0.4-r0/temp/log.do_configure.xxxx
ERROR: Task (.../recipes-graphics/wayland/weston_10.0.4.bb:do_configure) failed with exit code '1'
这通常是因为缺少 PAM(Pluggable Authentication Modules)支持。解决方法:
- 安装 PAM 开发包:
radxa@ROCK 4D$
# Ubuntu/Debian
sudo apt-get install libpam0g-dev -y
# Fedora/RHEL
sudo dnf install pam-devel -y
# Arch Linux
sudo pacman -S pam --noconfirm
- 在 local.conf 中添加配置:
在
local.conf文件中添加以下配置以启用 PAM 支持:
Ubuntu
# 启用 PAM 支持
DISTRO_FEATURES:append = " pam"
- 清理并重新构建:
radxa@ROCK 4D$
cd ~/yocto-rockchip-sdk
source ./oe-init-build-env
bitbake -c cleansstate weston
bitbake core-image-minimal