There are two ways of building an image. You can call make
which
calls the Python script debian-cloud-images build script. This script
creates some options and the list of FAI classes for calling
fai-diskimage(8). It can also upload the image to the cloud
provider. This is what the Debian cloud team is using inside the
gitlab CI.
It's also possible to call fai-diskimage(8) directly.
Example 1 nocloud:
# fai-diskimage --hostname debian --class DEBIAN,CLOUD,BUSTER,BACKPORTS,NOCLOUD,AMD64,GRUB_CLOUD_AMD64,LINUX_IMAGE_BASE,LAST --size 2G --cspace ... debian-buster-nocloud.raw
Example 2 genericcloud (OpenStack):
# fai-diskimage --hostname debian --class DEBIAN,CLOUD,BUSTER,BACKPORTS,GENERIC,AMD64,GRUB_CLOUD_AMD64,LINUX_IMAGE_CLOUD,LAST --size 2G --cspace ... debian-buster-genericcloud.raw
Example 3 Azure:
# fai-diskimage --hostname debian --class DEBIAN,CLOUD,BUSTER,BACKPORTS,AZURE,IPV6_DHCP,AMD64,GRUB_CLOUD_AMD64,LINUX_IMAGE_CLOUD,LAST --size 30G --cspace ... debian-buster-azure.raw
Example 4 EC2:
# fai-diskimage --hostname debian --class DEBIAN,CLOUD,SID,EC2,IPV6_DHCP,AMD64,GRUB_CLOUD_AMD64,LINUX_IMAGE_BASE,LAST --size 8G --cspace ... debian-sid-ec2.raw
In these examples we replaced the directory to the config space with ...
CLOUD
: important class, does a lotDEBIAN
: important class, does a lotNOCLOUD
: remove root pw, set grub timeout to 5DISABLE_IPV6
: uses 70-disable-ipv6.conf for disabling itIPV6_DHCP
: enable IPv6 for Azure, EC2EXTRA
: add useful packagesDEVEL
: add packages, NOT USEDGENERIC
: add cloud-init for generic images (others already include cloud-init)TYPE_DEV
: development configs, add tty, set grub timeoutGCE_SDK
: add SDK package for GCEGCE
: provider specific configsAZURE
: provider specific configsEC2
: provider specific configsLAST
: write manifest and do cleanupLINUX_IMAGE_CLOUD
: use the cloud kernelLINUX_IMAGE_BASE
: use the default Debian kernelLOCALDEBS
: for debugging/internal use, use packages from localdebs directoryBACKPORTS_LINUX
: create apt preferences.d file for backportsBACKPORTS
: enable backports repository
These are classes containing architecture specific configs:
- AMD64
- ARM64
- PPC64EL
- GRUB_CLOUD_AMD64
- GRUB_EFI_ARM64
- GRUB_IEEE1275 (Open Firmware on PowerPC)
Release specific classes:
- BULLSEYE
- BUSTER
- SID
Only for internal use:
- BULLSEYE_BUILD
- BUSTER_BUILD
- SID_BUILD