In builds folder you will find unofficial multiarch FCOS builds. # Starting with Fedora CoreOS on multi-arch(aarch64, s390x and ppc64le) * What is Fedora CoreOS? Fedora CoreOS (FCOS) is an automatically-updating (not yet on non-intel), minimal operating system for running containerized workloads securely and at scale. It is currently available on multiple platforms (VMs only tested for now), with more coming soon. In general high level terms multi-arch FCOS is no differnt to x86_64. Further reading on general FCOS https://docs.fedoraproject.org/en-US/fedora-coreos/getting-started/ * Ignition Ignition(https://github.com/coreos/ignition/) is a tool used for base setup of the Fedora CoreOS. It draws on the legacy of the original CoreOS container linux's Ignition. Allowing setting up users and manipulating the disks on the first boot of the CoreOS. For running the Fedora CoreOS you will need to provide some ignition config at the first boot at least configuring the user so you can log in. For that we will use a Fedora CoreOS config transpiler (fcct for short, https://github.com/coreos/fcct). Fcct is available in the distribution repository as fedora-coreos-config-transpiler package in Fedora 31 and up. It can generate an ignition config (json) based on a more simple and human readable config file (YAML). Basic config for fcct can look like this simple yaml: variant: fcos version: 1.0.0 passwd: users: - name: core groups: - wheel # public ssh key ssh_authorized_keys: - ssh-rsa AAAAB3NzaC1yc… # sets password for user core, hash translates to "coreos" DO NOT USE THIS ON SYSTEM EXPOSED TO INTERNET!!!!! password_hash: $6$NZ9GK2MckxLvvS.n$2WoyJRAPgwB4M2k5sp7l5JA1Ck.Unooviz2SfDSzosLf6F1NX7kH5NorywRQNBgBJES1PGRXhw07iXlBrAubx/ Where "name" is the name of the user added, "groups" lists groups that the user will be in(in this case wheel) and "ssh-rsa AAAAB3NzaC1yc..." is your public ssh key. It can be usually found in ~/.ssh as .pub and the value is the contents of the file. Assuming that the up mentioned config is saved in file config.yaml you can use "fcct -p -o config.ign config.yaml" to transpile it into the ignition config file named config.ign Its contents will look like this: { "ignition": { "config": { "replace": { "source": null, "verification": {} } }, "security": { "tls": {} }, "timeouts": {}, "version": "3.0.0" }, "passwd": { "users": [ { "groups": [ "wheel" ], "name": "core", "passwordHash": "$6$NZ9GK2MckxLvvS.n$2WoyJRAPgwB4M2k5sp7l5JA1Ck.Unooviz2SfDSzosLf6F1NX7kH5NorywRQNBgBJES1PGRXhw07iXlBrAubx/", "sshAuthorizedKeys": [ "ssh-rsa AAAAB3NzaC1y..." ] } ] }, "storage": {}, "systemd": {} } We will use that file in running the FCOS. See for further details about the fcct config format https://github.com/coreos/fcct/blob/master/docs/configuration-v1_0.md. * Downloading Images are currently built unofficially. There are currently two sources for them. You can use ones built by Guy Menanteau from https://menantea.fedorapeople.org/ (ppc64le only) or me from here (https://fedorapeople.org/groups/fcos-images/). For running in the QEMU kvm you want to download the qcow2 image. There are also OpenStack images for some architectures, but I haven't tried them. They are currently in state it builds, ship it. Any testing, feedback there would be very much appreciated. * Running on (QEMU) KVM After having downloaded the image and having the ignition config ready we continue by running a CoreOS VM using QEMU kvm. You can also use other virt tools, but you will need to pass the ignition config into the VM(see further for each arch). Assuming that the qcow2 image and the config.ign are in the current directory. For aarch64: qemu-system-aarch64 -m 2048 -machine virt,accel=kvm,gic-version=max -cpu host -nographic -drive file=/usr/share/edk2/aarch64/QEMU_EFI-pflash.raw,if=pflash,format=raw,unit=0,readonly=on -snapshot -drive if=virtio,file=fedora-coreos-31.20200507.dev.0-qemu.aarch64.qcow2 -fw_cfg name=opt/com.coreos/config,file=config.ign Most significant part is the "-fw_cfg name=opt/com.coreos/config,file=config.ign" that passes the ignition configuration into the VM. To note you can also run FCOS in VM on rpi4, if you are running any Arm 64bit distribution. Unfortunately fw_cfg is not supported by ppc64le and s390x so we will have to use different ways to inject the ignition config. There are several options, you could bake the ignition config into the image, fetch it from some other host over http, but we will use a special virt-blk device with serial “ignition”, that ignition recognises and reads the config from. For ppc64le qemu-system-ppc64 -m 2048 -machine pseries,accel=kvm,kvm-type=HV -cpu host -nographic -snapshot -drive if=virtio,file=fedora-coreos-31.20200507.dev.0-qemu.ppc64le.qcow2 --drive if=none,id=ignition,format=raw,file=config.ign,readonly=on -device virtio-blk,serial=ignition,drive=ignition For s390x: qemu-system-s390x -machine s390-ccw-virtio,accel=kvm -cpu host -m 2048 -nographic -snapshot -drive id=d1,if=none,file=fedora-coreos-31.20200507.dev.0-qemu.s390x.qcow2 -device virtio-blk-ccw,drive=d1,serial=primary-disk,bootindex=1 -drive if=none,id=ignition,format=raw,file=config.ign,readonly=on -device virtio-blk-ccw,serial=ignition,drive=ignition After the VM has booted you should be able to log in to the machine either via ssh core user and ssh-key authentication (if you have assigned some network interface(s) to your VM) or on console using user core and password coreos. Please note that -snapshot has been used so nothing will be written into the backing images, so all changes will be lost on "poweroff" of the VM. Remove it to preserve the changes. * What is next? Baremetal? Cloud providers? Official images! Please let me know how things (don’t) work for you. I would much appreciate any feedback or help. I would like to thank all the CoreOS contributors and maintainers for all the help on the non-x86_64 CoreOS. # Happy Hacking!