直接从内存运行Fedora CoreOS

Fedora CoreOS现场环境是Fedora CoreOS的全功能副本。它可以通过Ignition、执行容器等进行自我配置。生活环境可以用来 将Fedora CoreOS安装到磁盘 ,还可以用来直接从内存运行Fedora CoreOS。

本指南展示了如何通过iso、pxe或ipxe引导瞬时Fedora CoreOS(FCOS)系统。有关实时ISO和PXE映像的更多信息,请参阅 实时图像参考

先决条件

在引导FCOS之前,您必须有一个Ignition配置文件。如果您没有,请参见 生成Ignition文件

如果您从PXE或iPXE启动,则必须在可访问的HTTP(S)或TFTP服务器上托管Ignition配置。引导实时PXE映像需要至少2 GiB的RAM coreos.live.rootfs_url 内核参数,否则为4 GiB。

通过ISO引导

实时ISO映像可以通过无人值守管理(LOM)固件从物理DVD光盘、USB闪存盘或虚拟CD驱动器引导。

要从ISO映像启动,请执行以下步骤:

  • 下载ISO镜像:

    podman run --security-opt label=disable --pull=always --rm -v .:/data -w /data \
        quay.io/coreos/coreos-installer:release download -f iso
  • 使用 coreos-installer iso customize 将您的Ignition配置嵌入到ISO映像中。例如,对于名为 config.ign

    podman run --security-opt label=disable --pull=always --rm -v .:/data -w /data \
        quay.io/coreos/coreos-installer:release iso customize --live-ignition config.ign \
        -o customized.iso fedora-coreos-35.20220424.3.0-live.x86_64.iso
  • 将ISO刻录到磁盘。在Linux和MacOS上,您可以使用 dd 。在Windows上,您可以使用 鲁弗斯 在“DD镜像”模式下。

  • 在目标系统上引导它。

通过PXE引导

要从PXE启动,请执行以下步骤:

  • 下载FCOS PXE内核、initramf和rootfs镜像:

podman run --security-opt label=disable --pull=always --rm -v .:/data -w /data \
    quay.io/coreos/coreos-installer:release download -f pxe
  • 请遵循下面的例子 pxelinux.cfg 要使用PXELINUX引导安装程序镜像并运行Ignition:

DEFAULT pxeboot
TIMEOUT 20
PROMPT 0
LABEL pxeboot
    KERNEL fedora-coreos-35.20220424.3.0-live-kernel-x86_64
    APPEND initrd=fedora-coreos-35.20220424.3.0-live-initramfs.x86_64.img,fedora-coreos-35.20220424.3.0-live-rootfs.x86_64.img ignition.firstboot ignition.platform.id=metal ignition.config.url=http://192.168.1.101/config.ign
IPAPPEND 2

通过iPXE引导

支持iPXE的机器需要提供相关的Boot脚本来获取和加载FCOS构件。

下面的例子展示了如何直接从Fedora基础设施加载这些文件。出于性能和可靠性的原因,建议将它们镜像到本地基础结构上,然后调整 BASEURL 视需要而定。

#!ipxe

set STREAM stable
set VERSION 35.20220424.3.0
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 ignition.firstboot ignition.platform.id=metal ignition.config.url=${CONFIGURL}
initrd --name main ${BASEURL}/fedora-coreos-${VERSION}-live-initramfs.x86_64.img

boot

使用持久状态

默认情况下,Fedora CoreOS实时环境不会在磁盘上存储任何状态,并在每次引导时从头开始重新配置。但是,您可以选择在文件系统中存储一些持久状态(如容器映像),该文件系统在重新引导后仍然存在。例如,下面是一个Butane配置,它配置一个持久的 /var

variant: fcos
version: 1.1.0
storage:
  disks:
    - device: /dev/sda
      wipe_table: true
      partitions:
        - label: var
  filesystems:
    - device: /dev/disk/by-partlabel/var
      label: var
      format: xfs
      wipe_filesystem: false
      path: /var
      with_mount_unit: true

在引导活动环境时,每次引导时都会运行Ignition配置,因此它应该避免擦除您想要重复使用的Luk卷和文件系统。相反,应该配置这样的结构,以便在第一次引导时创建它们,并在后续引导时保留它们。

尤其要注意以下准则:

  • 避免设置 wipe_filesystemwipe_volume文件系统 或您打算重复使用的Luks卷。(您可以安全地设置 wipe_tablewipe_partition_entry 当重新使用磁盘时,因为它们不会修改 隔断 。)

  • 重新使用LUKS卷时,您必须配置 key_file 。Ignition不能重复使用带夹头的Luks体积。

  • 避免将永久数据写入到RAID卷,因为Ignition不能重复使用这些数据。

  • 在永久存储中写入文件时,设置 overwritetrue 以避免在重新使用已具有该文件的文件系统时发生Ignition故障。避免使用 append 指令,因为每次引导时都会发生追加。

更新流程

由于传统的FCOS升级过程需要磁盘,因此实时环境无法就地自动更新。出于这个原因,津卡迪没有在那里运营。

对于PXE引导的系统,建议定期刷新PXE配置中引用的映像。更新基础设施和配置后,只需重新启动实时PXE实例即可开始运行新的FCOS版本。

对于ISO引导的系统,应该定期刷新用于引导实时环境的ISO映像,并重新引导实例以更新正在运行的操作系统。