Stackoverflow 社区。我正在尝试设计一个 OTA 更新系统,并希望使用swupdate来更新树莓派。我发现关于如何实现它的信息非常有限。如果有人可以让我知道它是如何完成的,那就太好了。谢谢
1 回答
这是在树莓派上使用 SWUpdate 的 OTA 的一个很好的例子。 https://mkrak.org/2018/01/26/updating-embedded-linux-devices-part2/
我必须进行一些更改才能使用最新的 zeus 版本。以下是 ubuntu 18.04 上的分步命令。(截至 2020 年 3 月 22 日,这始终与 master 分支一起使用)
安装所有必需的依赖项。(下面的安装脚本来自https://medium.com/@shantanoodesai/run-docker-on-a-raspberry-pi-4-with-yocto-project-551d6b615c0b)
sudo apt-get update
sudo apt-get install \
gawk wget git-core diffstat unzip texinfo gcc-multilib \
build-essential chrpath socat cpio \
python python3 python3-pip python3-pexpect \
xz-utils debianutils iputils-ping \
python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev
克隆所有元层
mkdir yocto && cd yocto
mkdir layers && cd layers
git clone git://git.yoctoproject.org/poky -b zeus
git clone git://github.com/openembedded/meta-openembedded.git -b zeus
git clone https://github.com/agherzan/meta-raspberrypi.git -b zeus
git clone https://github.com/sbabic/meta-swupdate -b zeus
git clone https://github.com/sbabic/meta-swupdate-boards.git -b master
cd ..
. layers/poky/oe-init-build-env build
添加图层。如果失败,请手动修改 build/conf/bblayers.conf 以包含下面指定的所有层
bitbake-layers add-layer ../layers/meta-openembedded/meta-oe
bitbake-layers add-layer ../layers/meta-openembedded/meta-python
bitbake-layers add-layer ../layers/meta-openembedded/meta-networking
bitbake-layers add-layer ../layers/meta-openembedded/meta-multimedia
bitbake-layers add-layer ../layers/meta-raspberrypi
bitbake-layers add-layer ../layers/meta-swupdate
bitbake-layers add-layer ../layers/meta-swupdate-boards
将以下内容添加到 build/conf/local.conf (树莓派默认不使用 uboot bootloader。swupdate 需要 ext4.gz 映像。)
RPI_USE_U_BOOT = "1"
IMAGE_FSTYPES = "rpi-sdimg ext4.gz"
PREFERRED_PROVIDER_u-boot-fw-utils = "libubootenv"
现在终于烤好了。meta-swupdate-boards 包含一些硬件的示例。我能够复制 raspberrypi3 板实现以轻松支持 raspberrypi2。
MACHINE=raspberrypi3 bitbake update-image
这应该在 build/tmp/deploy/image/raspberrypi3/ 下创建 core-image-full-cmdline-raspberrypi3.rpi-sdimg 和 update-image-raspberrypi3.swu 文件。
让我们将 core-image-full-cmdline-raspberrypi3.rpi-sdimg 映像刻录到 sd 卡并使用 update-image-raspberrypi3.swu 更新它。
使用 Balena Etcher 等 UI 工具或通过命令行更新您的闪存。请注意目标文件系统/dev/disk2
可能不同。
sudo dd if=core-image-full-cmdline-raspberrypi3.rpi-sdimg of=/dev/disk2 bs=1m
一旦 pi 启动,转到 pi_ipaddress:8080。拖放 update-image-raspberrypi3.swu 以更新固件。