1. 环境准备:使用 Ubuntu 22.04 编译,安装必要组件
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 pylint xterm python3-subunit mesa-common-dev zstd liblz4-tool
2. 代码下载
首先下载 kirkstone 分支的 Poky 源码:
git clone -b kirkstone https://gitlab.com/yoctoproject/poky.git poky-kirkstone

然后进入 poky-kirkstone 文件夹,下载 kirkstone 分支的 meta-raspberrypi:
cd poky-kirkstone
git clone -b kirkstone https://github.com/agherzan/meta-raspberrypi.git meta-raspberrypi
3. 编译及配置
3.1 创建编译工作区
source poky-kirkstone/oe-init-build-env rpi-build
3.2 修改 conf/bblayers.conf 文件
将下载的 meta-raspberrypi 层加入编译:
cd rpi-build/conf
vi bblayers.conf

在文件中添加以下内容:
BBLAYERS ?= " \
/home/linux/yocto/poky-kirkstone/meta \
/home/linux/yocto/poky-kirkstone/meta-poky \
/home/linux/yocto/poky-kirkstone/meta-yocto-bsp \
/home/linux/yocto/poky-kirkstone/meta-raspberrypi \
"
3.3 修改 conf/local.conf 文件
修改 MACHINE 为 raspberrypi4-64:
vi local.conf

找到并修改以下行:
MACHINE ??= "raspberrypi4-64"

在文件末尾添加自定义配置项:
############# Add by tao #######################################
IMAGE_FSTYPES = "ext4.xz rpi-sdimg"
SDIMG_ROOTFS_TYPE = "ext4.xz"
## enable uart
ENABLE_UART = "1"
## packages
IMAGE_INSTALL:append = " openssh-sftp-server sudo python3 python3-pip rpi-gpio raspi-gpio"
IMAGE_FEATURES:append = " ssh-server-openssh"
## systemd settings
DISTRO_FEATURES:append = " systemd"
VIRTUAL-RUNTIME_init_manager = "systemd"
DISTRO_FEATURES_BACKFILL_CONSIDERED:append = " sysvinit"
VIRTUAL-RUNTIME_initscripts = "systemd-compat-units"
############# End by tao ########################################
3.4 配置国内镜像源(可选,用于加速下载)
在 local.conf 末尾添加以下内容:
============================
国内网络专属:下载加速配置
============================
1. 优先使用清华大学 TUNA 镜像站 (涵盖了 Git 和常规压缩包)
PREMIRRORS:prepend = "\
git://.*/.* https://mirrors.tuna.tsinghua.edu.cn/git/ \n \
https?://.*/.* https://mirrors.tuna.tsinghua.edu.cn/yocto/ \n \
git://github.com/ https://ghproxy.com/https://github.com/ \n \
"
2. 如果清华镜像偶尔抽风,备用北京外国语大学 BFSU 镜像
PREMIRRORS:append = "\
git://.*/.* https://mirrors.bfsu.edu.cn/git/ \n \
https?://.*/.* https://mirrors.bfsu.edu.cn/yocto/ \n \
"
3. 针对 wget 下载的调优(增加重试次数,忽略证书校验)
FETCHCMD_wget = "/usr/bin/wget -t 10 --passive-ftp --no-check-certificate"
4. 针对 Git 的调优(增加深度限制和超时)
GIT_CLONE_PARAMS = "--depth 1 --no-single-branch"
FETCHCMD_git = "/usr/bin/git -c core.fsyncobjectfiles=0 -c gc.autoDetach=false -c core.pager=cat"
4. 开始编译
配置完成后,使用 bitbake 命令开始编译:
bitbake core-image-base

编译成功后,镜像文件位于以下目录:
~/yocto/rpi-build/tmp/deploy/images/raspberrypi4-64/

5. 使用串口登录树莓派 4B 开发板
通过串口工具(如 PuTTY)登录树莓派,登录信息如下:
raspberrypi4-64 login: root
root@raspberrypi4-64:~#




