Installazione di CoreOS su hardware bare metal

Questa guida fornisce istruzioni per installare Fedora CoreOS su bare metal. Sono disponibili tre opzioni:

  • Installazione da ISO live

  • Installazione da PXE

  • Installazione dal container

Prerequisiti

Prima di installare FCOS, è necessario disporre di un file di configurazione di Ignition e ospitarlo da qualche parte (ad esempio, usando python3 -m http.server). Se non ne avete uno, consultate Produzione di un file Ignition.

Se si dispone di server con tipi e/o numero di dischi rigidi diversi, è necessario creare una configurazione Ignition personalizzata separata per ogni macchina (o classe di macchine). Un buon modello consiste nell’integrare le parti comuni della configurazione in una configurazione Ignition separata, che può essere integrata (tramite HTTP o inline) nella configurazione personalizzata per macchina.

Installazione da ISO live

Per installare FCOS su bare metal utilizzando l’ISO live in modo interattivo, seguire questi passaggi:

podman run --security-opt label=disable --pull=always --rm -v .:/data -w /data \
    quay.io/coreos/coreos-installer:release download -s stable -p metal -f iso

Nota che si sta semplicemente utilizzando coreos-installer come strumento per scaricare l’ISO.

È possibile avviare l’ISO live in modalità BIOS legacy o UEFI, indipendentemente dalla modalità che il sistema operativo utilizzerà una volta installato.
  • Masterizza l’ISO su disco. Su Linux e macOS, puoi usare dd. Su Windows, puoi usare Rufus in modalità "DD Image".

  • Avvialo sul sistema di destinazione. L’ISO è in grado di avviare un sistema FCOS completamente funzionante esclusivamente dalla memoria (ovvero senza utilizzare spazio su disco). Una volta avviato, avrai accesso a un prompt dei comandi bash.

  • Ora puoi eseguire coreos-installer:

sudo coreos-installer install /dev/sda \
    --ignition-url https://example.com/example.ign

Una volta completata l’installazione, è possibile riavviare il sistema utilizzando sudo reboot. Dopo il riavvio, inizia il primo processo di avvio. È a questo punto che Ignition acquisisce il file di configurazione e predispone il sistema come specificato.

Per installazioni ISO più avanzate, inclusa l’automazione, vedere di seguito. Per ulteriori informazioni sull’immagine ISO live, consultare il file riferimento immagine live.

Per ulteriori opzioni su come installare Fedora CoreOS, consultare coreos-installer install --help.

Installazione dalla rete

L’avvio dell’immagine PXE live richiede almeno 2 GiB di RAM con l’argomento kernel coreos.live.rootfs_url, e 4 GiB altrimenti. È possibile installare in modalità di avvio legacy (BIOS) o in modalità UEFI, indipendentemente dalla modalità che il sistema operativo utilizzerà una volta installato.

Installazione da PXE

Per installare da PXE, seguire questi passaggi:

  • Scarica un kernel PXE FCOS, initramfs e un’immagine rootfs:

podman run --security-opt label=disable --pull=always --rm -v .:/data -w /data \
    quay.io/coreos/coreos-installer:release download -f pxe
  • Segui questo esempio pxelinux.cfg per avviare le immagini di installazione con PXELINUX:

DEFAULT pxeboot
TIMEOUT 20
PROMPT 0
LABEL pxeboot
    KERNEL fedora-coreos-42.20250705.3.0-live-kernel-x86_64
    APPEND initrd=fedora-coreos-42.20250705.3.0-live-initramfs.x86_64.img,fedora-coreos-42.20250705.3.0-live-rootfs.x86_64.img coreos.inst.install_dev=/dev/sda coreos.inst.ignition_url=http://192.168.1.101:8000/config.ign
IPAPPEND 2

Per maggiori dettagli su come utilizzare queste informazioni, consulta questo post del blog per testare un’installazione PXE tramite una VM locale e libvirt. Per altre opzioni supportate dalla riga di comando del kernel, consulta la documentazione di coreos-installer docs, ma tieni presente che coreos-installer pxe customize (vedi sotto) è più flessibile. Per maggiori informazioni sull’immagine PXE live, consulta il file riferimento immagine live.

Installazione da iPXE

Un computer compatibile con iPXE deve essere dotato di uno script di avvio appropriato per recuperare e caricare gli artefatti FCOS.

L’esempio seguente mostra come caricarli direttamente dall’infrastruttura Fedora. Per motivi di prestazioni e affidabilità, si consiglia di eseguirne il mirroring sull’infrastruttura locale e quindi modificare BASEURL secondo necessità.

#!ipxe

set STREAM stable
set VERSION 42.20250705.3.0
set INSTALLDEV /dev/sda
set CONFIGURL https://example.com/config.ign

set BASEURL https://builds.coreos.fedoraproject.org/prod/streams/${STREAM}/builds/${VERSION}/x86_64

