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 inEFI/BOOT
directory and replace all the instances oflinux
andinitrd
withlinuxefi
andinitrdefi
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
oraarch64
)-
For
x86_64
hardware the corresponding HTTP URL ofEFI/BOOT/BOOTX86.EFI
file will be used to boot (e.g.http://192.168.122.1:9080/EFI/BOOT/BOOTX86.EFI
) -
For
aarch64
hardware the corresponding HTTP URL ofEFI/BOOT/BOOTAA64.EFI
file 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-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
Want to help? Learn how to contribute to Fedora Docs ›