SystemConfigs section defines how each system on the image is configured, including boot settings, partition mounting, packages, users, and customization scripts.
System Configuration Structure
Configuration name identifier
Boot type:
efi or legacySystem hostname
Array of partition mounting configurations
Array of package list file paths (relative to config file)
Kernel package selection (required for non-rootfs images)
Kernel command line parameters
Partition Settings
Partition settings define how partitions are mounted:Partition ID (must match partition ID in Disks section)
Mount point path (e.g.,
/, /boot/efi)Mount options (e.g.,
umask=0077)How partition is identified in fstab:
uuid, partuuid, partlabel. Default: partuuidBase image path for rdiff differential images
Base image path for overlay differential images
Basic Partition Settings
Using Partition Labels
partlabel cannot be used with mbr partition tables and requires the Name field in the partition definition.Differential Images
For small, deterministic images, userdiff:
overlay:
Kernel Configuration
Kernel Options
Specify which kernel packages to install:Default kernel package name (e.g.,
kernel)Kernel Command Line
Configure kernel boot parameters:IMA policies:
tcb, appraise_tcb, secure_bootEnable FIPS mode
SELinux mode:
enforcing, permissive, force_enforcingSELinux policy package name. Default:
selinux-policyCGroup version:
version_one or version_twoAdditional kernel parameters appended to command line
IMA and Custom Parameters
FIPS Mode
SELinux
CGroup v2
Boot Configuration
Use
grub2-mkconfig to generate boot config. Default: trueRun systemd-firstboot on first boot. Default:
falseEnable kickstart-style installation with preinstall scripts
Customization Scripts
Execute shell scripts at various points during image generation:Scripts run before partition creation (from installer context)
Scripts run after package installation (from installed system)
Scripts run before image finalization (from installed system)
Script Format
Script execution order: PreInstall → Create Partitions → Install Packages → PostInstall → Configure Bootloader → Finalize
PreInstall Scripts
Run before installation begins (from installer context):PreInstall scripts must set
IsKickStartBoot to true and should create partition configuration at /tmp/part-include.Additional Files
Copy files into the image:Map of source paths to destination paths (or FileConfig objects)
Simple File Copy
Multiple Destinations and Permissions
User Configuration
Define system users:Array of user configurations
User Fields
| Field | Type | Description |
|---|---|---|
Name | string | Username (required) |
UID | string | User ID (0-60000) |
Password | string | Password or hash |
PasswordHashed | boolean | Whether password is hashed |
PasswordExpiresDays | number | Days until expiration (0-99999, -1 for never) |
SSHPubKeyPaths | array | SSH public key file paths |
PrimaryGroup | string | Primary group name |
SecondaryGroups | array | Secondary group names |
StartupCommand | string | Shell/command for user |
HomeDirectory | string | Home directory path |
User Examples
Network Configuration
Configure network interfaces:Array of network interface configurations
Network Fields
BootProto: Protocol (dhcporstatic)GateWay: Gateway IP addressIp: Static IP addressNetMask: Network maskOnBoot: Enable on bootNameServers: Array of DNS serversDevice: Network device name
Package Repositories (ISO Only)
Define custom package repositories for ISO installers:Array of package repository configurations
Repository Fields
Repository name
Repository base URL
Install repo file into final image. Default:
falseVerify package signatures. Default:
trueVerify repository metadata. Default:
trueSpace-separated GPG key paths (e.g.,
file:///path/to/key)Size Optimization
Disable Documentation and Locales
Exclude RPM documentation from image
Locale setting:
NONE or specific locales (e.g., en:fr:es)Custom Locales
Settings are stored in
/usr/lib/rpm/macros.d/macros.installercustomizations_*. To restore on installed system, remove the macro files and run tdnf -y reinstall $(rpm -qa).Advanced Options
Remove RPM database after installation (breaks package managers)
Keep tdnf cache intact (default cleans cache to save space)
Enable stricter hidepid option in
/proc (hidepid=2)Complete Example
Next Steps
Package Lists
Learn about package list configuration
Examples
View complete configuration examples