Installing CoreOS on Bare Metal

This guide provides instructions to install Fedora CoreOS to bare metal. Two options are available:

  • Installing from live ISO

  • Installing from PXE

Prerequisite

Before installing FCOS, you must have an Ignition configuration file and host it somewhere (e.g. using python3 -m http.server). If you do not have one, see Producing an Ignition File.

Installing from live ISO

To install FCOS onto bare metal using the live ISO, follow these steps:

  1. Download the ISO image from the FCOS download page.

    The live system requires at least 3 GiB of RAM. You can boot it in either legacy BIOS or UEFI mode, regardless of what mode the OS will use once installed.
  2. Burn the ISO to disk and boot it on the target system. The ISO is capable of bringing up a fully functioning FCOS system purely from memory (i.e. without using any disk storage). Once booted, you will have access to a bash command prompt.

  3. You can now fetch your Ignition config and run coreos-installer:

curl -LO https://example.com/example.ign
sudo coreos-installer install /dev/sda --ignition example.ign

Once the installation is complete, you can simply sudo reboot. After rebooting, the first boot process begins. It is at this time that Ignition ingests the configuration file and provisions the system as specified.

Check out coreos-installer install --help for more options on how to install Fedora CoreOS.

Installing from PXE

To install from PXE, follow these steps:

  1. Download an FCOS PXE kernel and initramfs image from the FCOS download page.

    You can install in either legacy boot (BIOS) mode or in UEFI mode, regardless of what mode the OS will use once installed.
  2. Follow this example pxelinux.cfg for booting the installer images with PXELINUX:

    DEFAULT pxeboot
    TIMEOUT 20
    PROMPT 0
    LABEL pxeboot
        KERNEL fedora-coreos-30.20191014.1-live-kernel-x86_64
        APPEND ip=dhcp rd.neednet=1 initrd=fedora-coreos-30.20191014.1-live-initramfs.x86_64.img console=tty0 console=ttyS0 coreos.inst.install_dev=/dev/sda coreos.inst.stream=stable coreos.inst.ignition_url=http://192.168.1.101:8000/config.ign
    IPAPPEND 2

For more details on how to use this information, see this blog post for testing a PXE installation via a local VM and libvirt.

Live PXE

In this model, rather than performing a "persistent" installation to disk, you can run directly from RAM. This is useful in e.g. "diskless" scenarios. The steps are similar to the above, just omit the coreos.inst arguments, and instead have the system itself run Ignition:

DEFAULT pxeboot
TIMEOUT 20
PROMPT 0
LABEL pxeboot
    KERNEL fedora-coreos-30.20191014.1-live-kernel-x86_64
    APPEND ip=dhcp rd.neednet=1 initrd=fedora-coreos-30.20191014.1-live-initramfs.x86_64.img console=tty0 console=ttyS0 ignition.firstboot ignition.platform.id=metal ignition.config.url=http://192.168.1.101/config.ign
IPAPPEND 2