********
Machines
********

The CoreOS build system provides several machines:

Generic Architecture
====================

Some machines generate code that are generic over a wide range of architecture.

When this is the case, the machine name end with a CoreOS specific architecture
suffix:

x64
---

The x64 suffix is used for machine that generate code that can run on any modern
AMD64 computer. This need at least to be a Core2 Duo processor.

arm32
-----

The arm32 suffix is used to generate code that is compatible with any ARM
processor that is compatible with the ARMv7a Architecture and both the NEON
and VFPv3-D32 extension set.

arm64
-----

The arm64 suffix is used to generate code that is compatible with any ARM
processor that is compatible with the AArch64 architecture.

.. _ref-machine-vm:

Virtual Machines
================

Virtual machines can be used to boot an image on any UEFI compatible virtual
machine hypervisor. The build system generates a virtual machine disk in the 
`.vmdk` format by default.

The following virtual machines are available:

- vm-x64

The `vm` machine override can be used on all these machines.

.. hint::

    When installing using the ISO file, UEFI secure boot should be desactived.
    After the installation, or when using the `.vmdk` file directly, it is
    recommanded to activate the UEFI Secure Boot on the (virtual) machine
    firmware.

    Public key needed by the firmware are available on the EFI partition of the
    image.


.. _ref-machine-container:

Containers
==========

Container machine generate an OCI archive that can be imported on tools like
Podman or Docker. The generate archive doesn't contain a kernel, neither an
init system.

The following container machines are available:

- container-x64
- container-arm32
- container-arm64

The `container` machine override can be used on all these machines.

