Blade3 - running docker with the release linux image

I spent some time trying out different linux images on the blade3, and the one that seems to work best with the board is the one distributed by mixtile (image-release-blade3-debian11-20230505.img). Other images had issues with pci-e, usb-pd and case fan.
The issue is that the kernel in this image is missing many features that are required by some applications (like Docker).
I’ve compiled a custom kernel with the features I need using part of this guide:

But the kernel installation fails.

root@blade3:/home/mixtile/linux# make install
sh ./arch/arm64/boot/install.sh 5.10.66 \
arch/arm64/boot/Image System.map "/boot"
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 5.10.66 /boot/vmlinuz-5.10.66
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 5.10.66 /boot/vmlinuz-5.10.66
update-initramfs: Generating /boot/initrd.img-5.10.66
find: ‘/var/tmp/mkinitramfs_ITlX2e/lib/modules/5.10.66/kernel’: No such file or directory
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8125b-2.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8125a-3.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8107e-2.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8107e-1.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168fp-3.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168h-2.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168h-1.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168g-3.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168g-2.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8106e-2.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8106e-1.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8411-2.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8411-1.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8402-1.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168f-2.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168f-1.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8105e-1.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168e-3.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168e-2.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168e-1.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168d-2.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168d-1.fw for built-in driver r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8153b-2.fw for built-in driver r8152
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8153a-4.fw for built-in driver r8152
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8153a-3.fw for built-in driver r8152
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8153a-2.fw for built-in driver r8152
W: Possible missing firmware /lib/firmware/keyspan/usa49wlc.fw for built-in driver keyspan
W: Possible missing firmware /lib/firmware/keyspan/usa49w.fw for built-in driver keyspan
W: Possible missing firmware /lib/firmware/keyspan/usa19w.fw for built-in driver keyspan
W: Possible missing firmware /lib/firmware/keyspan/usa18x.fw for built-in driver keyspan
W: Possible missing firmware /lib/firmware/keyspan/usa19qw.fw for built-in driver keyspan
W: Possible missing firmware /lib/firmware/keyspan/mpr.fw for built-in driver keyspan
W: Possible missing firmware /lib/firmware/keyspan/usa19qi.fw for built-in driver keyspan
W: Possible missing firmware /lib/firmware/keyspan/usa19.fw for built-in driver keyspan
W: Possible missing firmware /lib/firmware/keyspan/usa28xb.fw for built-in driver keyspan
W: Possible missing firmware /lib/firmware/keyspan/usa28xa.fw for built-in driver keyspan
W: Possible missing firmware /lib/firmware/keyspan/usa28x.fw for built-in driver keyspan
W: Possible missing firmware /lib/firmware/keyspan/usa28.fw for built-in driver keyspan
W: Possible missing firmware /lib/firmware/bfubase.frm for built-in driver bfusb
W: Possible missing firmware /lib/firmware/mediatek/mt7668pr2h.bin for built-in driver btusb
W: Possible missing firmware /lib/firmware/mediatek/mt7663pr2h.bin for built-in driver btusb
W: Possible missing firmware /lib/firmware/intel/ibt-12-16.ddc for built-in driver btintel
W: Possible missing firmware /lib/firmware/intel/ibt-12-16.sfi for built-in driver btintel
W: Possible missing firmware /lib/firmware/intel/ibt-11-5.ddc for built-in driver btintel
W: Possible missing firmware /lib/firmware/intel/ibt-11-5.sfi for built-in driver btintel
W: Possible missing firmware /lib/firmware/mrvl/sdsd8997_combo_v4.bin for built-in driver btmrvl_sdio
W: Possible missing firmware /lib/firmware/mrvl/sd8987_uapsta.bin for built-in driver btmrvl_sdio
W: Possible missing firmware /lib/firmware/mrvl/sdsd8977_combo_v2.bin for built-in driver btmrvl_sdio
W: Possible missing firmware /lib/firmware/mrvl/sd8897_uapsta.bin for built-in driver btmrvl_sdio
W: Possible missing firmware /lib/firmware/mrvl/sd8887_uapsta.bin for built-in driver btmrvl_sdio
W: Possible missing firmware /lib/firmware/mrvl/sd8797_uapsta.bin for built-in driver btmrvl_sdio
W: Possible missing firmware /lib/firmware/mrvl/sd8787_uapsta.bin for built-in driver btmrvl_sdio
W: Possible missing firmware /lib/firmware/mrvl/sd8688.bin for built-in driver btmrvl_sdio
W: Possible missing firmware /lib/firmware/mrvl/sd8688_helper.bin for built-in driver btmrvl_sdio
W: Possible missing firmware /lib/firmware/rtl_bt/rtl8822b_config.bin for built-in driver btrtl
W: Possible missing firmware /lib/firmware/rtl_bt/rtl8822b_fw.bin for built-in driver btrtl
W: Possible missing firmware /lib/firmware/rtl_bt/rtl8821a_config.bin for built-in driver btrtl
W: Possible missing firmware /lib/firmware/rtl_bt/rtl8821a_fw.bin for built-in driver btrtl
W: Possible missing firmware /lib/firmware/rtl_bt/rtl8761a_config.bin for built-in driver btrtl
W: Possible missing firmware /lib/firmware/rtl_bt/rtl8761a_fw.bin for built-in driver btrtl
W: Possible missing firmware /lib/firmware/rtl_bt/rtl8723ds_config.bin for built-in driver btrtl
W: Possible missing firmware /lib/firmware/rtl_bt/rtl8723ds_fw.bin for built-in driver btrtl
W: Possible missing firmware /lib/firmware/rtl_bt/rtl8723bs_config.bin for built-in driver btrtl
W: Possible missing firmware /lib/firmware/rtl_bt/rtl8723bs_fw.bin for built-in driver btrtl
W: Possible missing firmware /lib/firmware/rtl_bt/rtl8723b_config.bin for built-in driver btrtl
W: Possible missing firmware /lib/firmware/rtl_bt/rtl8723b_fw.bin for built-in driver btrtl
W: Possible missing firmware /lib/firmware/rtl_bt/rtl8723a_fw.bin for built-in driver btrtl
W: Couldn't identify type of root file system for fsck hook
raspi-firmware: missing /boot/firmware, did you forget to mount it?
run-parts: /etc/initramfs/post-update.d//z50-raspi-firmware exited with return code 1
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
make[1]: *** [arch/arm64/boot/Makefile:40: install] Error 1
make: *** [arch/arm64/Makefile:173: install] Error 2

