一、yocto 编译raspberrypi 4B并启动

yocto 编译raspberrypi 4B并启动

本篇文章为基于raspberrypi 4B单板的yocto实战系列的开篇之作。

环境准备

最近到手一个树莓派4B,准备拿来玩一玩,下面记录下使用yocto构建RaspberryPi的镜像并刷写启动的过程。
首先准备主机编译环境,必要组件安装:

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 pylint3 xterm python3-subunit mesa-common-dev zstd liblz4-tool

https://github.com/agherzan/meta-raspberrypi这个layer支持多个分支,我们选择一个特定的分支(kirkstone)来进行开发,最好不要用太新的分支,可能会有适配问题。
在这里插入图片描述

代码下载

首先下载kirkstone 分支的poky源码:

git clone -b kirkstone https://gitlab.com/yoctoproject/poky.git poky-kirkstone

下载完成以后的产物:
在这里插入图片描述
然后进入poky-kirkstone文件夹执行如下指令下载kirkstone 分支的meta-raspberrypi:

git clone -b kirkstone https://github.com/agherzan/meta-raspberrypi.git meta-raspberrypi

下载完成以后的产物:
在这里插入图片描述

编译及配置

首先执行如下指令创建编译工作区:

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

执行完成以后会自动进入rpi-build文件夹下

  • 首先修改conf/bblayers.conf文件将刚才下载的meta-raspberrypi
    加入编译:
    在这里插入图片描述
  • 然后修改conf/local.conf修改编译的目标:
    修改MACHINE为raspberrypi4-64:
    在这里插入图片描述
    如果你使用的不是raspberrypi4B这块单板,根据自己的树莓派型号选择对应的machine即可。可选项为.conf之前的名字:
    在这里插入图片描述

在local.conf末尾添加一些自定义项:

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

开始编译:

bitbake core-image-base

此过程首次编译需要耗费多个小时,根据编译主机情况决定,而且需要连接外网,最好挂VPN。
等待编译完成以后编译镜像在如下路径:
rpi-build/tmp/deploy/images/下面的core-image-base-raspberrypi4-64-xxxxx-rootfs.rpi-sdimg
在这里插入图片描述

烧录

编译得到刷写的image以后将内存卡插入主机,确认好SD卡对应的快设备,例如我的是/dev/sda,使用dd指令刷机:

sudo dd if=/home/a/work/raspberry/rpi-build/tmp/deploy/images/raspberrypi4-64/core-image-base-raspberrypi4-64-20240313101906.rootfs.rpi-sdimg of=/dev/sda
sync

完成以后将内存卡插入树梅派,连接好串口,raspberrypi的默认串口是Pin 8(TX) 和Pin 10(RX), 波特率115200:
在这里插入图片描述

上电开机,可以看到串口打印如下启动日志:
在这里插入图片描述
启动完成需要输入登陆用户root即可进入系统:
在这里插入图片描述

这样就完成的整个流程,后续需要什么包只需要自己通过yocto定制即可。DONE

相关推荐

  1. Linux 创建个service设置开机启动

    2024-03-17 23:06:03       69 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-17 23:06:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-17 23:06:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-17 23:06:03       87 阅读
  4. Python语言-面向对象

    2024-03-17 23:06:03       97 阅读

热门阅读

  1. Git的一些基础命令

    2024-03-17 23:06:03       50 阅读
  2. DELETE、TRUNCATE 和 DROP 在MySQL中的区别及使用示例

    2024-03-17 23:06:03       40 阅读
  3. 【leetcode热题】比较版本号

    2024-03-17 23:06:03       41 阅读
  4. C#--StreamWriter和StreamReader对象及常用函数

    2024-03-17 23:06:03       39 阅读
  5. 【记录 | 字符串、搜索】单词接龙

    2024-03-17 23:06:03       42 阅读
  6. DDR3 APP接口代码

    2024-03-17 23:06:03       38 阅读
  7. AIGC赋能,天猫精灵、华米科技“抢跑”智能穿戴

    2024-03-17 23:06:03       40 阅读
  8. C语言经典面试题目(七)

    2024-03-17 23:06:03       41 阅读
  9. UDP协议

    UDP协议

    2024-03-17 23:06:03      43 阅读
  10. C语言如何引⽤⼆维数组元素?

    2024-03-17 23:06:03       47 阅读
  11. 24计算机考研调剂 | 南昌航空大学

    2024-03-17 23:06:03       45 阅读
  12. 什么是区块链,如何学习区块链

    2024-03-17 23:06:03       42 阅读
  13. 线程的通俗解释

    2024-03-17 23:06:03       43 阅读
  14. Jupyter Notebook 怎么在虚拟环境之间切换

    2024-03-17 23:06:03       40 阅读