kernel ${BASEURL}/fedora-coreos-${VERSION}-live-kernel.x86_64 initrd=main coreos.live.rootfs_url=${BASEURL}/fedora-coreos-${VERSION}-live-rootfs.x86_64.img coreos.inst.install_dev=${INSTALLDEV} coreos.inst.ignition_url=${CONFIGURL}
initrd --name main ${BASEURL}/fedora-coreos-${VERSION}-live-initramfs.x86_64.img

avvio

Per altre opzioni supportate dalla riga di comando del kernel, consultare documentazione di coreos-installer, ma si noti che coreos-installer pxe customize (vedere sotto) è più flessibile. Per ulteriori informazioni sull’immagine PXE live, consultare riferimento immagine live.

Installazione dal container

È possibile utilizzare coreos-installer container da un sistema esistente per installare su un dispositivo a blocchi collegato. Ad esempio (sostituire docker con podman se necessario):

sudo podman run --pull=always --privileged --rm \
    -v /dev:/dev -v /run/udev:/run/udev -v .:/data -w /data \
    quay.io/coreos/coreos-installer:release \
    install /dev/vdb -i config.ign

In questo esempio, coreos-installer scaricherà l’ultima immagine stabile di FCOS metal e la installerà in /dev/vdb. Quindi inietterà il file di Ignition config.ign nella directory corrente nell’immagine. Usa --help per visualizzare tutte le opzioni disponibili.

Scaricamento e mirroring dell’immagine metallica

A volte è necessario scaricare l’immagine metal in anticipo e poi passarla localmente a coreos-installer per l’installazione. È possibile scaricare l’immagine metal direttamente da pagina di download di FCOS, oppure utilizzare coreos-installer download.

Quando si installa tramite ISO live o PXE, non è necessario scaricare l’immagine metal. È già inclusa in quegli ambienti.

Sono disponibili due immagini metal: una per dischi con settori da 512b (etichettata "Raw" nella pagina di download) e una per dischi nativi con settori da 4k (etichettata "Raw (4K Native)"). A meno che non si sappia di voler utilizzare un disco nativo 4k, utilizzare quella da 512b, che è la più comune. Per ulteriori informazioni, consultare https://en.wikipedia.org/wiki/Advanced_Format#4K_native [questa pagina].

Per scaricare l’immagine nativa metal 4kn con coreos-installer download, utilizzare l’opzione --format 4k.raw.xz.

L’immagine metal utilizza un layout di partizione ibrido che supporta sia l’avvio BIOS che UEFI.

Quando sarai finalmente pronto a installare FCOS, potrai indirizzarlo all’immagine scaricata utilizzando coreos-installer install --image-url <LOCAL_MIRROR> or coreos-install --image-file <PATH>.

Personalizzazione dell’installazione

I comandi coreos-installer iso customize e coreos-installer pxe customize possono essere utilizzati per creare immagini ISO e PXE personalizzate con configurazione specifica per il sito, inclusa la possibilità di eseguire installazioni non presidiate di Fedora CoreOS.

Quando si avvia un’immagine creata con coreos-installer pxe customize, la riga di comando del kernel PXE o iPXE deve includere gli argomenti ignition.firstboot ignition.platform.id=metal. Se si esegue su una macchina virtuale, sostituire metal con l’ID piattaforma https://coreos.github.io/ignition/supported-platforms/ per la propria piattaforma, ad esempio qemu o vmware.

Per esempio:

# Crea file customized.iso che:
# - Installa automaticamente in /dev/sda
# - Esegue il provisioning del sistema installato con config.ign
# - Configura GRUB e il kernel installati per utilizzare una console grafica primaria
#	 e una console seriale secondaria
# - Utilizza la configurazione di rete da static-ip.nmconnection
# - Considera attendibili i certificati HTTPS firmati da ca.pem
# - Esegue post.sh dopo l'installazione
coreos-installer iso customize \
	--dest-device /dev/sda \
	--dest-ignition config.ign \
	--dest-console ttyS0,115200n8 \
	--dest-console tty0 \
	--network-keyfile static-ip.nmconnection \
	--ignition-ca ca.pem \
	--post-install post.sh \
	-o custom.iso fedora-coreos-42.20250705.3.0-live.x86_64.iso
# Idem, ma crea un'immagine initramfs PXE personalizzata
coreos-installer pxe customize \
	--dest-device /dev/sda \
	--dest-ignition config.ign \
	--dest-console ttyS0,115200n8 \
	--dest-console tty0 \
	--network-keyfile static-ip.nmconnection \
	--ignition-ca ca.pem \
	--post-install post.sh \
	-o custom-initramfs.img fedora-coreos-42.20250705.3.0-live-initramfs.x86_64.img

Per maggiori dettagli sulle personalizzazioni disponibili, consulta documentazione di coreos-installer.

Installazione ISO su hardware diversi

In genere, i sistemi bare metal presentano una varietà di componenti hardware: alcuni sistemi potrebbero avere unità NVMe /dev/nvme*, mentre altri hanno /dev/sd*, ad esempio. Quasi certamente sarà necessario creare un modello del valore di /dev/sda sopra.

