I didn’t put the log in because that is where I thought the issue was occurring since when I try to open that link I get an error code 400. But here is the full log for the operation too.
2021-11-18 11:25:04 [INFO] [mender-convert-extract] Using configuration file: configs/mender_convert_config
2021-11-18 11:25:04 [INFO] [mender-convert-extract] Using configuration file: ./work/override_compression_config
2021-11-18 11:25:04 [INFO] [mender-convert-extract] Using configuration file: configs/raspberrypi4_ubuntu_config
2021-11-18 11:25:04 [INFO] [mender-convert-extract] Validating disk image
2021-11-18 11:25:04 [INFO] [mender-convert-extract] Disk parsed successfully
2021-11-18 11:25:04 [INFO] [mender-convert-extract] NUMBER OF PARTS: 2 TYPE: dos
2021-11-18 11:25:04 [INFO] [mender-convert-extract] PART 1: SIZE: 256M TYPE: 0xc
2021-11-18 11:25:04 [INFO] [mender-convert-extract] PART 1: extracting to work/part-1.fs
2021-11-18 11:26:01 [DEBUG] [mender-convert-extract] Running: (modules/disk.sh:64): run_and_log_cmd():
dd if=input/ubuntu.img of=work/part-1.fs skip=2048 bs=512 count=524288 conv=sparse status=none
2021-11-18 11:26:01 [INFO] [mender-convert-extract] PART 2: SIZE: 2.9G TYPE: 0x83
2021-11-18 11:26:01 [INFO] [mender-convert-extract] PART 2: extracting to work/part-2.fs
2021-11-18 11:52:28 [DEBUG] [mender-convert-extract] Running: (modules/disk.sh:64): run_and_log_cmd():
dd if=input/ubuntu.img of=work/part-2.fs skip=526336 bs=512 count=6052348 conv=sparse status=none
2021-11-18 11:52:28 [INFO] [mender-convert-modify] Using configuration file: configs/mender_convert_config
2021-11-18 11:52:28 [INFO] [mender-convert-modify] Using configuration file: ./work/override_compression_config
2021-11-18 11:52:28 [INFO] [mender-convert-modify] Using configuration file: configs/raspberrypi4_ubuntu_config
2021-11-18 11:52:28 [INFO] [mender-convert-modify] Installing Mender client and related files
2021-11-18 11:52:28 [INFO] [mender-convert-modify] Installing Mender client version latest
2021-11-18 11:52:29 [DEBUG] [mender-convert-modify] Running: (modules/deb.sh:42): run_and_log_cmd():
wget -Nq https://downloads.mender.io/repos/debian/dists/stable/main/binary-arm64/Packages -P /tmp
2021-11-18 11:52:31 [DEBUG] [mender-convert-modify] Running: (modules/deb.sh:51): run_and_log_cmd():
wget -Nq https://downloads.mender.io/repos/debian/pool/main/m/mender-client/mender-client_3.1.0-1_arm64.deb -P work/deb-packages
2021-11-18 11:52:31 [INFO] [mender-convert-modify] Successfully downloaded mender-client_3.1.0-1_arm64.deb
2021-11-18 11:52:31 [DEBUG] [mender-convert-modify] Running: (modules/deb.sh:105): run_and_log_cmd():
ar -xv /mender-convert/work/deb-packages/mender-client_3.1.0-1_arm64.deb
x - debian-binary
x - control.tar.xz
x - data.tar.xz
2021-11-18 11:52:31 [DEBUG] [mender-convert-modify] Running: (modules/deb.sh:107): run_and_log_cmd():
sudo tar xJf data.tar.xz -C files
2021-11-18 11:52:31 [DEBUG] [mender-convert-modify] Running: (modules/deb.sh:110): run_and_log_cmd():
sudo rsync --archive --keep-dirlinks --verbose /tmp/tmp.jpwKaHQ5uG/files/ /mender-convert/work/rootfs/
sending incremental file list
./
etc/
etc/mender/
etc/mender/artifact_info
etc/mender/scripts/
etc/mender/scripts/version
lib/
lib/systemd/
lib/systemd/system/
lib/systemd/system/mender-client.service
usr/
usr/bin/
usr/bin/directory-artifact-gen
usr/bin/docker-artifact-gen
usr/bin/mender
usr/bin/single-file-artifact-gen
usr/share/
usr/share/dbus-1/
usr/share/dbus-1/system.d/
usr/share/dbus-1/system.d/io.mender.AuthenticationManager.conf
usr/share/dbus-1/system.d/io.mender.UpdateManager.conf
usr/share/doc/
usr/share/doc/mender-client/
usr/share/doc/mender-client/changelog.Debian.gz
usr/share/doc/mender-client/copyright
usr/share/doc/mender-client/examples/
usr/share/doc/mender-client/examples/demo.crt
usr/share/doc/mender/
usr/share/mender/
usr/share/mender/identity/
usr/share/mender/identity/mender-device-identity
usr/share/mender/inventory/
usr/share/mender/inventory/mender-inventory-bootloader-integration
usr/share/mender/inventory/mender-inventory-geo
usr/share/mender/inventory/mender-inventory-hostinfo
usr/share/mender/inventory/mender-inventory-network
usr/share/mender/inventory/mender-inventory-os
usr/share/mender/inventory/mender-inventory-provides
usr/share/mender/inventory/mender-inventory-rootfs-type
usr/share/mender/inventory/mender-inventory-update-modules
usr/share/mender/modules/
usr/share/mender/modules/v3/
usr/share/mender/modules/v3/deb
usr/share/mender/modules/v3/directory
usr/share/mender/modules/v3/docker
usr/share/mender/modules/v3/rpm
usr/share/mender/modules/v3/script
usr/share/mender/modules/v3/single-file
sent 7,957,596 bytes received 624 bytes 15,916,440.00 bytes/sec
total size is 7,953,394 speedup is 1.00
2021-11-18 11:52:31 [INFO] [mender-convert-modify] Successfully installed mender-client_3.1.0-1_arm64.deb into /mender-convert/work/rootfs/
2021-11-18 11:52:31 [DEBUG] [mender-convert-modify] Running: (./mender-convert-modify:128): run_and_log_cmd():
sudo ln -sf /lib/systemd/system/mender-client.service work/rootfs/etc/systemd/system/multi-user.target.wants/mender-client.service
2021-11-18 11:52:31 [INFO] [mender-convert-modify] Creating state folder in the data partition for Mender add-ons
2021-11-18 11:52:31 [DEBUG] [mender-convert-modify] Running: (./mender-convert-modify:170): run_and_log_cmd():
sudo mkdir -p work/rootfs/data/mender-configure
2021-11-18 11:52:31 [DEBUG] [mender-convert-modify] Running: (./mender-convert-modify:171): run_and_log_cmd():
sudo ln -sf /data/mender-configure work/rootfs/var/lib/mender-configure
2021-11-18 11:52:31 [DEBUG] [mender-convert-modify] Running: (./mender-convert-modify:172): run_and_log_cmd():
sudo mkdir -p work/rootfs/data/mender-monitor
2021-11-18 11:52:31 [DEBUG] [mender-convert-modify] Running: (./mender-convert-modify:173): run_and_log_cmd():
sudo ln -sf /data/mender-monitor work/rootfs/var/lib/mender-monitor
2021-11-18 11:52:31 [DEBUG] [mender-convert-modify] Running: (./mender-convert-modify:279): run_and_log_cmd():
sudo mkdir -p work/rootfs/data/mender
2021-11-18 11:52:31 [DEBUG] [mender-convert-modify] Running: (./mender-convert-modify:280): run_and_log_cmd():
sudo ln -sf /data/mender work/rootfs/var/lib/mender
2021-11-18 11:52:31 [INFO] [mender-convert-modify] Using root device A in mender.conf: /dev/mmcblk0p2
2021-11-18 11:52:31 [INFO] [mender-convert-modify] Using root device B in mender.conf: /dev/mmcblk0p3
2021-11-18 11:52:31 [DEBUG] [mender-convert-modify] Running: (./mender-convert-modify:292): run_and_log_cmd():
sudo cp work/mender.conf.data work/rootfs/data/mender/mender.conf
2021-11-18 11:52:31 [DEBUG] [mender-convert-modify] Running: (./mender-convert-modify:293): run_and_log_cmd():
sudo chmod 600 work/rootfs/data/mender/mender.conf
2021-11-18 11:52:31 [e[1;33mWARNe[0m] [mender-convert-modify] No mender.conf file found in resources. Have you remembered to run the bootstrap script?
2021-11-18 11:52:31 [DEBUG] [mender-convert-modify] Running: (./mender-convert-modify:315): run_and_log_cmd():
echo 'device_type=raspberrypi4' > work/device_type
2021-11-18 11:52:31 [DEBUG] [mender-convert-modify] Running: (./mender-convert-modify:316): run_and_log_cmd():
sudo install -m 0444 work/device_type work/rootfs/data/mender/
2021-11-18 11:52:31 [DEBUG] [mender-convert-modify] Running: (./mender-convert-modify:320): run_and_log_cmd():
echo 'artifact_name=release-1' | sudo tee work/rootfs/etc/mender/artifact_info
artifact_name=release-1
2021-11-18 11:52:31 [INFO] [mender-convert-modify] Creating state scripts version file.
2021-11-18 11:52:31 [DEBUG] [mender-convert-modify] Running: (./mender-convert-modify:328): run_and_log_cmd():
sudo mkdir -p work/rootfs/etc/mender/scripts/
2021-11-18 11:52:31 [DEBUG] [mender-convert-modify] Running: (./mender-convert-modify:329): run_and_log_cmd():
echo -n 3 | sudo tee work/rootfs/etc/mender/scripts/version
3
2021-11-18 11:52:31 [INFO] [mender-convert-modify] Installing a custom /etc/fstab (see /mender-convert/logs/convert.log.UMLd for more info)
2021-11-18 11:52:32 [DEBUG] [mender-convert-modify] Running: (./mender-convert-modify:339): run_and_log_cmd():
sudo mkdir -p work/rootfs/uboot
2021-11-18 11:52:32 [INFO] [mender-convert-modify] Using boot partition device in fstab: /dev/mmcblk0p1
2021-11-18 11:52:32 [INFO] [mender-convert-modify] Using data partition device in fstab: /dev/mmcblk0p4
2021-11-18 11:52:32 [INFO] [mender-convert-modify] Performing platform specific modifications (if any)
2021-11-18 11:52:32 [INFO] [mender-convert-modify] Running hook: platform_modify
2021-11-18 11:52:32 [DEBUG] [mender-convert-modify] Running: (configs/raspberrypi_config:19): run_and_log_cmd():
wget -q https://downloads.mender.io/mender-convert/uboot/raspberrypi/raspberrypi4-integration-2019.01.tar.gz -P work/rpi/binaries
2021-11-18 11:52:33 [e[0;31mERRORe[0m] [mender-convert] mender-convert failed
2021-11-18 11:52:33 [e[0;31mERRORe[0m] [mender-convert] mender-convert exit code: 8
Are you using raspberrypi4_ubuntu_config? I suspect that this file has been abandoned and doesn’t work anymore. Can you try raspberrypi4_config instead?
Thank you, that does seem to solve the issue. The image did get converted. Now the only problem I am facing is that I am unable to SSH onto the Pi now. It shows up on the network and I can ping it but can’t SSH. I don’t currently have the ability to hook up the Pi to the monitor and hence I am trying to SSH. If you have any ideas on what I can try then I’d be appreciative but nevertheless thank you for your support.
its possibly because the ssh-server systemd service is not enabled
Option4:
I’m not familiar with the PI setup, but normally with systemd in an offline build, you can just create a symlink /etc/systemd/system/ssh.service targetting the service file /lib/systemd/system/ssh.service to startup sshd service on boot. You could add this as a PLATFORM_MODIFY_HOOKS function into your mender-convert config file
you can supplly more than 1 config file to mender-convert process, so you could keep your customisations in a separate config file to the main raspberrypi4_ubuntu_config file and supply both to mender-convert
Thanks @dellgreen but I ended up acquiring a monitor and a cable to see what the issue is. This is what the Pi spits out when it is booting:
No Working Controllers found
Hit any key to stop autoboot
Scanning mmc 0:1...
Found U-Boot script /boot.scr
bytes read in 25 ms
Executing script at 02400000
Error: "mender_setup" not defined
Switch to partitions 0, OK
mmc0 is current device
** Bad device specification 0x00080000 /boot/zimage
** Bad device specification 0x00080000 /boot/uimage
No bootable kernal found.
Error: "mender_try_to_recover" not defined
SCRIPT FAILED: continuing...
libfdt fdt_check_header(): FDT_ERR_BADMAGIC
Card did not respond to voltage Select! : -110
Scanning disk mmcnr@7e300000.blk...
disk mmcnr@7e300000.blk not ready
Scanning emmc2@7e340000.blk...
Found 5 disks
No EFI system partition
BootOrder not defined
EFI boot manager: cannot load any image
I couldn’t speak to the solution given the mender conversion is still new to me, but it definitely looks like you’re either missing an EFI partition or it’s missing the appropriate flag (boot, efi I believe?)
After looking at the mender-convert code it seemed to be replacing the kernel when converting the image. I made a modification to the code which meant that instead of Uboot replacing the kernel. Uboot instead replaced the original Uboot files that are in the normal image. After doing that this issue went away. Only problem now is that the image always boots into initramfs instead of the actual root partition. I manually went into cmdline.txt and changed and changed it to /dev/mmcblk0p2 and it booted fine. So there is an issue with the mender variables not being recognised and therefore can’t be parsed into the correct root partition to boot into.
@Deep I’ve had several runs at converting a perfectly fine disk image (fresh ubuntu 21* server install, only changes were the ubuntu user and root having their passwords changed and ssh keys added) with absolutely none of the conversions completing or if they did complete, they wouldn’t boot. I’m going to just take a wild stab at the answer, and with over 20 years of Linux administration behind me, I have to believe that I can’t possibly be defecating the bed this much!.
Might I ask, if you were to open the image after conversion and look in, let’s say /boot or /boot/efi, do you find a bunch of symlinks that go to either non-existent or 0byte files?
Hello @rushowr. Thanks for getting in touch, I just checked your theory on whether I had 0byte symlinks in my /boot folder and that does not seem to be the case. They all have byte values associated to them. This could be because I did modify the mender-convert code to make it more accepting of 64bit images. If you want the code that I used to tinker around with I am happy to distribute it to you. Just let me know.
In my version of the code, The final output is an image that does build and it does boot but gets stuck booting into busybox rather than the actual partition. After tinkering some more I found out that if I changed the the root attribute in cmdline.txt to the partition like so root=/dev/mmcblk0p2 then it did in fact boot correctly into the necessary partition. But doing this obviously negates the point of using mender in the first place. I haven’t looked into it much after that so maybe you can have a look
Hey @rushowr, sorry for the late reply but here is a Github link of everything I changed. You should be able to use it just like the normal mender-convert code. If you have any issues, do let me know.