Any ideas?

Thank you!

Ok, so I managed to figure it out with notes from the kubernetes deployment guide.
After compiling the kernel, it generates a boot.img file. This can be written directly to the boot partition by running:

sudo dd if=boot.img of=/dev/mmcblk1p3 conv=sync

After a reboot it should be running the new kernel. If for whatever reason you mess up with the kernel and it stops booting, you can flash the original boot.img (or a new version) using another computer through a USB cable using the upgrade_tool (from the firmware upgrade guide).

adb devices
<find connected device>
# reboot in loader mode
adb -s <device id> reboot loader
# to see if it finds the board
./upgrade_tool
# flash only the boot partition
./upgrade_tool di -b path/to/boot.img
# reset
./upgrade_tool rd

Now I just need to keep fiddling with the kernel config until I manage to get docker working. When I get it working I’ll post the patch file here.

Hello Wintermute, thank you for your feedback and contributions. If you require additional assistance, please don’t hesitate to reach out to us.

I managed to build a kernel for the mixtile release image (image-release-blade3-debian11-20230505.img) that works with docker (and possibly kubernetes - didn’t test). HDMI-in also works.

Kernel config file patch:
https://wintermute.digital/mixtile/blade3_docker_config.patch

Compiled kernel boot.img:
https://wintermute.digital/mixtile/boot.img

1 Like