Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux...
Transcript of Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux...
![Page 1: Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux development U-boot and Linux kernel development Yocto/Buildroot mirza.krak@northern.tech](https://reader034.fdocuments.in/reader034/viewer/2022050205/5f5810bc3a7dd5227e31b3a3/html5/thumbnails/1.jpg)
Mirza KrakEmbedded Solutions Architect
Mender.io
Strategies for developing and deploying your embedded applications and images
![Page 2: Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux development U-boot and Linux kernel development Yocto/Buildroot mirza.krak@northern.tech](https://reader034.fdocuments.in/reader034/viewer/2022050205/5f5810bc3a7dd5227e31b3a3/html5/thumbnails/2.jpg)
● Development workflow● Application● Embedded systems● What tools are available
Scope
![Page 3: Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux development U-boot and Linux kernel development Yocto/Buildroot mirza.krak@northern.tech](https://reader034.fdocuments.in/reader034/viewer/2022050205/5f5810bc3a7dd5227e31b3a3/html5/thumbnails/3.jpg)
● Desktop environment● Embedded environment● Development workflow (simple)
○ Package managers○ Yocto/OE-core Package Management
● Development workflow (advanced)○ Network boot○ OTA updater as developer tool
Session overview
![Page 4: Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux development U-boot and Linux kernel development Yocto/Buildroot mirza.krak@northern.tech](https://reader034.fdocuments.in/reader034/viewer/2022050205/5f5810bc3a7dd5227e31b3a3/html5/thumbnails/4.jpg)
● Mirza Krak
○ 7 years in Embedded Linux development
○ U-boot and Linux kernel development
○ Yocto/Buildroot
About me
● mender.io
○ Over-the-air updater for Embedded Linux
○ Open source (Apache License, v2)
○ Dual A/B rootfs layout (client)
○ Remote deployment management (server)
○ Under active development
![Page 5: Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux development U-boot and Linux kernel development Yocto/Buildroot mirza.krak@northern.tech](https://reader034.fdocuments.in/reader034/viewer/2022050205/5f5810bc3a7dd5227e31b3a3/html5/thumbnails/5.jpg)
● High availability○ “apt-get install”○ trace and debug tools
● Same machine ○ Build, Run, Test
● Short cycles● Keep development here
○ “Mock” hardware● Be aware
Desktop environment
![Page 6: Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux development U-boot and Linux kernel development Yocto/Buildroot mirza.krak@northern.tech](https://reader034.fdocuments.in/reader034/viewer/2022050205/5f5810bc3a7dd5227e31b3a3/html5/thumbnails/6.jpg)
● Possible● Armbian/Ubuntu/Raspbian● Drawbacks
○ slow compile times○ slow in general compared to PC○ IDE, favorite editors○ Not really viable in the long run
Desktop environment on embedded
![Page 7: Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux development U-boot and Linux kernel development Yocto/Buildroot mirza.krak@northern.tech](https://reader034.fdocuments.in/reader034/viewer/2022050205/5f5810bc3a7dd5227e31b3a3/html5/thumbnails/7.jpg)
● Cross-compile● Accepted approach● Introduces complexity● Multiple devices
Cross device development
![Page 8: Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux development U-boot and Linux kernel development Yocto/Buildroot mirza.krak@northern.tech](https://reader034.fdocuments.in/reader034/viewer/2022050205/5f5810bc3a7dd5227e31b3a3/html5/thumbnails/8.jpg)
● Entry point● Transfer files
○ Manual work○ Error prone○ Hard to replicate across
many devices
Transfer files
scp application root@device:/usr/bin
tftp -g -r application hostname
scp *.conf root@device:/etc
![Page 9: Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux development U-boot and Linux kernel development Yocto/Buildroot mirza.krak@northern.tech](https://reader034.fdocuments.in/reader034/viewer/2022050205/5f5810bc3a7dd5227e31b3a3/html5/thumbnails/9.jpg)
● Eclipse, Qt Creator..○ Cross-compile○ Post-build hooks
Transfer files - IDE
![Page 10: Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux development U-boot and Linux kernel development Yocto/Buildroot mirza.krak@northern.tech](https://reader034.fdocuments.in/reader034/viewer/2022050205/5f5810bc3a7dd5227e31b3a3/html5/thumbnails/10.jpg)
● Package Manager○ A collection of the software tools for automating the process of
installing, upgrading, configuring and removing packages● On target package managers
○ opkg, deb, rpm● Common package management utilities/systems
○ apt, yum, dnf, pacman, zypper, smart
Package managers
![Page 11: Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux development U-boot and Linux kernel development Yocto/Buildroot mirza.krak@northern.tech](https://reader034.fdocuments.in/reader034/viewer/2022050205/5f5810bc3a7dd5227e31b3a3/html5/thumbnails/11.jpg)
● Package application + additional files○ “make dpkg”
● More control● More sanity checks
○ Dependency tracking○ Upstream package feeds○ Custom package feeds
● Useful during development○ especially early phase of projects○ Utilities (strace, evtest, tcpdump, iperf)
● Not always available
Package managers
![Page 12: Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux development U-boot and Linux kernel development Yocto/Buildroot mirza.krak@northern.tech](https://reader034.fdocuments.in/reader034/viewer/2022050205/5f5810bc3a7dd5227e31b3a3/html5/thumbnails/12.jpg)
Package managers comparison
deb rpm ipkg opkg
File format .deb .rpm .ipk .ipk
License GPL GPL GPL v2 GPL v2
Development status
active active discontinued active
Yocto/OE support
yes yes no yes
Package installation
dpkg -i file.deb rpm -i file.rpm ipkg install file.ipk opkg install file.ipk
Build time (Yocto image)
~226 minutes ~251 minutes ~209 minutes
![Page 13: Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux development U-boot and Linux kernel development Yocto/Buildroot mirza.krak@northern.tech](https://reader034.fdocuments.in/reader034/viewer/2022050205/5f5810bc3a7dd5227e31b3a3/html5/thumbnails/13.jpg)
● The Angstrom Distribution○ maintains opkg package feeds○ meta-angstrom
■ angstrom-v2018.06-sumo○ DISTRO = “angstrom”
OE-core + Package managers
“opkg update && opkg install vim”
![Page 14: Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux development U-boot and Linux kernel development Yocto/Buildroot mirza.krak@northern.tech](https://reader034.fdocuments.in/reader034/viewer/2022050205/5f5810bc3a7dd5227e31b3a3/html5/thumbnails/14.jpg)
● Yocto/OE-core generates packages (rpm, deb, ipk)○ PACKAGE_CLASSES ?= "package_ipk"○ build/tmp/deploy/ipk/
● Easy to convert to a custom package feed○ “bitbake package-index”
● Serve the feed on the network○ “python -m SimpleHTTPServer 8000”
Yocto/OE-core + Package managers
![Page 15: Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux development U-boot and Linux kernel development Yocto/Buildroot mirza.krak@northern.tech](https://reader034.fdocuments.in/reader034/viewer/2022050205/5f5810bc3a7dd5227e31b3a3/html5/thumbnails/15.jpg)
● Tools on target○ EXTRA_IMAGE_FEATURES += " package-management "
● Configuration on target○ meta-openembedded/meta-oe ○ distro-feed-configs.bb
● DISTRO_FEED_PREFIX● DISTRO_FEED_URI● DISTRO_FEED_ARCHS
Yocto + Package managers
![Page 16: Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux development U-boot and Linux kernel development Yocto/Buildroot mirza.krak@northern.tech](https://reader034.fdocuments.in/reader034/viewer/2022050205/5f5810bc3a7dd5227e31b3a3/html5/thumbnails/16.jpg)
.
└── etc
└── opkg
├── all-feed.conf
├── core2-64-feed.conf
├── corei7-64-feed.conf
├── corei7-64-intel-common-feed.conf
├── intel_corei7_64-feed.conf
└── x86_64-feed.conf
$ cat etc/opkg/core2-64-feed.conf
src/gz remote-core2-64 http://my-distribution.example/remote-feed//core2-64
Yocto + Package managers
![Page 17: Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux development U-boot and Linux kernel development Yocto/Buildroot mirza.krak@northern.tech](https://reader034.fdocuments.in/reader034/viewer/2022050205/5f5810bc3a7dd5227e31b3a3/html5/thumbnails/17.jpg)
● Workflow○ make changes○ rebuild package index○ “opkg update && opkg install” on device
● “bitbake world -k”
Yocto + Package managers
![Page 18: Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux development U-boot and Linux kernel development Yocto/Buildroot mirza.krak@northern.tech](https://reader034.fdocuments.in/reader034/viewer/2022050205/5f5810bc3a7dd5227e31b3a3/html5/thumbnails/18.jpg)
● Configuration management tool○ A tool used for populating and enforcing host
configuration (adding/removing/updating software, adding/removing users, changing files permissions, …)
● Tools available○ CFEngine, Puppet, Chef, Ansible
● Configuration strategy○ Install the “golden image” on the device○ Install a CM server and create a set of rules for
managing/changing the device configuration○ Setup connectivity and trust between CM server and
the device○ Change the device configuration using the CM agent
Configuration management tools
![Page 19: Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux development U-boot and Linux kernel development Yocto/Buildroot mirza.krak@northern.tech](https://reader034.fdocuments.in/reader034/viewer/2022050205/5f5810bc3a7dd5227e31b3a3/html5/thumbnails/19.jpg)
● Custom kernel options● Customer configuration options on system applications
○ systemd, busybox, network manager● Custom hardware
Scope bigger than a single binary
![Page 20: Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux development U-boot and Linux kernel development Yocto/Buildroot mirza.krak@northern.tech](https://reader034.fdocuments.in/reader034/viewer/2022050205/5f5810bc3a7dd5227e31b3a3/html5/thumbnails/20.jpg)
● All resources are available on the network● Some complexity involved in the setup● Requires reboot on the target device to load new software● Can be easily extended to multiple devices● Common in CI/CD
Network boot
![Page 21: Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux development U-boot and Linux kernel development Yocto/Buildroot mirza.krak@northern.tech](https://reader034.fdocuments.in/reader034/viewer/2022050205/5f5810bc3a7dd5227e31b3a3/html5/thumbnails/21.jpg)
● PXELINUX● tftp / pxe
○ Kernel (uImage) and dtb○ initrd
Network boot
------------/tftpboot/pxelinux.cfg/menus/linux.list----------
menu title Linux selections
# Just another label
label linux-2.6.38
kernel kernels/linux-2.6.38.bin
append root=/dev/sdb1
![Page 22: Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux development U-boot and Linux kernel development Yocto/Buildroot mirza.krak@northern.tech](https://reader034.fdocuments.in/reader034/viewer/2022050205/5f5810bc3a7dd5227e31b3a3/html5/thumbnails/22.jpg)
● Script it● NFS root file-system● tftp/tftpboot
Network boot
setenv ipaddr 192.168.1.3
setenv serverip 192.168.1.2
setenv bootargs 'ignore_loglevel rw root=/dev/nfs nfsroot=192.168.1.2:/nfs/h3ulcb,nfsvers=3 ip=192.168.1.3:192.168.1.2::255.255.255.0:h3ulcb'
tftp 0x48080000 Image; tftp 0x48000000 Image-r8a7795-h3ulcb.dtb; booti 0x48080000 - 0x48000000
https://elinux.org/R-Car/Boards/Yocto-Gen3
![Page 23: Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux development U-boot and Linux kernel development Yocto/Buildroot mirza.krak@northern.tech](https://reader034.fdocuments.in/reader034/viewer/2022050205/5f5810bc3a7dd5227e31b3a3/html5/thumbnails/23.jpg)
● Can be used as a development tool○ mender, rauc, swupdate...
● Integrate early in the development cycle● Many benefits
○ Similar to production○ Validation of the update solution○ Image based update
■ Simplifies testing■ Stateless■ Avoid bricking devices
Update solutions
![Page 24: Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux development U-boot and Linux kernel development Yocto/Buildroot mirza.krak@northern.tech](https://reader034.fdocuments.in/reader034/viewer/2022050205/5f5810bc3a7dd5227e31b3a3/html5/thumbnails/24.jpg)
● Fits well into the developer workflow○ Easy integration with CI/CD systems
Update solutions
![Page 25: Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux development U-boot and Linux kernel development Yocto/Buildroot mirza.krak@northern.tech](https://reader034.fdocuments.in/reader034/viewer/2022050205/5f5810bc3a7dd5227e31b3a3/html5/thumbnails/25.jpg)
● Mender○ A/B image updates
● Standalone mode○ CLI○ Supports fetching updates via network
● OTA updates○ Can be integrated with CI/CD
OTA updater
mender -rootfs http://192.168.1.10/core-image-base.mender
![Page 26: Strategies for developing and deploying your embedded ... · Mirza Krak 7 years in Embedded Linux development U-boot and Linux kernel development Yocto/Buildroot mirza.krak@northern.tech](https://reader034.fdocuments.in/reader034/viewer/2022050205/5f5810bc3a7dd5227e31b3a3/html5/thumbnails/26.jpg)
Thank you
Questions?