Netboot iPxe

Ok, we have our Raspberry Pis, ready to run containers now !
We could straight away go and install K3s to run containerized applications in our cluster
Across our journey, here it comes FedoraCoreOS, a minimal operative system designed run container workloads,
it can autoupdate itslef, and providing immutability to the underlying system.
An even more interesting feature, is the possibility to run it entirely on RAM,
and each reboot, reprovision and reconfigure itself trough a config file in Ignition.
But how could this be achieved ?
The answer is piPxe, providing extended capabilities to existing PXE structure,
allowing each reboot to pull a new image of CoreOS directly from the repository.

Credits to valtzu for this awesome automated build : Repository

git clone
cd pixpe
docker-compose up 

piPxe will be built and file sdimage.img will be found, we flash it to an SD card.
Further steps to allow a fully diskless approach, will be investigated.
We need to change the bootfile in our DHCP configuration, the file is ipxe.txt
The content is the following :


set STREAM stable
set VERSION 35.20220131.3.0

kernel initrd=main   ignition.firstboot ignition.config.url=${CONFIGURL}
initrd --name main


We need to deliver a config with Igintion file, to provision CoreOS.
This will allow us to configure at boot time disks, fileystsems, users an even systemd services.
To produce a working ignition file, we can use the Butane utility : Butane
Write down the configuration in a yaml file, and parse it with Butane to produce a .ign
Example baseline config :

variant: fcos
version: 1.4.0
    - name: core
        - ecdsa-sha2-nistp384  user@ssh.key


    - name: settimezone.service
      enabled: true
      contents: |
        Description=Set local time zone


        ExecStart=/usr/bin/timedatectl set-timezone Europe/Prague

Further indication on how to produce the ignition in the official docuentation : FCOS Docs

Power on your pi,
Enjoy !


Subscribe to our Newsletter