mkosi(1) General Commands Manual mkosi(1) (NAME) mkosi - (SYNOPSIS) mkosi [options...] init mkosi [options...] summary mkosi [options...] cat-config mkosi [options...] build [-- command line...] mkosi [options...] shell [-- command line...] mkosi [options...] boot [-- nspawn settings...] mkosi [options...] vm [-- vmm parameters...] mkosi [options...] ssh [-- command line...] mkosi [options...] journalctl [-- command line...] mkosi [options...] coredumpctl [-- command line...] mkosi [options...] sysupdate [-- sysupdate settings...] mkosi [options...] box [-- command line...] mkosi [options...] dependencies [-- options...] mkosi [options...] clean mkosi [options...] serve mkosi [options...] burn mkosi [options...] bump mkosi [options...] genkey mkosi [options...] documentation [manual] mkosi [options...] completion [shell] mkosi [options...] latest-snapshot mkosi [options...] help (DESCRIPTION) mkosi . dnf apt pacman zypper . (Command Line Verbs) : init mkosi. . tmpfiles.d (cache) mkosi . summary . . cat-config . mkosi . build . . . -- mkosi . shell systemd-nspawn . () chroot . shell . nspawn -- . directory shell ForeignUIDRange= . boot shell systemd systemd-nspawn . boot (kernel command line) init . nspawn -- . directory boot ForeignUIDRange= . disk boot systemd-nsresourced systemd-mountfsd v260 . vm boot ( qemu) . . VirtualMachineMonitor= . -- . directory vm ForeignUIDRange= . ssh Ssh=always sshd-vsock systemd (systemd v256 ) SSH . mkosi ssh mkosi build SSH . SSH SshKey= . mkosi genkey mkosi . ssh ssh . -- . machinectl login machinectl shell . Machine= (hostname) ssh ( mkosi --machine=mymachine vm mkosi --machine=mymachine ssh). journalctl journalctl . journalctl -- journalctl . coredumpctl coredumpctl coredump . coredumpctl -- coredumpctl . sysupdate systemd-sysupdate --transfer-source= --definitions= SysupdateDirectory= . sysupdate -- systemd-sysupdate . box boot shell vm . (tools tree) /usr /usr . $SHELL bash . -- ..TP clean . -f (tools tree) . -f . serve ( mkosi.output/ ) HTTP . -f . machinectl pull-raw ... machinectl pull-tar ... . burn . GPT . bump mkosi.version mkosi.version . : . --auto-bump/-B . mkosi.version . mkosi.bump mkosi . genkey SecureBoot SecureBootKey=/--secure-boot-key= SecureBootCertificate=/--secure-boot-certificate= . documentation mkosi . man mkosi mkosi mkosi-initrd initrd mkosi-sandbox sandbox mkosi.news news man mkosi mkosi-initrd mkosi-sandbox NEWS mkosi . --doc-format . mkosi.1 mkosi/resources Python man . man Markdown mkosi/resources/man/mkosi.1.md pandoc -t man -s -o mkosi.1 mkosi.1.md. completion stdout . bash fish zsh . dependencies mkosi . (pipe) . dnf : mkosi dependencies | xargs -d '\n' dnf install mkosi . . mkosi dependencies -- --profile runtime runtime . ToolsTreeProfiles= . latest-snapshot (mirror) . . . . help --help : . (Command-Line-Only Options) . --force, -f . mkosi . . . ( (FILES) ) . clean : . --directory=, -C . mkosi . . . . --debug . --debug-shell mkosi . --debug-workspace (workspace) mkosi . --debug-sandbox mkosi-sandbox strace . --debug-timing . --version . --help, -h . --genkey-common-name= (Common Name) genkey mkosi . mkosi of %u %u mkosi . --genkey-valid-days= genkey mkosi . ( ) . --auto-bump=, -B bump mkosi.version . : . mkosi.bump mkosi . --doc-format . markdown man pandoc system auto . markdown Markdown . man man . pandoc man . system man mkosi mkosi . auto man pandoc markdown system . --json JSON-SEQ ..TP --wipe-build-dir, -w . --rerun-build-scripts, -R . Incremental= . History= . (Supported output formats) : o GPT systemd-repart (disk) o (directory) o Tar (tar) o CPIO (cpio) o Unified Kernel Image (UKI) o ... . Format= . none mkosi . ( RPM). GPT repart mkosi.repart/ . mkosi reflink ( XFS btrfs) . mkosi reflink (copy-on-write) . (Configuration Settings) ( SomeSetting=value) ( --some-setting=value) . . . : o . o mkosi.local.conf mkosi.local/ ( ). .gitignore ( ) . o . o mkosi.conf --directory= --directory= . mkosi.conf mkosi.tools.conf mkosi/mkosi.conf mkosi/mkosi.tools.conf mkosi/ . o mkosi.conf.d/ mkosi.conf . .conf mkosi.conf.d/ . mkosi.conf.d mkosi.images/ mkosi.tools.conf mkosi.initrd.conf . o mkosi.profiles/ . o mkosi.images/ . . . mkosi.local.conf mkosi.local/ . (SomeSetting= --some-setting=) . . . . [Match] . [Match] . (|) (...=|...) . <<>> (AND) <<>> (OR) . . . [Match] ( ). . [Match] mkosi.conf . . [Match] mkosi.conf.d/ mkosi.local.conf . [Match] . [Match] [Match] . disk directory x86-64 arm64 : [Match] Format=|disk Format=|directory [Match] Architecture=|x86-64 Architecture=|arm64 [TriggerMatch] . systemd . debian bookworm ubuntu noble : [TriggerMatch] Distribution=debian Release=bookworm [TriggerMatch] Distribution=ubuntu Release=noble [TriggerMatch] [Match] <<>> <<>> . [Match] [TriggerMatch] [Match] [TriggerMatch] . (true) . : ( Match) ^ ( TriggerMatch) [Assert] [TriggerAssert] assert [Assert] [TriggertAssert] . = . : 1 yes true 0 no false ..SS [Distribution] Distribution=, --distribution=, -d . : fedora debian kali ubuntu arch opensuse mageia centos rhel rhel-ubi openmandriva rocky alma azure custom. custom . Release=, --release=, -r . ( Fedora Linux CentOS 29) ( Debian Kali Ubuntu artful). . Architecture=, --architecture= . . (foreign architecture) (user mode emulator) . : alpha arc arm arm64 ia64 loongarch64 mips64-le mips-le parisc ppc ppc64 ppc64-le riscv32 riscv64 s390 s390x tilegx x86 x86-64. Mirror=, --mirror=, -m (mirror) . URL . . ( ): x86-64 aarch64 ------------------------------------------------------------------------------------ debian http://deb.debian.org arch https://fastly.mirror.pkgbuild.com http://mirror.archlinuxarm.org opensuse http://download.opensuse.org kali http://http.kali.org/kali ubuntu http://archive.ubuntu.com http://ports.ubuntu.com centos https://mirrors.centos.org rocky https://mirrors.rockylinux.org alma https://mirrors.almalinux.org fedora https://mirrors.fedoraproject.org rhel-ubi https://cdn-ubi.redhat.com mageia https://www.mageia.org openmandriva http://mirrors.openmandriva.org azure https://packages.microsoft.com Snapshot= (snapshot) . snapshot ( snapshot ) latest-snapshot snapshot . Mirror= : x86-64 aarch64 ------------------------------------------------------------------------------------ debian https://snapshot.debian.org arch https://archive.archlinux.org http://mirror.archlinuxarm.org opensuse http://download.opensuse.org ubuntu http://archive.ubuntu.com http://ports.ubuntu.com centos https://composes.stream.centos.org fedora https://kojipkgs.fedoraproject.org snapshot . ToolsTreeSnapshot= . LocalMirror=, --local-mirror= . . deb rpm pacman . --mirror= mkosi --mirror= ( ) . RepositoryKeyCheck=, --repository-key-check= / . --local-mirror= . RepositoryKeyFetch=, --repository-key-fetch= mkosi GPG . Ubuntu Ubuntu Arch Linux RPM . . GPG . dnf pacman zypper . GPG . GPG . archlinux-keyring debian-keyring kali-archive-keyring ubuntu-keyring distribution-gpg-keys ( RPM) . Repositories=, --repositories= . EPEL CentOS Debian/Kali/Ubuntu . [Output] ([Output] Section) Format=, --format=, -t . directory ( ) tar ( tarball ) cpio ( cpio ) disk ( GPT) uki ( PE .initrd) esp ( ESP UKI) oci ( OCI) sysext confext portable addon none ( ). disk systemd-repart . repart RepartDirectories= mkosi.repart/ . verity Verity= systemd-repart mkosi roothash verity JSON systemd-repart mkosi . none ( CleanScripts=) . ( BuildScripts=) . ManifestFormat=, --manifest-format= . json ( JSON ) changelog ( ). . Output=, --output=, -o . image ImageId= ImageVersion= mkosi.images ImageId . OutputDirectory= . image_7.8.raw.xz . OutputExtension=, --output-extension= . . . OutputSize=, --output-size= . . K M G . . CompressOutput=, --compress-output= . (boolean) (xz zstd) . zstd CentOS 8 xz OCI gzip . . shell boot vm . tar cpio uki esp oci addon . CompressLevel=, --compress-level= . . . OutputDirectory=, --output-directory=, -O . mkosi.output/ . OutputMode=, --output-mode= . (octal) . . ImageVersion=, --image-version= . . mkosi.version ( bump --auto-bump ) stdout ( Scripts ). image.raw 0.1 image_0.1.raw . $IMAGE_VERSION ( /usr/lib/os-release IMAGE_VERSION= ). ImageId=, --image-id= . . ( ). $IMAGE_ID . /usr/lib/os-release . Format=oci org.opencontainers.image.ref.name OCI . OciLabels=, --oci-labels= OCI Format=oci . KEY=VALUE . OCI podman inspect docker inspect ( LABEL Containerfile). . . OciAnnotations=, --oci-annotations= OCI Format=oci . KEY=VALUE . OCI . mkosi io.systemd.mkosi.version ImageVersion= org.opencontainers.image.version . . . SplitArtifacts=, --split-artifacts= . uki kernel initrd os-release pcrs partitions roothash kernel-modules-initrd repart-definitions tar. kernel initrd ( UKI) uki UKI . pcrs JSON TPM2 UKI . partitions --split=yes systemd-repart . (man page) . A/B root /usr Verity . tar rootfs tar ( CompressOutput=) . roothash dm-verity dm-verity roothash . kernel-modules-initrd initrd mkosi initrd . initrd initrd . repart-definitions repart . RepartDirectories= . uki kernel initrd . RepartDirectories=, --repart-directory= systemd-repart systemd-repart mkosi . mkosi.repart/ . mkosi repart --root= CopyFiles= . SectorSize=, --sector-size= systemd-repart . Overlay=, --overlay= BaseTrees= . (lower layer) overlayfs (upper layer) . . system extensions systemd . Seed=, --seed= UUID random . (seed) systemd-repart . (reproducible builds) UUID . mkosi.seed UUID . UUID . ElTorito=, --el-torito= El Torito ESP . (boolean) auto . auto . auto El Torito grub BIOS ( ). systemd-repart >= v261 . ElToritoSystem=, --el-torito-system= (system identifier) ISO 9660. ElToritoVolume=, --el-torito-volume= (volume identifier) ISO 9660. ElToritoPublisher=, --el-torito-publisher= (publisher identifier) ISO 9660. CleanScripts=, --clean-script= (clean scripts) . (glob patterns) . SCRIPTS . [Content] Packages=, --package=, -p ( RPM deb ...) . . . BuildPackages= overlay overlay build . (syntax) ( dnf RPM apt deb) / (globs) (virtual provides) . Packages= PackageDirectories= . : dnf meson ( ) libfdisk-devel git- RPM systemd /usr/bin/ld Development Tools mypy . Packages=meson libfdisk-devel.i686 git-* /usr/bin/ld @development-tools python3dist(mypy) BuildPackages=, --build-package= Packages= overlay ( build) . (linkers) mkosi.build . . VolatilePackages=, --volatile-package= Packages= Incremental= . . PackageDirectories=, --package-directory= . mkosi . mkosi.packages/ . VolatilePackageDirectories=, --volatile-package-directory= PackageDirectories= Incremental= . $PACKAGEDIR . $PACKAGEDIR VolatilePackages= . WithRecommends=, --with-recommends= (recommended) (weak) . . apt dnf zypper . WithDocs=, --with-docs= . . . $WITH_DOCS mkosi.build 0 1 . BaseTrees=, --base-tree= . . . CleanPackageMetadata=no ( CleanPackageMetadata= ). tar . (unpack) . git . SkeletonTrees=, --skeleton-tree= (:) . . . . . . mkosi.skeleton/ ( (FILES) ). (skeleton trees) ( Incremental=) ( -ff mkosi -f clean). tar . mkosi.skeleton.tar . SandboxTrees= mkosi SkeletonTrees= mkosi . ExtraTrees=, --extra-tree= . . . . . . mkosi.extra/ ( (FILES) ). tar . mkosi.extra.tar . RemovePackages=, --remove-package= Packages= . . CleanPackageMetadata=no . RemoveFiles=, --remove-files= (glob) . . CleanPackageMetadata=, --clean-package-metadata= / . true false auto () . auto . SourceDateEpoch=, --source-date-epoch= (UNIX epoch) . (modification time) . systemd-repart mkosi . SOURCE_DATE_EPOCH --environment= . (reproducible builds) . SOURCE_DATE_EPOCH . SyncScripts=, --sync-script= (sync) . (glob) . SCRIPTS . PrepareScripts=, --prepare-script= (prepare) . (glob) . SCRIPTS . BuildScripts=, --build-script= (build) . (glob) . SCRIPTS . PostInstallationScripts=, --postinst-script= (post-installation) . (glob) . SCRIPTS . FinalizeScripts=, --finalize-script= (finalize) . (glob) . SCRIPTS . PostOutputScripts=, --postoutput-script= (post output) . (glob) . SCRIPTS . Bootable=, --bootable= (boolean) auto . (bootable) . mkosi EFI ESP . EFI ( Bootloader= ) . auto EFI . (UKI) ESP . esp ESP Bootable= UKI ESP . Bootloader=, --bootloader= none systemd-boot uki grub systemd-boot-signed uki-signed grub-signed . systemd-boot . none EFI . systemd-boot systemd-boot UKI EFI/Linux ESP . uki ( ) UKI EFI/BOOT/BOOTX64.EFI ESP . grub UKI EFI/Linux ESP . UKI grub grub/grub.cfg ESP (chainload) UKI . grub.cfg (shim) EFI//grub.cfg ESP grub ( ) grub/grub.cfg ESP . signed EFI . ( ExtraTrees=) /usr/lib/modules/$version vmlinux vmlinuz . $version make kernelversion Kbuild . : systemd-boot systemd-boot-signed mkosi EFI systemd-boot . . systemd-boot-efi . BiosBootloader=, --bios-bootloader= none grub . none . none BIOS . grub Bootable= grub BIOS . repart mkosi BIOS grub EFI . Bootloader= . Bootloader= BiosBootloader= UEFI BIOS . BIOS grub UUID 21686148-6449-6e6f-744e-656564454649 . EFI BIOS ESP initrd grub . ShimBootloader=, --shim-bootloader= none unsigned signed . none . none shim MokManager ESP . unsigned mkosi EFI shim MokManager . SecureBoot= mkosi EFI . signed mkosi EFI . SecureBoot= mkosi . UEFI (Bootable= Bootloader=) . mkosi shim . UnifiedKernelImages=, --unified-kernel-images= Bootloader= systemd-boot grub (UKI) . none unsigned signed auto . auto . unsigned signed . auto . Type 1 (Boot Loader Specification) . Type 1 . Bootloader= (signed) UKI UnifiedKernelImages= unsigned UKI . Firmware= custom UEFI db ..TP UnifiedKernelImageFormat=, --unified-kernel-image-format= (UKI) . ( Specifiers ) . &e-&k roothash= usrhash= -&h /etc/kernel/tries +&c . : ----------------------------------------------------------- && & &e (Entry Token) &k &h roothash= usrhash= UnifiedKernelImageProfiles=, --uki-profile= UKI. UKI . UKI . mkosi.uki-profiles/ . UKI UKI UKI mkosi . UKI UKIProfile . Initrds=, --initrd= initrd() . initrd . initrd . ( ...) mkosi initrd . initrd . initrd default . initrd mkosi.initrd.conf initrd . mkosi io.mkosi.initrd ( ENVIRONMENT VARIABLES $ARTIFACTDIR ) initrd . initrd initrd() initrd mkosi . InitrdProfiles=, --initrd-profile= initrd . . . lvm LVM . network systemd-networkd . nfs NFS . initrd network . pkcs11 PKCS#11 . plymouth ( ) . raid RAID . InitrdPackages=, --initrd-package= initrd . . . InitrdVolatilePackages=, --initrd-volatile-package= VolatilePackages= initrd . Devicetrees=, --devicetrees= devicetree . (glob) . mkosi devicetree /usr/lib/modules//dtb/ /usr/lib/firmware//device-tree/ /usr/lib/linux-image-/ . UKI .dtbauto . (Type 1 boot entries) . : Devicetrees=rockchip/*,imx.* Rockchip IMX . Splash=, --splash= mkosi . MicrocodeHost=, --microcode-host= true (microcode) . KernelCommandLine=, --kernel-command-line= . root usr verity roothash= usrhash= root= mount.usr= . root=PARTUUID mount.usr=PARTUUID (UUID) root usr . root=PARTUUID root=PARTUUID=58c7d0b2-d224-4834-a16f-e036322e88f7 58c7d0b2-d224-4834-a16f-e036322e88f7 UUID root . KernelModules=, --kernel-modules= (glob) . (-) . . . .ko . /usr/lib/module/ /usr/lib/module//kernel/foo/bar.ko.xz kernel/foo/bar . "/" . /usr/lib/module//kernel /usr/lib/module// . (in-tree) kernel/ . /usr/lib/module//kernel/foo/bar.ko.xz /foo/bar /kernel/foo/bar . ( loop) ( block/loop) ( /drivers/block/loop) . / . (* ? [...-...]). default mkosi-initrd . host . KernelModulesInitrd=, --kernel-modules-initrd= (true) . mkosi initrd . initrd initrd initrd . initrd UKI . initrd . initrd initrd . initrd . KernelInitrdModules=, --kernel-modules-initrd-include= KernelModules= initrd . FirmwareFiles=, --firmware-files= (glob) (firmware) . KernelModules= /usr/lib/firmware/ . . . : FirmwareFiles=cxgb4/bcm8483.bin FirmwareFiles=bcm8483.* /usr/lib/firmware/cxgb4/bcm8483.bin.xz . Locale=, --locale=, LocaleMessages=, --locale-messages=, Keymap=, --keymap=, Timezone=, --timezone=, Hostname=, --hostname=, RootShell=, --root-shell= Locale= --locale= LocaleMessages= --locale-messages= Keymap= --keymap= Timezone= --timezone= Hostname= --hostname= RootShell= --root-shell= systemd-firstboot . systemd-firstboot(1) . (credentials) systemd /usr/lib/credstore /usr . RootPassword=, --root-password=, (root) . mkosi.rootpw (stdout) ( SCRIPTS ). hashed: . /usr/lib/credstore credential systemd /usr . hashed: . Autologin=, --autologin=, -a (autologin) root /dev/pts/0 (nspawn) /dev/tty1 /dev/hvc0 . MakeInitrd=, --make-initrd= /etc/initrd-release /init initramfs . Ssh=, --ssh= sshd . always never auto runtime . auto . auto sshd systemd-ssh-generator always mkosi sshd SSH VSock . never mkosi . runtime mkosi SSH mkosi vm . mkosi vm mkosi ssh / SSH . openssh mkosi ssh . mkosi genkey X.509 mkosi SSH mkosi ssh . mkosi boot machinectl . systemd v256 systemd-ssh-generator(8) sshd VSock . systemd . openssh --vsock=auto VSock . : SELinux sshd mkosi VSock . SELinux ( enforcement) ( audit2allow). SELinuxRelabel=, --selinux-relabel= SELinux . auto . auto . . SELinux setfiles . setfiles . auto mkosi SELinux setfiles . setfiles . (unprivileged) setfiles SELinux . setfiles mkosi root SELinux . MachineId=, --machine-id= UUID random . (machine ID) UUID . random UUID /etc/machine-id . mkosi.machine-id UUID . uninitialized /etc/machine-id ..SS [Validation] SecureBoot=, --secure-boot= systemd-boot ( ) (unified kernel image) UEFI SecureBoot. SecureBootAutoEnroll=, --secure-boot-auto-enroll= secure boot systemd-boot(7) SecureBoot= . systemd-boot systemd v253 secure boot . systemd v252 (bare metal) (extra tree) systemd-boot secure-boot-enroll force secure-boot-enroll manual /efi/loader/loader.conf . v252 systemd . yes . SecureBootKey=, --secure-boot-key= PEM UEFI SecureBoot= PCR SignExpectedPcr= . SecureBootKeySource= . SecureBootCertificate=, --secure-boot-certificate= X.509 UEFI SecureBoot= . SecureBootSignTool=, --secure-boot-sign-tool= PE secure boot. systemd-sbsign sbsign auto . auto . auto systemd-sbsign sbsign systemd-sbsign . Verity=, --verity= verity (extension images) . signed hash defer auto . signed verity verity systemd-repart . verity systemd-repart . hash mkosi systemd-repart verity . defer verity . auto verity mkosi systemd-repart verity verity systemd-repart . / verity disk . VerityKey=, --verity-key= PEM verity verity systemd-repart . VerityKeySource= . VerityCertificate=, --verity-certificate= X.509 verity verity systemd-repart . SignExpectedPcr=, --sign-expected-pcr= (UKI) systemd-measure PCR . auto ( ) systemd-measure PATH auto true . SecureBoot= SecureBootKey= . SignExpectedPcrKey=, --sign-expected-pcr-key= PEM PCR . SignExpectedPcrKeySource= . SignExpectedPcrCertificate=, --sign-expected-pcr-certificate= X.509 PCR . SignInitrdPCRs=, --sign-initrd-pcrs= PCR initrd . NvPCRs . auto PCR ( SignExpectedPcr=) ukify v262 true . SignExpectedPcrKey= . SecureBootKeySource=, --secure-boot-key-source=, VerityKeySource=, --verity-key-source=, SignExpectedPcrKeySource=, --sign-expected-key-source= (engines) (providers) OpenSSL --secure-boot-key-source=engine:pkcs11 --secure-boot-key-source=provider:pkcs11. SecureBootCertificateSource=, --secure-boot-certificate-source=, VerityCertificateSource=, --verity-certificate-source=, SignExpectedPcrCertificateSource=, --sign-expected-certificate-source= OpenSSL --secure-boot-certificate-source=provider:pkcs11. (engines) . Passphrase=, --passphrase= (passphrase) LUKS. ( cryptsetup /etc/crypttab ). 0600 . . Encrypt=key-file mkosi.repart/ . Checksum=, --checksum= .SHA256SUMS . Sign=, --sign= SHA256SUMS gpg . OpenPGPTool=, --openpgp-tool= OpenPGP . gpg . Stateless OpenPGP (SOP) SHA256SUMS . sqop rsop https://www.openpgp.org/about/sop . Key=, --key= gpg SHA256SUMS. (keyring) gpg ..SS [Build] ToolsTree=, --tools-tree= mkosi . . mkosi.tools/ . mkosi clean -f . ExtraSearchPaths= /usr/ . . yes mkosi . mkosi.tools.conf . TOOLS TREE . ToolsTreeDistribution=, --tools-tree-distribution= . ( ) Ubuntu Debian RHEL CentOS Alma Rocky Fedora custom . ToolsTreeRelease=, --tools-tree-release= . mkosi . ToolsTreeProfiles=, --tools-tree-profile= . devel misc package-manager runtime . devel gui . devel (C/C++) . misc . . runtime systemd-nspawn . gui . ToolsTreeMirror=, --tools-tree-mirror= (mirror) . . ToolsTreeSnapshot=, --tools-tree-snapshot= Snapshot= . . ToolsTreeRepositories=, --tools-tree-repository= Repositories= . ToolsTreeSandboxTrees=, --tools-tree-sandbox-tree= SandboxTrees= . ToolsTreePackages=, --tools-tree-package= . . . ToolsTreePackageDirectories=, --tools-tree-package-directory= PackageDirectories= . ToolsTreeCertificates=, --tools-tree-certificates= . . /etc/pki/ca-trust /etc/pki/tls /etc/ssl /etc/ca-certificates /var/lib/ca-certificates . . ExtraSearchPaths=, --extra-search-path= $PATH. Incremental=, --incremental=, -i strict . . (prepare) mkosi.build ( ) . mkosi -i . . -i -ff . strict . CacheOnly=, --cache-only= auto metadata always never . auto . always . . metadata . auto ( Incremental= ) ( ). . never . SandboxTrees=, --sandbox-tree= . mkosi . . . . mkosi.sandbox/ ( FILES ). mkosi . /usr /etc . dnf /etc/dnf/dnf.conf . WorkspaceDirectory=, --workspace-directory= . . $XDG_CACHE_HOME ( ) $CACHE_DIRECTORY ( ) $HOME/.cache ( ) /var/tmp . . mkosi ( ) . CacheDirectory=, --cache-directory= Incremental= . mkosi.cache/ . CacheKey=, --cache-key= . ( Specifiers ) . &d~&r~&a~&I . : ------------------------------------------------------ && & &d Distribution= &r Release= &a Architecture= &i ImageId= &v ImageVersion= &I mkosi.images/ main . PackageCacheDirectory=, --package-cache-dir= . mkosi.pkgcache/ . BuildDirectory=, --build-directory= ( Meson) . ( ...) . $BUILDDIR . mkosi-chroot (mount) . mkosi.builddir/ ( FILES ). BuildKey=, --build-key= . ( Specifiers ) CacheKey= . &d~&r~&a . - . UseSubvolumes=, --use-subvolumes= auto . btrfs . mkosi btrfs btrfs . btrfs . auto btrfs . RepartOffline=, --repart-offline= loopback . . systemd-repart loopback . systemd-repart loopback . RepartOffline=no mkosi root loopback . RepartOffline=no . Subvolumes= repart loopback . SELinux XFS . mkfs.xfs XFS loopback SELinux XFS . History=, --history= . mkosi .mkosi-private . . : mkosi -O my-custom-output-dir -f mkosi vm mkosi . mkosi -O my-custom-output-dir --history=yes -f mkosi vm . BuildSources=, --build-sources= . . . /work/src . /work/src . BuildSourcesEphemeral=, --build-sources-ephemeral= buildcache . . BuildSources= . ( ) . buildcache (overlay) BuildDirectory= . . . . Environment=, --environment= prepare/build/postinstall/finalize . . mkosi . . . EnvironmentFiles=, --env-file= . mkosi.env . mkosi.env ( ) Environment= . WithTests=, --with-tests=, -T (false) ( ) mkosi.build $WITH_TESTS 0 . . mkosi.build . WithNetwork=, --with-network= (true) mkosi.build . . $WITH_NETWORK mkosi.build . ProxyUrl=, --proxy-url= . mkosi . mkosi . ProxyExclude=, --proxy-exclude= . . ProxyPeerCertificate=, --proxy-peer-certificate= . . dnf dnf5 . ProxyClientCertificate=, --proxy-client-certificate= . dnf dnf5 . ProxyClientKey=, --proxy-client-key= . . dnf dnf5 . MakeScriptsExecutable=, --make-scripts-executable= ( SCRIPTS ) chmod . no . ForeignUIDRange=, --foreign-uid-range= UID UID . mkosi shell mkosi boot mkosi vm . systemd-nsresourced systemd-mountfsd . NSpawnSettings=, --settings= .nspawn systemd-nspawn boot shell . systemd-nspawn . mkosi.nspawn . VirtualMachineMonitor=, --vmm= . qemu vmspawn . qemu . qemu qemu . qemu . qemu qemu . vmspawn systemd-vmspawn vmspawn . systemd-vmspawn vmspawn . Console=, --console= . interactive read-only native gui headless . interactive . interactive . read-only . native TTY qemu ( qemu ). gui qemu . headless . headless qemu . CPUs=, --cpus= CPU . 2 . 0 CPU mkosi . RAM=, --ram= RAM . 2G . MaxMem=, --maxmem= (RAM + ) . RAM . KVM=, --kvm= KVM . auto . auto . CXL=, --cxl= CXL . cxl . . false . VSock=, --vsock= vsock . auto . auto . VSockCID=, --vsock-cid= vsock . [3, 0xFFFFFFFF) hash auto . auto . hash . auto mkosi . . TPM=, --tpm= TPM . auto . auto . Removable=, --removable= . . no . DiskType= SCSI . DiskType=, --disk-type= . virtio-blk virtio-scsi nvme scsi-cd . virtio-blk . scsi-cd CD-ROM ISO El Torito . Firmware=, --firmware= . uefi uefi-secure-boot linux linux-noinitrd auto . auto . uefi OVMF . uefi-secure-boot OVMF . linux . Linux= . linux-noinitrd linux initrd . auto uefi-secure-boot linux . FirmwareVariables=, --firmware-variables= . uefi uefi-secure-boot . mkosi . microsoft . microsoft-mok MokList SecureBootCertificate= . shim EFI . custom SecureBootCertificate= . virt-fw-vars virt-firmware OVMF . Linux=, --linux= qemu . mkosi ( -kernel) ( ). cpio . qemu . ( Specifiers ) . : ------------------------------------------------------ && & &b ( ) Drives=, --drive= . :[:[:[:[:]]]] . id . drive= qemu . size . . K M G . directory . /var/tmp . options -blockdev qemu . file-id . . . . flags persist . persist qemu . //mkosi-drive-- . myfs:1G::::persist /var/tmp/mkosi-drive-main-myfs . :.IP [Runtime] Drives=btrfs:10G ext4:20G QemuArgs=-device nvme,serial=btrfs,drive=btrfs -device nvme,serial=ext4,drive=ext4 QemuArgs= qemu. Ephemeral=, --ephemeral= shell boot vm (snapshot) . reflink (btrfs xfs) (ext4) . Credentials=, --credential= mkosi shell/boot mkosi vm systemd-nspawn . key=value . . . . . (=) . KernelCommandLineExtra=, --kernel-command-line-extra= . systemd . VM OEM SMBIOS io.systemd.stub.kernel-cmdline-extra . systemd-boot systemd-stub v254 . RuntimeTrees=, --runtime-tree= (colon) . ( VM) mkosi (mount) . . /root/src . /root/src . uid gid mkosi root . root root mkosi . mkosi vm v254 systemd . RuntimeSize=, --runtime-size= mkosi boot mkosi vm . . K M G . RuntimeNetwork=, --runtime-network= user interface none . user . . user (usermode networking) . interface . mkosi shell mkosi boot veth mkosi vm mkosi vmspawn tap . interface mkosi . systemd-networkd . RuntimeBuildSources=, --runtime-build-sources= mkosi boot mkosi vm BuildSources= ( ) /work . BindUser=, --bind-user= /vm (bind mount) . . . SshKey=, --ssh-key= X.509 PEM mkosi vm Ssh= ( systemd-ssh-generator ) mkosi ssh. mkosi.key . mkosi.key mkosi genkey . SshCertificate=, --ssh-certificate= X.509 PEM SSH mkosi vm. mkosi.crt . mkosi.crt mkosi genkey . Machine=, --machine= . SSH ( mkosi --image=myimage ssh). Ephemeral= . . Register=, --register= auto . / systemd-machined . mkosi / systemd-machined . mkosi / systemd-machined . auto systemd-machined mkosi / . auto . mkosi (user session) systemd-machined . systemd-machined v259 systemd . ForwardJournal=, --forward-journal= journal . .journal journal . journal . v256 systemd . .journal journal 4G . 4G journal . StorageTargetMode=, --storage-target-mode= serve systemd-storagetm NVME-TCP . auto . systemd-storagetm mkosi . systemd-storagetm . auto systemd-storagetm mkosi serve root systemd-storagetm . SysupdateDirectory=, --sysupdate-directory= systemd-sysupdate mkosi sysupdate . mkosi.sysupdate/ . mkosi sysupdate systemd-sysupdate --transfer-source= mkosi . PathRelativeTo=explicit Path= mkosi . PathRelativeTo=explicit Path=/ mkosi . Profiles= . Distribution= . Release= (Release) . . Architecture= . . Architecture=uefi UEFI . Repositories= Repositories= . . OutputFormat= OutputFormat= . PathExists= . . ImageId= (Image ID) glob . . ImageVersion= . UAPI == != >= <= < > . . . Bootable= Bootable= . (boolean) auto . Bootloader= Bootloader= . Format= Format= . ( Format= ). SystemdVersion= systemd ( systemctl --version) . UAPI == != >= <= < > . . BuildSources= ( BuildSources= ). . mkosi.conf : [Build] BuildSources=../abc/qed:kernel drop-in : [Match] BuildSources=kernel drop-in . . HostArchitecture= . Architecture= . ToolsTreeDistribution= (tools tree) . ToolsTreeRelease= (tools tree) . Environment= / Environment= . . Image= ( ) . mkosi.images/ ( .conf). (top level) main . Image=main . glob : Glob ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Profiles= Distribution= Release= Architecture= PathExists= ImageId= ImageVersion= Bootable= auto Format= SystemdVersion= BuildSources= HostArchitecture= ToolsTreeDistribution= ( ToolsTreeDistribution= [Build] ) ToolsTreeRelease= Environment= Image= [Include] Include=, --include=, -I . . Include= . initrd (tools tree) UKI mkosi mkosi-initrd mkosi-tools mkosi-vm mkosi-addon . : mkosi- contrib- mkosi . [Config] Profiles=, --profile= . mkosi.profiles/ . (drop-in) mkosi.conf.d/*.conf . Dependencies=, --dependency= . . <<>> ("main") . BUILDING MULTIPLE IMAGES . MinimumVersion=, --minimum-version= mkosi . . commit: mkosi checkout (ancestor) checkout mkosi . ConfigureScripts=, --configure-script= . (Glob patterns) . SCRIPTS . PassEnvironment=, --pass-environment= . <<>> ("universal") . BUILDING MULTIPLE IMAGES . [UKIProfile] UKIProfile UKI UnifiedKernelImageProfiles= . UKIProfile : Profile= .profile UKI. / = . ID= . https://uapi-group.org/specifications/specs/unified_kernel_image/#multi-profile-ukis UKI . Cmdline= UKI. . .cmdline .cmdline . SignExpectedPcr= PCR UKI. (boolean) . . (Specifiers) . % %% . : tab( ); l l. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Distribution= %d Release= %r Architecture= %a Format= %t Output= %o OutputDirectory= %O ImageId= %i ImageVersion= %v : ---------------------------------------------------------------------- %C %P %D mkosi %I mkosi.images : ---------------------------------------------------------------------- %F mkosi . mkosi mkosi.conf ..PP mkosi --directory= . : $D/mkosi.conf $D/mkosi.conf.d/abc/abc.conf $D/mkosi.conf.d/abc/mkosi.conf -------------------------------------------------------------------------------------- %C $D $D/mkosi.conf.d $D/mkosi.conf.d/abc %P $D $D $D/mkosi.conf.d/abc %D $D $D $D (Supported distributions) : o Fedora Linux o Debian o Kali Linux o Ubuntu o Arch Linux o openSUSE o Mageia o CentOS o RHEL o RHEL UBI o OpenMandriva o Rocky Linux o Alma Linux o Azure Linux o postmarketOS o None ( rootfs ) . apt Debian Kali Ubuntu . dnf RPM . pacman Arch Linux . zypper openSUSE . (embedded) Buildroot OpenEmbedded Yocto Project custom rootfs . Fedora Linux Fedora 28 . RHEL RHEL ( subscription-manager ) . (EXECUTION FLOW) mkosi build. / . --incremental=yes () mkosi . 1. (CLI) 2. 3. (mkosi.configure) 4. root (unshare user namespace) subuid /etc/subuid /etc/subgid . 5. (unshare mount namespace) 6. : o /usr o /etc o /opt o /srv o /boot o /efi o /media o /mnt : 1. (sandbox trees) 2. 3. (mkosi.sync) 4. (--base-tree=) 5. 6. (snapshot) 7. (mkosi.skeleton) 8. 9. final (mkosi.prepare) 10. (overlay) 11. overlay build (mkosi.prepare) 12. (--incremental=yes) 13. + overlay (mkosi.build) 14. none 15. 16. (mkosi.extra) 17. (mkosi.postinst) 18. Ssh= Autologin= MakeInitrd= 19. systemd-boot (--secure-boot=yes) 20. systemd-sysusers 21. systemd-tmpfiles 22. systemctl preset-all 23. depmod 24. systemd-firstboot.IP "25." 4 systemd-hwdb 26. (RemovePackages= RemoveFiles=) 27. SELinux SELinux 28. (mkosi.finalize) 29. (unified kernel image) 30. 31. (mkosi.postoutput) (SCRIPTS) mkosi mkosi . ( mkosi ) . (BuildSources=) (mount) . $SRCDIR . : o mkosi.configure (ConfigureScripts=) . . JSON stdin JSON stdout . ( build vm boot shell) . (tools tree) . summary . o mkosi.sync (SyncScripts=) . . git pull . BuildSourcesEphemeral= BuildSourcesEphemeral= . o mkosi.prepare (PrepareScripts=) final . overlay build . ( pip npm ...) (cache) ( ) . (pip install npm install -g) $SRCDIR . o mkosi.build (BuildScripts=) overlay . $DESTDIR . make- automake- meson- $DESTDIR . $DESTDIR . o mkosi.postinst (PostInstallationScripts=) () . . o mkosi.finalize (FinalizeScripts=) . o mkosi.postoutput (PostOutputScripts=) . SHA256FILES SBOM . o mkosi.clean (CleanScripts=) . mkosi ( SplitArtifacts=partitions RPM ) . . o mkosi.version ImageVersion= stdout . git describe date '+%Y-%m-%d'. (sandboxing) . o mkosi.rootpw RootPassword= stdout . stderr $MKOSI_CONFIG ( mkosi.postoutput) . (sandboxing) . .chroot mkosi mkosi-chroot ( ) chroot . mkosi.postinst.chroot mkosi chroot . mkosi (lexicographical) .d mkosi.build.d . : o mkosi.sync.d o mkosi.prepare.d o mkosi.build.d o mkosi.postinst.d o mkosi.finalize.d o mkosi.postoutput.d o mkosi.clean.d. .chroot mkosi.build.d/01-foo.sh chroot mkosi.build.d/02-bar.sh.chroot chroot . mkosi : o $ARCHITECTURE Architecture= . Architecture= . Architecture= . o $QEMU_ARCHITECTURE $ARCHITECTURE qemu . qemu ( qemu-system-$QEMU_ARCHITECTURE). o $EFI_ARCHITECTURE $ARCHITECTURE UEFI . UEFI (unset) . o $DISTRIBUTION Distribution= . o $RELEASE Release= . o $DISTRIBUTION_ARCHITECTURE $ARCHITECTURE . o $PROFILES Profiles= . o $CACHED 1 0 . o $CHROOT_SCRIPT . mkosi-chroot . mkosi-chroot . o $SRCDIR mkosi . $CHROOT_SRCDIR $SRCDIR mkosi-chroot ..IP o 2 $BUILDDIR mkosi.builddir . (out-of-tree) . $CHROOT_BUILDDIR $BUILDDIR mkosi-chroot . o $DESTDIR . . $CHROOT_DESTDIR $DESTDIR mkosi-chroot . o $OUTPUTDIR (staging) . $CHROOT_OUTPUTDIR $OUTPUTDIR mkosi-chroot . o $PACKAGEDIR . $PACKAGEDIR\[u060C] . o $ARTIFACTDIR mkosi . PACKAGEDIR initrd mkosi. $ARTIFACTDIR\[u060C] . $OUTPUTDIR . mkosi . mkosi : o io.mkosi.microcode: (microcode) initrd . o io.mkosi.initrd: initrd . $ARTIFACTDIR local.my.namespace. o $BUILDROOT (build overlay) (mount) . o $WITH_DOCS (WithDocs=yes) 0 1 . $WITH_DOCS 0 $DESTDIR . o $WITH_TESTS (WithTests=no) 0 1 . $WITH_TESTS 0 . o $WITH_NETWORK (WithNetwork=no) 0 1 . $WITH_NETWORK 0 . o $SOURCE_DATE_EPOCH (SourceDateEpoch=TIMESTAMP Environment=SOURCE_DATE_EPOCH=TIMESTAMP $SOURCE_DATE_EPOCH). . SOURCE_DATE_EPOCH . o $MKOSI_UID $MKOSI_GID (uid) (gid) mkosi . o $MKOSI_CONFIG json . . o $IMAGE_ID ImageId= --image-id= . o $IMAGE_VERSION ImageVersion= --image-version= . o $MKOSI_DEBUG 0 1 . : configure sync prepare build postinst finalize postoutput clean ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ARCHITECTURE \/ \/ \/ \/ \/ \/ \/ \/ ARTIFACTDIR \/ \/ \/ \/ BUILDDIR \/ \/ \/ BUILDROOT \/ \/ \/ \/ CACHED \/ CHROOT_BUILDDIR \/ CHROOT_DESTDIR \/ CHROOT_OUTPUTDIR \/ \/ CHROOT_SCRIPT \/ \/ \/ \/ CHROOT_SRCDIR \/ \/ \/ \/ MKOSI_DEBUG \/ \/ \/ \/ \/ \/ \/ \/ DESTDIR \/ DISTRIBUTION \/ \/ \/ \/ \/ \/ \/ \/ DISTRIBUTION_ARCHITECTURE \/ \/ \/ \/ \/ \/ \/ \/ EFI_ARCHITECTURE \/ \/ \/ \/ \/ \/ \/ \/ IMAGE_ID \/ \/ \/ \/ \/ \/ \/ \/ IMAGE_VERSION \/ \/ \/ \/ \/ \/ \/ \/ MKOSI_CONFIG \/ \/ \/ \/ \/ \/ \/ MKOSI_GID \/ \/ \/ \/ \/ \/ \/ \/ MKOSI_UID \/ \/ \/ \/ \/ \/ \/ \/ OUTPUTDIR \/ \/ \/ \/ PACKAGEDIR \/ \/ \/ \/ PROFILES \/ \/ \/ \/ \/ \/ \/ QEMU_ARCHITECTURE \/ RELEASE \/ \/ \/ \/ \/ \/ \/ \/ SOURCE_DATE_EPOCH \/ \/ \/ \/ \/ SRCDIR \/ \/ \/ \/ \/ \/ \/ \/ WITH_DOCS \/ \/ WITH_NETWORK \/ \/ \/ \/ WITH_TESTS \/ \/ $PATH . o 2 mkosi-chroot: chroot . chroot ($SRCDIR $DESTDIR $BUILDDIR $OUTPUTDIR $CHROOT_SCRIPT) (mount) . APIVFS (/proc /dev ...) chroot . /etc/resolv.conf chroot DNS chroot . mkosi-chroot . 2 ls : mkosi-chroot ls ... .chroot (mkosi.build.chroot mkosi.build ). o 2 (dnf rpm apt dpkg pacman zypper) $PATH . dnf install vim vim . 2 mkosi-install mkosi-reinstall mkosi-upgrade mkosi-remove . o 2 git safe.directory=* root (user namespace) . o 2 useradd groupadd --root=$BUILDROOT . (/home /var /root ...) . mkosi root . (ephemeral) . (cache) . " (FILES)" mkosi (source) . : o 2 mkosi.skeleton/ mkosi.skeleton.tar . . systemd . 2 : root . tar . o 2 mkosi.extra/ mkosi.extra.tar . mkosi.skeleton/ mkosi.skeleton.tar . 2 : root . tar . o 2 mkosi.sandbox/ mkosi.sandbox.tar . mkosi.skeleton/ mkosi.skeleton.tar . 2 : root . tar . o 2 nspawn mkosi.nspawn . nspawn . o 2 mkosi.cache/ . o 2 mkosi.builddir/ mkosi.build (out-of-tree) . $BUILDDIR . automake ninja . mkosi (-i) : . $BUILDDIR (in-tree) (out-of-tree) . o 2 mkosi.rootpw root . hashed: root . . 0600 . root ( root ). o 2 mkosi.passphrase (passphrase) LUKS . ( cryptsetup /etc/crypttab ). 0600 . o 2 mkosi.crt mkosi.key X.509 PEM (UEFI SecureBoot verity ...) . o 2 mkosi.output/ . o 2 mkosi.credentials/ Credentials= . mkosi stdout . stderr . Credentials= mkosi.credentials . o 2 mkosi.repart/ systemd-repart systemd-repart . RepartDirectories= mkosi : 2 00-esp.conf ( ): [Partition] Type=esp Format=vfat CopyFiles=/boot:/ CopyFiles=/efi:/ SizeMinBytes=512M SizeMaxBytes=512M 05-bios.conf ( BIOS ): [Partition] # UUID of the grub BIOS boot partition which grubs needs on GPT to # embed itself into. Type=21686148-6449-6e6f-744e-656564454649 SizeMinBytes=1M SizeMaxBytes=1M 10-root.conf [Partition] Type=root Format= CopyFiles=/ Minimize=guess mkosi.repart/ RepartDirectories= . . mkosi.conf . " (CACHING)" mkosi . : "1." 3 . PackageCacheDirectory= mkosi.pkgcache/ . (RPM deb ...) (unpack) . "2." 3 CacheDirectory= mkosi.cache/ . CacheOnly= ( Incremental= ). . "3." 3 Incremental=yes build overlay ( build overlay) mkosi.build ( ) . . "4." 3 BuildDirectory= mkosi.builddir/ . Meson mkosi.build . " (TOOLS TREES)" (Tools trees) mkosi . mkosi . ToolsTree= mkosi.tools ToolsTree=yes mkosi . . mkosi mkosi include : mkosi --include=mkosi-tools --format=directory ToolsTree*= mkosi.tools.conf . . : tab( ); lw(18.8n) cw(6.0n) cw(6.0n) cw(6.0n) cw(4.5n) cw(6.0n) cw(4.5n) cw(7.5n) cw(10.5n). Fedora CentOS Debian Kali Ubuntu Arch openSUSE postmarketOS ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- acl \/ \/ \/ \/ \/ \/ \/ \/ apt \/ \/ \/ \/ \/ \/ archlinux-keyring \/ \/ \/ \/ \/ \/ attr \/ \/ \/ \/ \/ \/ \/ \/ bash \/ \/ \/ \/ \/ \/ \/ \/ btrfs-progs \/ \/ \/ \/ \/ \/ \/ \/ ca-certificates \/ \/ \/ \/ \/ \/ \/ \/ coreutils \/ \/ \/ \/ \/ \/ \/ \/ cpio \/ \/ \/ \/ \/ \/ \/ \/ createrepo_c \/ \/ \/ \/ \/ \/ \/ \/ curl \/ \/ \/ \/ \/ \/ \/ \/ debian-keyring \/ \/ \/ \/ \/ \/ \/ diffutils \/ \/ \/ \/ \/ \/ \/ \/ distribution-gpg-keys \/ \/ \/ \/ \/ \/ \/ dnf \/ \/ \/ \/ \/ \/ \/ \/ dosfstools \/ \/ \/ \/ \/ \/ \/ \/ e2fsprogs \/ \/ \/ \/ \/ \/ \/ \/ edk2-ovmf \/ \/ \/ \/ \/ \/ \/ \/ erofs-utils \/ \/ \/ \/ \/ \/ \/ \/ findutils \/ \/ \/ \/ \/ \/ \/ \/ git \/ \/ \/ \/ \/ \/ \/ \/ grep \/ \/ \/ \/ \/ \/ \/ \/ grub-tools \/ \/ \/ \/ \/ \/ jq \/ \/ \/ \/ \/ \/ \/ \/ kali-archive-keyring \/ kmod \/ \/ \/ \/ \/ \/ \/ \/ less \/ \/ \/ \/ \/ \/ \/ \/ mtools \/ \/ \/ \/ \/ \/ \/ \/ nano \/ \/ \/ \/ \/ \/ \/ \/ opensc \/ \/ \/ \/ \/ \/ \/ \/ openssh \/ \/ \/ \/ \/ \/ \/ \/ openssl \/ \/ \/ \/ \/ \/ \/ \/ pkcs11-provider \/ \/ \/ \/ \/ \/ \/ \/ perf \/ \/ \/ \/ \/ \/ \/ sed \/ \/ \/ \/ \/ \/ \/ \/ pacman \/ \/ \/ \/ \/ \/ \/ p11-kit \/ \/ \/ \/ \/ \/ \/ \/ policycoreutils \/ \/ \/ \/ \/ \/ \/ qemu \/ \/ \/ \/ \/ \/ \/ \/ sbsigntools \/ \/ \/ \/ \/ \/ \/ \/ socat \/ \/ \/ \/ \/ \/ \/ \/ squashfs-tools \/ \/ \/ \/ \/ \/ \/ \/ strace \/ \/ \/ \/ \/ \/ \/ \/ swtpm \/ \/ \/ \/ \/ \/ \/ \/ systemd \/ \/ \/ \/ \/ \/ \/ \/ ukify \/ \/ \/ \/ \/ \/ \/ \/ tar \/ \/ \/ \/ \/ \/ \/ \/ ubuntu-keyring \/ \/ \/ \/ \/ \/ util-linux \/ \/ \/ \/ \/ \/ \/ \/ virtiofsd \/ \/ \/ \/ \/ \/ \/ \/ virt-firmware \/ \/ \/ \/ \/ \/ \/ \/ xfsprogs \/ \/ \/ \/ \/ \/ \/ \/ xz \/ \/ \/ \/ \/ \/ \/ \/ zstd \/ \/ \/ \/ \/ \/ \/ \/ zypper \/ \/ \/ \/ \/ \/ " (BUILDING MULTIPLE IMAGES)" mkosi.images/ mkosi . mkosi .conf . mkosi.images/ mkosi Dependencies= ( Dependencies= ). Dependencies= . . mkosi ( mkosi.images/) . "multiversal" : o 2 RepositoryKeyCheck= o 2 RepositoryKeyFetch= o 2 SourceDateEpoch= o 2 WorkspaceDirectory= o 2 PackageCacheDirectory= o 2 BuildSources= o 2 BuildSourcesEphemeral= o 2 ProxyClientCertificate= o 2 ProxyClientKey= o 2 ProxyExclude= o 2 ProxyPeerCertificate= o 2 ProxyUrl= o 2 MakeScriptsExecutable= "universal" . : o 2 Architecture= o 2 BuildDirectory= o 2 CacheDirectory= o 2 Distribution= o 2 ExtraSearchPaths= o 2 LocalMirror= o 2 Mirror= o 2 OutputDirectory= o 2 OutputMode= o 2 PackageDirectories= o 2 Release= o 2 RepartOffline= o 2 Repositories= o 2 SandboxTrees= o 2 ToolsTree= o 2 ToolsTreeCertificates= o 2 UseSubvolumes= o 2 SecureBootCertificate= o 2 SecureBootCertificateSource= o 2 SecureBootKey= o 2 SecureBootKeySource= o 2 VerityCertificate= o 2 VerityCertificateSource= o 2 VerityKey= o 2 VerityKeySource= o 2 VolatilePackageDirectories= o 2 WithNetwork= o 2 WithTests . . : o 2 Incremental= o 2 CacheOnly= o 2 Profiles= o 2 ImageId= o 2 ImageVersion= o 2 SectorSize= o 2 CacheKey= o 2 BuildKey= o 2 CompressLevel= o 2 SignExpectedPcrKey= o 2 SignExpectedPcrKeySource= o 2 SignExpectedPcrCertificate= o 2 SignExpectedPcrCertificateSource= : o 2 MinimumVersion= o 2 PassEnvironment= o 2 ToolsTreeDistribution= o 2 ToolsTreeRelease= o 2 ToolsTreeProfiles= o 2 ToolsTreeMirror= o 2 ToolsTreeSnapshot= o 2 ToolsTreeRepositories= o 2 ToolsTreeSandboxTrees= o 2 ToolsTreePackages= o 2 ToolsTreePackageDirectories= o 2 History= o 2 [Runtime] . mkosi : o 2 BaseTrees= o 2 ExtraTrees= o 2 Initrds= . %O . https://github.com/systemd/systemd/tree/main/mkosi/mkosi.images systemd ..SH " (ENVIRONMENT VARIABLES)" o 2 $MKOSI_LESS less mkosi . o 2 $MKOSI_DNF dnf . dnf dnf5 . (tools tree) dnf . o 2 $MKOSI_DNF_DISABLE_PLUGINS dnf . --disableplugin= dnf . o 2 $MKOSI_DNF_ENABLE_PLUGINS dnf . --enableplugin= dnf . o 2 $EPEL_MIRROR (mirror) epel Mirror= . mkosi epel fedora Mirror= . https://mirror.net/centos-stream mkosi epel https://mirror.net/fedora/epel . o 2 SYSEXT_SCOPE CONFEXT_SCOPE extension-release sysext confext . initrd system portable . " (EXAMPLES)" GPT ext4 image.raw: # mkosi -p systemd -i boot GPT foobar.raw: $ mkosi -d fedora -p kernel-core -p systemd -p systemd-boot -p udev -o foobar.raw # mkosi --output foobar.raw boot $ mkosi --output foobar.raw vm Fedora Linux : # mkosi --distribution fedora --format directory boot image.raw.xz SSH (checksum): $ mkosi --distribution fedora --format disk --checksum=yes --compress-output=yes --package=openssh-clients automake mkosi mkosi : $ cat >mkosi.conf <mkosi.build < vm mkosi qemu : $ mkosi -d fedora -p systemd-udev,systemd-boot,kernel-core build $ mkosi -d fedora vm ... fedora login: root (automatic login) [root@fedora ~]# . (boot loader) systemd getty . qemu Ctrl-a c . qemu . Ctrl-a x . --console=gui : $ mkosi -d fedora --console=gui qemu mkosi vm -kernel ... -initrd ... -append '...' . . -append qemu -append . UKI : $ mkosi vm -- -kernel mkosi.output/fedora~38/image.efi . (direct kernel boot) systemd-boot(7) UEFI : $ mkosi vm -- -kernel /usr/lib/systemd/boot/efi/systemd-bootx64.efi ESP systemd-boot ..SH " (REQUIREMENTS)" o 2 mkosi mount_setattr() 5.12 . o 2 mkosi systemd 254 . o 2 mkosi . (tools tree) ( ToolsTree= ) mkosi ( python ) . . mkosi dependencies . mkosi . o 2 Debian/Kali/Ubuntu ubuntu-keyring ubuntu-archive-keyring kali-archive-keyring / debian-archive-keyring apt . o 2 Python 3.9 . " (Unprivileged User Namespaces)" mkosi (Linux namespaces) . mkosi . Ubuntu AppArmor : https://ubuntu.com/blog/ubuntu-23-10-restricted-unprivileged-user-namespaces : sudo sysctl -w kernel.apparmor_restrict_unprivileged_unconfined=0 sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0 sysctl /etc/sysctl.d/unprivileged-userns.conf : kernel.apparmor_restrict_unprivileged_unconfined=0 kernel.apparmor_restrict_unprivileged_userns=0 sysctl kernel.unprivileged_userns_clone user.max.user_namespace . " (FREQUENTLY ASKED QUESTIONS)" o 2 mkosi vm KVM Debian/Kali/Ubuntu 2 /dev/kvm Debian/Kali/Ubuntu kvm . mkosi unshare kvm kvm qemu /dev/kvm . 0666 KVM . /usr/lib/tmpfiles.d/static-nodes-permissions.conf /etc/tmpfiles.d/static-nodes-permissions.conf (mode) /dev/kvm 0660 0666 . o 2 2 : useradd --create-home --user-group $USER --password "$(openssl passwd -stdin -6 <$USER_PASSWORD_FILE)" systemd v256 systemd-homed-firstboot.service . o 2 (chown) 2 (root) . root . root mkosi root root . chown . ( ) MKOSI_CHROOT_SUPPRESS_CHOWN (1 yes true) chown mkosi-chroot .chroot . mkosi (root) . mkosi root UID/GID /etc/subuid /etc/subgid unshare --map-auto --map-current-user --setuid 0 --setgid 0 root . mkosi root unshare mkosi . systemd /var systemd-tmpfiles StateDirectory= CacheDirectory= LogsDirectory= systemd . z Z systemd-tmpfiles . o 2 portablectl inspect /systemd-dissect (portable service) 2 systemd-dissect portablectl inspect PORTABLE_PREFIXES= os-release systemd-dissect Use as portablectl n/a Portable Service . (attach) mkosi . PORTABLE_PREFIXES= Environment=PORTABLE_PREFIXES=XXX mkosi . " (REFERENCES)" o 2 https://github.com/systemd/mkosi git mkosi GitHub o 2 https://0pointer.net/blog/mkosi-a-tool-for-generating-os-images.html mkosi -- Lennart Poettering o 2 https://lwn.net/Articles/726655 mkosi LWN " (SEE ALSO)" systemd-nspawn(1), systemd-repart(8), dnf(8) mkosi(1)