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-installcommand 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.cfgfile inEFI/BOOTdirectory and replace all the instances oflinuxandinitrdwithlinuxefiandinitrdefirespectively.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_64oraarch64)-
For
x86_64hardware the corresponding HTTP URL ofEFI/BOOT/BOOTX86.EFIfile will be used to boot (e.g.http://192.168.122.1:9080/EFI/BOOT/BOOTX86.EFI) -
For
aarch64hardware the corresponding HTTP URL ofEFI/BOOT/BOOTAA64.EFIfile will be used to boot (e.g.http://192.168.122.1:9080/EFI/BOOT/BOOTAA64.EFI)
-
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-installcommand (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-varstool 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
Want to help? Learn how to contribute to Fedora Docs ›