After bashing my head against this for a few hours, I figure I would share how I managed to install Fedora IoT on an Hetzner VPS:
-
Make sure you get an instance with UEFI support. As of time of writing, only dedicated servers w/ AMD have it, but you can later resize to a shared instance without losing UEFI support.
-
Reboot into rescue mode and ssh into it. Double-check that EFI is enabled by running efibootmgr. It should not throw an error.
-
Download Fedora IoT raw image (.raw.xz) to the rescue system
-
Write the image to disk:
pv Fedora-IoT-raw-42-20250724.1.x86_64.raw.xz | xz -d | dd of=/dev/sda bs=1048576 -
With parted, resize the main partition to use the entire disk, with the command
resize 3 100%to use the remaining disk size. Then resize the filesystem itself withresize2fs /dev/sda3 -
Create EFI record:
efibootmgr --create --disk /dev/sda --part 1 --label "Fedora IoT" -l /EFI/fedora/shimx64.efi -
Mount
/dev/sda2to/mnt/and set the root authorized_keys file in/mnt/ostree/deploy/fedora-iot/var/roothome/.ssh/authorized_keys -
SELinux will throw a tantrum after modifying a file outside its purview and won’t allow you to login, so temporarily set the SELINUX option to
permissiveon/mnt/ostree/deploy/fedora-iot/deploy/whatever.0/etc/selinux/config -
Reboot and login via ssh with root. You can now restore SELinux permissions with
restorecon -r -v -F /root/.sshand thensetenforce enforcing