Un approccio utile è quello di usare uno script che generi un file .iso per ogni macchina. Se si dispone di un database hardware (che sia un file di testo in git o un database relazionale), sarà possibile generare, ad esempio, target-dell.ign e target-hp.ign per ogni macchina, specificandoli su --dest-ignition insieme all’opzione --dest-device appropriata per generare fedora-coreos-install-dell.iso e fedora-coreos-install-hp.iso.

In alternativa, invece di generare ISO per macchina, è possibile utilizzare uno script --pre-install per eseguire un contenitore privilegiato che ispeziona il sistema di destinazione e scrive un config.installer appropriato in /etc/coreos/installer.d.

Installazione su iSCSI

Per installare CoreOS su un dispositivo di avvio iSCSI, seguire gli stessi passaggi descritti sopra per ottenere l’ambiente live e aggiungere gli argomenti del kernel relativi a iSCSI.

  • Montare la destinazione iSCSI dall’ambiente live:

sudo iscsiadm -m discovery -t st -p 10.0.0.1
sudo iscsiadm -m node -T iqn.2023-10.coreos.target.vm:coreos -l
  • Aggiungere i karg necessari quando si esegue coreos-installer:

Installazione su una destinazione iSCSI con iBFT

Su una macchina completamente priva di dischi, i valori di destinazione e di iniziatore iscsi possono essere passati tramite iBFT. Questi potrebbero essere forniti con uno script di avvio iPXE, ad esempio:

---
#!ipxe
set initiator-iqn iqn.2023-11.coreos.diskless:testsetup
sanboot iscsi:10.0.0.1::::iqn.2023-10.coreos.target.vm:coreos
---
---
sudo coreos-installer install \
    /dev/disk/by-path/ip-10.0.0.1\:3260-iscsi-iqn.2023-10.coreos.target.vm\:coreos-lun-0 \
    --append-karg rd.iscsi.firmware=1 --append-karg ip=ibft \
    --console ttyS0 \
    --ignition-url https://example.com/example.ign
---
Installazione su una destinazione iSCSI con configurazione manuale
---
sudo coreos-installer install \
    /dev/disk/by-path/ip-10.0.0.1\:3260-iscsi-iqn.2023-10.coreos.target.vm\:coreos-lun-0 \
    --append-karg rd.iscsi.initiator=iqn.2024-02.com.yourorg.name:lun0 \
    --append-karg netroot=iscsi:iqn.2023-10.coreos.target.vm:coreos` \
    --console ttyS0 \
    --ignition-url https://example.com/example.ign
---

Tutto questo può essere impostato anche utilizzando coreos-installer iso customize o coreos-installer pxe customize. (Vedi la sezione "Personalizzazione dell’installazione" qui sopra).

Ad esempio utilizzando iBFT:

# Crea file customized.iso che:
# - Monta automaticamente la destinazione iSCSI utilizzando mount-iscsi.sh
# - Esegue il provisioning del sistema installato con config.ign
# - Configura il sistema installato per utilizzare iBFT
coreos-installer iso customize \
	--pre-install mount-iscsi.sh \
	--dest-device /dev/disk/by-path/ip-10.0.0.1\:3260-iscsi-iqn.2023-10.coreos.target.vm\:coreos-lun-0 \
	--dest-ignition config.ign \
	--dest-karg-append rd.iscsi.firmware=1 \
	--dest-karg-append ip=ibft \
	-o custom.iso fedora-coreos-{versione-stabile}-live.x86_64.iso

Il flag --pre-install viene utilizzato per eseguire uno script con i comandi iscsiadm, --dest-device punta al disco montato e poi --dest-karg-append aggiunge i karg necessari.

Reinstallazione di Fedora CoreOS

È possibile utilizzare uno qualsiasi dei metodi descritti sopra per reinstallare Fedora CoreOS sullo stesso computer tramite l’ambiente live.

Persistenza dei dati

Il programma di installazione non esegue la pulizia completa del disco di destinazione. Grazie a filesystem-reuse semantics di Ignition, se si applica una configurazione con le stesse identiche impostazioni di partizione e file system della prima installazione, tutti i dati precedentemente memorizzati nelle partizioni aggiuntive saranno comunque disponibili. Questo può essere utile per la persistenza, ad esempio, di /var/lib/containers o /var/home tra le reinstallazioni. Esistono tuttavia alcune restrizioni. Consultare la sezione Using persistent state per ulteriori informazioni. È inoltre opportuno assicurarsi che il file system di root abbia una dimensione fissa di almeno 8 GiB, come descritto in Configurazione dell’archiviazione, in modo che le partizioni dati non vengano sovrascritte accidentalmente.

Unità di destinazione

Fedora CoreOS richiede che esista un solo filesystem etichettato boot. Se al primo avvio vengono rilevati più filesystem di questo tipo, il provisioning genererà un errore, in quanto a prova di errore. Se si reinstalla Fedora CoreOS su un disco diverso da quello dell’installazione precedente, assicurarsi di cancellare il disco precedente usando, ad esempio, wipefs. Ad esempio, se si reinstalla in /dev/sdb, ma /dev/sda contiene ancora la precedente installazione di FCOS, usare wipefs -a /dev/sda nell’ambiente di installazione.