Feature: stackit
Description
A platform feature that builds a Garden Linux image for STACKIT, a cloud platform by Schwarz Group, built on OpenStack. The artifact is delivered as a .raw file.
What it does
Installs cloud-init and configures the OpenStack/ConfigDrive datasource for instance initialization. Time synchronization is provided by chrony using the KVM PTP hardware clock (/dev/ptp_kvm) via the ptp_kvm kernel module, which offers nanosecond-level precision by reading the host clock directly via hypercall — no NTP server is required. The ptp_kvm module is loaded at boot via modules-load.d and a udev rule creates the stable /dev/ptp_kvm symlink that chrony and systemd depend on.
Key configurations:
- Time synchronization: replaces
systemd-timesyncdwithchronybacked by the KVM PTP hardware clock. - Cloud-init datasource: configures
ConfigDriveandOpenStackas the primary datasources; disables cloud-init network management. - Cloud-init setup: removes
growpart,resizefs, andntpmodules (partition growth handled in the initramfs; NTP managed bychrony). - Platform variant: writes
GARDENLINUX_PLATFORM_VARIANT=stackitto/etc/os-release. - Architecture handling: removes the
ptp_kvmmodule-load configuration onarm64, whereptp_kvmis built-in rather than a loadable module.
Files
Files present in this feature and their purpose. See the feature file reference for the semantics of each file type.
| File | Purpose |
|---|---|
exec.config (ref) | Strips growpart, resizefs, and ntp from cloud-init; writes GARDENLINUX_PLATFORM_VARIANT=stackit to /etc/os-release; removes ptp_kvm.conf on arm64. |
file.exclude (ref) | Removes from rootfs: the systemd-timesyncd service override and the udf module denylist (both are incompatible with the chrony/PTP setup). |
file.include.markers.yaml (ref) | Maps files to test-coverage marker IDs. |
info.yaml (ref) | Declares type: platform and included/excluded features. |
pkg.exclude (ref) | Prevents installation of systemd-timesyncd (replaced by chrony). |
pkg.include (ref) | Installs cloud-init, chrony, dmidecode, and python3-cffi-backend. |
file.include/etc/chrony/chrony.conf (file.include) | Configures chrony to use the KVM PTP hardware clock (/dev/ptp_kvm) as stratum-1 reference, providing nanosecond-level time synchronization without a network NTP server. |
file.include/etc/cloud/ds-identify.cfg (file.include) | Configures ds-identify to select the OpenStack datasource for cloud-init. |
file.include/etc/cloud/cloud.cfg.d/01_debian-cloud.cfg (file.include) | Debian-specific cloud-init configuration: default user (admin), sudo access, APT sources preservation, and hostname management. |
file.include/etc/cloud/cloud.cfg.d/50-datasource.cfg (file.include) | Restricts cloud-init datasource detection to ConfigDrive, OpenStack, and Ec2. |
file.include/etc/cloud/cloud.cfg.d/99_disable-network-config.cfg (file.include) | Disables cloud-init network configuration management (networking handled by systemd-networkd). |
file.include/etc/kernel/cmdline.d/10-console.cfg (file.include) | Sets kernel console parameters for the STACKIT virtual serial console (tty0 and ttyS0). |
file.include/etc/modules-load.d/ptp_kvm.conf (file.include) | Loads the ptp_kvm kernel module at boot on amd64 (removed on arm64 where it is built-in). |
file.include/etc/systemd/system/chronyd.service.d/10-after_dev-ptp_kvm.device.conf (file.include) | Systemd drop-in that orders chronyd to start after the dev-ptp_kvm.device unit is available. |
file.include/etc/systemd/system-preset/00-chrony-disable.preset (file.include) | Disables chrony-wait.service and chronyd-restricted.service by preset (not needed in this PTP-backed setup). |
file.include/etc/udev/rules.d/60-kvm-ptp.rules (file.include) | Creates a stable /dev/ptp_kvm symlink when the KVM PTP device appears and tags it as a systemd device unit (dev-ptp_kvm.device), enabling service ordering on it. |
Related features
Includes:
cloud— provides the cloud-optimized kernel, shared cloud configuration, and systemd-networkd networking used by all cloud platform features.