I created a new Debian 11 image using mkosi. When I install the image directly, Debian is able to boot.
I have followed the docs for converting it to a Mender image. The conversion is successful. However, once I install the mender image onto my device, it hangs during boot at the line:
Waiting for root device /dev/mmcblk0p2...
Below is my mkosi.default file contents:
[Distribution]
Distribution=debian
Release=bullseye
[Output]
Format=gpt_ext4
Bootable=yes
[Partitions]
RootSize=5G
And here is my mender-convert config file contents:
# This configuration can be used to run any distribution on a any x86-64 machine.
# As example is used CentOS distribution but can be applied to others also.
#
# Install CentOS using classic partition scheme (not use LVM) with minimal
# 2 partitons /boot/efi and /root. For root please choose only necessary size
# e.g. 10G (or desired size).
#
# This has been tested on images generated with the following command:
#
# Boot live USB and copy the data from internal storage (hdd, eMMC) e.g. for eMMC:
#
# dd if=/dev/mmcblk0 of=/media/usb/centos.img bs=1M count=10000 status=progress
#
# Before running mender-convert we need to fix GPT partition table (as we didn't copy
# whole hdd). Run following command to fix GPT partition table on copied image:
#
# sgdisk -e /media/usb/centos.img
#
# Converted with the following command:
#
# MENDER_ARTIFACT_NAME=release-1 ./docker-mender-convert \
# --disk-image input/centos.img \
# --config configs/centos_x86-64_hdd_config \
# --overlay rootfs_overlay_demo/
#
# and image must be then copied back after conversion to internal storage (when booted again from live USB) e.g. for hdd:
#
# zcat /media/usb/centos-x86_64-mender.img.gz | sudo dd of=/dev/sda bs=1M status=progress
#
# after copy run again (to fix GPT partition table):
# sgdisk -e /dev/sda
#
MENDER_DEVICE_TYPE="x86_64"
MENDER_BOOT_PART_SIZE_MB=512
MENDER_STORAGE_TOTAL_SIZE_MB=10854
# Nothing to copy
MENDER_COPY_BOOT_GAP="n"
function platform_modify() {
#
# Make sure /lib64 exists since the Mender binary requires it.
# Some systems put everything under /lib (ie Yocto) and a simple
# symlink is enough to find everything Mender needs.
#
if [ ! -e work/rootfs/lib64 ]; then
run_and_log_cmd "ln -s /lib work/rootfs/lib64"
fi
}
Thanks in advance!