三、Yocto创建自定义的layer和image(基于raspberrypi 4B)

本文介绍了如何在Yocto中创建自定义layer和image,以便更好地管理RaspberryPi4B的软件包和ROS2集成。作者指导读者如何创建meta-rpi-robot层,添加必要的组件和配置,以及编译自定义image。
摘要由CSDN通过智能技术生成

yocto创建自定义的layer和image

本篇文章为基于raspberrypi 4B单板的yocto实战系列的第三篇文章,建议按顺序阅读:
一、yocto 编译raspberrypi 4B并启动
二、yocto 集成ros2(基于raspberrypi 4B)

背景介绍

在前面2篇实战系列文章中我们在yocto中集成了ros机器人操作系统,并且在image中安装了一些特定的包和组件:

############################ 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"
 
## add ros package
IMAGE_INSTALL:append = " ros-core turtlesim "

## 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 ########################################

有个问题,如果后续我们调整了代码的位置,或者需要分享我的工程给别人,每次都需要这么繁琐的操作么,而且local.conf和bblayers.conf文件是自动生成的,怎么能够保证我的修改不丢失呢,这里就到了本章的重点内容,我们可以创建属于我们自己的meta layer,这样以后就可以像添加meta-qt5和meta-ros一样方便,话不多说,直接开始我们的改造工程。

创建layer

如果切换终端或者开关机后请记得执行初始化的指令哦:

source poky-kirkstone/oe-init-build-env rpi-build

进入到poky-kirkstone文件夹下执行如下命令创建我们的layer :meta-rpi-robot

bitbake-layers create-layer meta-rpi-robot

可以看到自动创建了meta-rpi-robot文件夹,并且自动生成了几个文件:
在这里插入图片描述

可以看到自动生成了一个conf/layer.conf,里面内容如下:
在这里插入图片描述
关于里面的具体变量的含义我们暂时不做详细介绍,先学会用后续在学原理和详细内容.
我们修改一下里面的几个变量:

# 设置layer的优先级到10,数字越大优先级越低
BBFILE_PRIORITY_meta-rpi-robot = "10" 

# 设置我们layer的依赖layer,我们暂时依赖meta-qt5 和 meta-ros
LAYERDEPENDS_meta-rpi-robot = "qt5-layer \
                        ros2-humble-layer \
                "

添加image bb文件

在我们的meta-rpi-robot文件下面创建一个recipes-core/images文件夹,并在recipes-core/images文件夹下面创建一个rpi-robot-image.bb文件

mkdir -p recipes-core/images
touch recipes-core/images/rpi-robot-image.bb

将如下内容添加到rpi-robot-image.bb文件中:

DESCRIPTION = "core-image-base for rpi robot"
LICENSE = "MIT"

#require recipes-core/images/core-image-base.bb
inherit core-image

IMAGE_FSTYPES = "ext4.xz rpi-sdimg"
SDIMG_ROOTFS_TYPE="ext4.xz"

# enable uart
ENABLE_UART="1"

IMAGE_FEATURES += "ssh-server-openssh"

IMAGE_INSTALL +=" \
	openssh-sftp-server \
	sudo \
	python3 \
	python3-pip \
	rpi-gpio \
	raspi-gpio \
	ros-core \
	turtlesim \
"

# systemd settings
DISTRO_FEATURES:append = " systemd"
VIRTUAL-RUNTIME_init_manager = "systemd"
DISTRO_FEATURES_BACKFILL_CONSIDERED:append = " sysvinit"
VIRTUAL-RUNTIME_initscripts = "systemd-compat-units"

下面还需要将创建的layer添加到我们的构建系统:
在这里插入图片描述

编译

上面的步骤创建完成以后我们就可以把原来local.conf里面我们添加的那一段Add by tao的内容全部删除啦,后面我们编译就可以使用如下命令来编译我们自定义的image了:

bitbake rpi-robot-image

可以看到在tmp/deploy/images/raspberrypi4-64/文件夹下面有了我们自己的rpi-robot-image的镜像啦,至此开启我们系统定制的第一步!
在这里插入图片描述
后续meta-rpi-robot的所有系统定制都将提交到这个gtihub仓库上,欢迎一起创作rpi-robot!
meta-rpi-robot

  • 14
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值