Boot the Simplified Provisioner

Boot from the Simplified Provisioner ISO

  • If you are using physical devices with a CD-ROM unit:

    • Burn the downloaded Simplified Provisioner ISO to a CD-ROM

    • Use the CD-ROM to boot the IoT device from it.

  • If you are using Virtual Machines, you can use the virt-install command to boot from the Simplified Provisioner ISO.

    # virt-install --connect qemu:///system \
                   --name "fedora-iot-device" \
                   --os-variant "fedora-40" \
                   --boot uefi,loader.secure=false \
                   --vcpus 1 --memory 3072 \
                   --network network=default,model=virtio \
                   --disk pool=default,size=30 \
                   --cdrom Fedora-IoT-provisioner-40.*.iso

Boot the Simplified Provisioner from an USB Flash Drive

  • Copy the ISO image file to a USB flash drive (You will need a 8 GB USB flash drive at least)

  • Connect the USB flash drive to the port of the computer you want to boot.

  • Boot the device from the USB flash drive.

Boot the Simplified Provisioner from UEFI HTTP Boot

  • Copy the contents of the Simplified Provisioner ISO to a directory

    mount Fedora-IoT-provisioner-40.*.iso /mnt
    cp -r /mnt Fedora-40-IoT-Simplified-Provisioner
    cd Fedora-40-IoT-Simplified-Provisioner
  • Modify the grub.cfg file in EFI/BOOT directory and replace all the instances of linux and initrd with linuxefi and initrdefi respectively.

    sed -i -e 's|linux /|linuxefi /|' \
           -e 's|initrd /|initrdefi /|' \
           EFI/BOOT/grub.cfg
  • Use an HTTP Server to serve the contents over the network, e.g.:

    python3 -m http.server 9080
    firewall-cmd --add-port=9080/tcp
  • The correct URL to perform UEFI HTTPBoot depends on the ISO architecture (x86_64 or aarch64)

Booting Physical Servers

  • If using a physical server please check the manual or Management UI interface to see if the system supports UEFI HTTPBoot and follow the steps in the manual to boot it manually or in an automated way from the boot URL (see above)

Booting Virtual Machines

  • Use the virt-install command (or any other tool that supports booting UEFI VMs) to boot a VM. E.g.:

    virt-install --connect qemu:///system \
                 --name "fedora-iot-device" \
                 --os-variant "fedora-40" \
                 --boot uefi,loader.secure=false \
                 --vcpus 1 --memory 3072  \
                 --network network=default,model=virtio \
                 --disk pool=default,size=30 \
                 --import
  • Press "[Esc]" key repeately to enter the UEFI management interface

  • Select "Device Manager" and press "[Enter]"

  • Select "Network Device List" and press "[Enter]"

  • Select the MAC address corresponding to the interface you wan to use to perform UEFI HTTPBoot and press "[Enter]"

  • Select "HTTP Boot Configuration" and press "[Enter]"

  • Select "Boot URI" and press "[Enter]"

  • Enter the HTTPBoot URL (see above) (e.g.: http://192.168.122.1:9080/EFI/BOOT/BOOTX86.efi) and press "[Enter]"

  • Press "[F10]" key to save the changes and then press "[Y]" to confirm the action

  • Press "[Esc]" four times until you return to the main screen

  • Select "Boot Manager"

  • Select "UEFI HTTP" and press "[Enter]"

  • The VM should perform the UEFI HTTPBoot.

It’s also possible to perform the same steps in an automated way by modifying the UEFI vars after creating the virtual machine. For that we will need to install the qemu-img and python3-virt-firmware packages:

dnf install -y python3-virt-firmware qemu-img
  • Create an unitialized and stopped virtual machine (make sure it supports UEFI), e.g.:

    virt-install --connect qemu:///system \
                 --name "fedora-iot-device" \
                 --os-variant "fedora-40" \
                 --boot uefi,loader.secure=false \
                 --vcpus 1 --memory 3072  \
                 --network network=default,model=virtio \
                 --disk pool=default,size=30 \
                 --import --noautoconsole --noreboot
  • Connect the QCOW2 containing the VM’s UEFI variables to an NBD disk so we can modify them inplace:

    modprobe nbd
    qemu-nbd --connect /dev/nbd0 /var/lib/libvirt/qemu/nvram/fedora-iot-device_VARS.qcow2
  • Use the virt-fw-vars tool to modify the UEFI variables and configure the VM to boot from the HTTP URL, e.g.:

    virt-fw-vars --input /dev/nbd0 --set-boot-uri http://192.168.122.1:9080/EFI/BOOT/BOOTX64.EFI
  • Disconnect the NBD device:

    qemu-nbd --disconnect /dev/nbd0
  • Start the VM:

    virsh --connect qemu:///system \
          start fedora-iot-device
  • The VM should perform an UEFI HTTPBoot from the configured URL