Rpm-ostree update from old version fails due to Lua script

My problem resembles this issue
Unsupported lua script when running rpm-ostree upgrade so I tried to install Zincati only to realize Fedora IoT doesn’t use Zincati, so I’m currently stuck on Fedora IoT 39.

[root@fedora ~]# cat /etc/redhat-release
Fedora release 39 (Thirty Nine)
[root@fedora ~]# rpm-ostree  status
State: idle
Deployments:
● fedora-iot:fedora/stable/aarch64/iot
                  Version: 39.20240227.0 (2024-02-27T14:20:45Z)
               BaseCommit: 08f9f69866839e287d1479bcd04cc03fb906dccc1466b7dd58dc0f3d5a8a99e7
             GPGSignature: Valid signature by E8F23996F23218640CB44CBE75CF5AC418B8E74C
          LayeredPackages: cloud-utils-growpart mesa-va-drivers podman-compose toolbox vulkan wireguard-tools zincati

  fedora-iot:fedora/stable/aarch64/iot
                  Version: 39.20240227.0 (2024-02-27T14:20:45Z)
               BaseCommit: 08f9f69866839e287d1479bcd04cc03fb906dccc1466b7dd58dc0f3d5a8a99e7
             GPGSignature: Valid signature by E8F23996F23218640CB44CBE75CF5AC418B8E74C
          LayeredPackages: cloud-utils-growpart mesa-va-drivers podman-compose toolbox vulkan wireguard-tools
[root@fedora ~]# rpm-ostree  update
2 metadata, 0 content objects fetched; 788 B transferred in 2 seconds; 0 bytes content written
Checking out tree 65fcc07... done
Enabled rpm-md repositories: fedora-cisco-openh264 fedora updates
Importing rpm-md... done
rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2025-03-19T16:53:33Z solvables: 6
rpm-md repo 'fedora' (cached); generated: 2025-04-09T11:06:58Z solvables: 67343
rpm-md repo 'updates' (cached); generated: 2025-09-30T00:46:09Z solvables: 21606
Resolving dependencies... done
Will download: 23 packages (58.5 MB)
Downloading from 'fedora'... done
Downloading from 'updates'... done
Importing packages... done
Checking out packages... done
Running pre scripts... done
Running post scripts... done
Running posttrans scripts... done
error: Executing %transfiletriggerin for filesystem: Package 'filesystem' has (currently) unsupported <lua> script in '%transfiletriggerin'

You can try removing your layered packages with rpm-ostree uninstall –all, rebooting your device, and then retrying the rpm-ostree upgrade command.

I deployed a fresh VM using the Fedora IoT 39 install media and tried deploying 39.20240227.0. I found that I was running into issues pulling updates because the F39 install doesn’t have knowledge of the newer Fedora GPG keys.

You’ll have to fetch the newer keys into /etc/pki/rpm-gpg as discussed here: Can't check signature: public key not found

Once those are in place, I was able to fetch the latest version of Fedora IoT 42, but I can’t boot into it because of bootloader/shim issues (see screenshot).

I could continue to try to debug this, but given that your system is running a version of Fedora IoT that is over a year old, my recommendation would be to reprovision it with the Fedora IoT 42 install media.

@pwhalen reminded me that we have seen that error before and we actually have a workaround for it - Manual action needed to resolve boot failure for Fedora Atomic Desktops and Fedora IoT - Fedora Magazine

I followed the steps in that article and was able to successfully update my system to the latest Fedora IoT 42.

So…you have a path to a newer version of Fedora IoT if you want to keep that system around.