Setup a device by using FDO and the Simplified Provisioner

Prerequisites

Edit the boot parameters

Once device has been booted from the Simplified Provisioner the boot menu shows the following options:

Install Fedora 40
Test this media & install Fedora 40
Troubleshooting -->
  • Select "Install Fedora 40" and press the "[e]" key to edit the menu entry.

  • Make sure the installation device variable (coreos.inst.install_dev) is correct and append the manufacturing parameters (fdo.manufacturing_server_url=http://192.168.122.1:8080 fdo.diun_pub_key_insecure=true) to the linux line if not present:

    ### BEGIN /etc/grub.d/10_linux ###
    menuentry 'Install Fedora 40' --class fedora --class gnu-linux --class gnu --class os {
    	linux  images/pxeboot/vmlinuz rd.neednet=1 coreos.inst.crypt_root=1 coreos.inst.isoroot=Fedora-40-IoT-x86_64 coreos.inst.install_dev=/dev/vda coreos.inst.image_file=/run/media/iso/image.raw.xz coreos.inst.insecure quiet fdo.manufacturing_server_url=http://192.168.122.1:8080 fdo.diun_pub_key_insecure=true
    	initrd images/pxeboot/initrd.img
    }
  • Boot the menu entry by pressing "[Ctrl-x]"

  • Once the IoT device has been installed and performed the manufacturing process it will reboot and perform the FDO Onboarding in the next boot.

Verifying the Onboarding

If the onboarding finished successfully you sould be able to login with the initial user configured in the Service Info API server.

When using libvirt in the same host where the FDO services are running you can use the following command to connect to the VM:

#! /bin/bash

export LIBVIRT_DEFAULT_URI=qemu:///system
export LIBVIRT_DOMAIN_NAME=fedora-iot-device
export LIBVIRT_NETWORK=default

MAC=$(virsh domiflist "${LIBVIRT_DOMAIN_NAME}" | grep "${LIBVIRT_NETWORK}" | awk '{print $5}')
IP=$(virsh net-dhcp-leases "${LIBVIRT_NETWORK}"| grep "${MAC}" | awk '{print $5}'| cut -f1 -d/)
ssh admin@${IP}