BOOTC-INSTALL-TO-DISK(8)
πΎ bootc-install-to-disk β install to the target block device π
okay bestie, this is bootc-install-to-disk(8) from the System Manager's Manual, and it does EXACTLY what it says on the tin: it installs to the target block device. π
β¨ SYNOPSIS β¨
bootc install to-disk [OPTIONS...] <DEVICE>
πΈ DESCRIPTION πΈ
Install to the target block device. That's the whole vibe. π
Now, the important part, no cap: this command must be invoked inside of the container which will be installed. Yes, literally inside it. And that container must be run in --privileged mode, which means it will be able to see all block devices on the system. π (that's the point, but also, that's a lot of power, so likeβ¦ be aware.)
The default storage layout uses the root filesystem type configured in the container image, alongside any required system partitions such as the EFI system partition. If you want anything more complex β RAID, LVM, LUKS etc. β you use install to-filesystem instead. This one is the simple queen. π
π§© Partitioning details
The default as of bootc 1.11 uses the Discoverable Partitions Specification β¨https://uapi-group.org/specifications/specs/discoverable_partitions_specification/β© (DPS) for the generated root filesystem, as well as any required system partitions such as the EFI system partition. she's discoverable, she's spec'd, she's iconic. β¨
π Partition layout
The installer creates a GPT partition table with architecture-appropriate partitions. The exact layout varies by architecture but generally includes:
- Boot partition (architecture-specific): BIOS boot for x86_64, PReP for ppc64le, etc.
- ESP: EFI System Partition on UEFI architectures (x86_64, aarch64), at least 512 MiB
- Boot: Separate
/bootpartition, only created when using LUKS encryption - Root: The root filesystem, using the remaining disk space
The root partition uses an architecture-specific DPS type GUID. Specific partition sizes and type GUIDs are implementation details that may change between versions β so please don't hardcode your whole personality around them. π Use install to-filesystem if you need precise control over the partition layout. periodt.
π Root filesystem discovery
The root partition can be discovered at boot time in two ways:
- UUID mode (default): A kernel argument
root=UUID=<uuid>is injected, providing broad compatibility with all initramfs implementations and bootloaders. Lowkey the "works everywhere" option. π - DPS auto-discovery: The
root=kernel argument is omitted entirely.systemd-gpt-auto-generatorin the initramfs discovers the root partition by its DPS type GUID. This enables transparent block-layer changes (such as adding LUKS encryption) without updating kernel arguments. DPS auto-discovery requires the bootloader to implement the Boot Loader Interface (BLI).systemd-bootalways supports this; GRUB supports it only with newer builds that include theblimodule. So petty of GRUB honestly. π
When using systemd-boot, DPS auto-discovery is enabled by default. For GRUB, container base images that ship a BLI-capable build should set discoverable-partitions = true in their install configuration (see bootc-install-config(5)). π«Ά
π OPTIONS π
DEVICEβ Target block device for installation. The entire device will be wiped. β οΈ THE ENTIRE DEVICE. GONE. This argument is required.--wipeβ Automatically wipe all existing data on device. like, all of it. π§Ή--block-setup=BLOCK_SETUPβ Target root block device setup.
Possible values:
directtpm2-luks
--filesystem=FILESYSTEMβ Target root filesystem type.
Possible values:
xfsext4btrfs
--root-size=ROOT_SIZEβ Size of the root partition (default specifier:M). Allowed specifiers:M(mebibytes),G(gibibytes),T(tebibytes).--source-imgref=SOURCE_IMGREFβ Install the system from an explicitly given source.--target-transport=TARGET_TRANSPORTβ The transport; e.g.oci,oci-archive,containers-storage. Defaults toregistry.
Default: registry
--target-imgref=TARGET_IMGREFβ Specify the image to fetch for subsequent updates.--enforce-container-sigpolicyβ This is the inverse of the previous--target-no-signature-verification(which is now a no-op). Enabling this option enforces thatcontainers-policy.json(seeman containers-policy.jsonfor the full search path) includes a default policy which requires signatures. π security girl summer.--run-fetch-checkβ Verify the image can be fetched from the bootc image. Updates may fail when the installation host is authenticated with the registry but the pull secret is not in the bootc image.--skip-fetch-checkβ Verify the image can be fetched from the bootc image. Updates may fail when the installation host is authenticated with the registry but the pull secret is not in the bootc image. (yes bestie, the description is the same as--run-fetch-checkin the original β I'm not gonna invent facts for you, I just report them π)--disable-selinuxβ Disable SELinux in the target (installed) system.--karg=KARGβ Add a kernel argument. This option can be provided multiple times. π--karg-delete=KARG_DELETEβ Remove a kernel argument. This option can be provided multiple times. π--root-ssh-authorized-keys=ROOT_SSH_AUTHORIZED_KEYSβ The path to anauthorized_keysthat will be injected into therootaccount. ποΈ--generic-imageβ Perform configuration changes suitable for a "generic" disk image. At the moment:--bound-images=BOUND_IMAGESβ How should logically bound images be retrieved.
Possible values:
storedskippull
Default: stored
--stateroot=STATEROOTβ The stateroot name to use. Defaults todefault.--bootupd-skip-boot-uuidβ Don't pass--write-uuidtobootupdduring bootloader installation.--bootloader=BOOTLOADERβ The bootloader to use.
Possible values:
grubgrub-ccsystemdnone
--via-loopbackβ Instead of targeting a block device, write to a file via loopback. π--composefs-backendβ Use the composefs backend instead of ostree. This is the default for images with a UKI, and for images with/usr/lib/composefs/setup-root-conf.tomland no ostreeprepare-root.conf.
Default: false
--allow-missing-verityβ Makefs-verityvalidation optional in case the filesystem doesn't support it (composefs backend only).
Default: false
--uki-addon=UKI_ADDONβ Name of the UKI addons to install without the.efi.addonsuffix. This option can be provided multiple times if multiple addons are to be installed (composefs backend only). β¨--run-repartβ Whether to usesystemd-repartfor partitioning. This requires the image to haverepart.ddefinitions.
π¦ EXAMPLES π¦
Install to a disk, wiping all existing data:
bootc install to-disk --wipe /dev/sda
Install with a specific root filesystem type:
bootc install to-disk --filesystem xfs /dev/nvme0n1
Install with TPM2 LUKS encryption:
bootc install to-disk --block-setup tpm2-luks /dev/sda
Install with custom kernel arguments:
bootc install to-disk --karg=nosmt --karg=console=ttyS0 /dev/sda
π SEE ALSO π
bootc(8), bootc-install(8), bootc-install-to-filesystem(8)
go read the friends, they're all slaying in their own way π«Ά
β VERSION β
v1.17.1 π
okay that's the whole page bestie, mwah, go install something responsibly, don't wipe a disk you love, and remember: this was BOOTC-INSTALL-TO-DISK(8) from the System Manager's Manual, version v1.17.1 ππ
β¨
π¦ where this page comes from
- fedora 43: bootc 1.17.1-1.fc43 Β· Apache-2.0 AND BSD-3-Clause AND MIT AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND (Unlicense OR MIT)
- fedora 44: bootc 1.17.1-1.fc44 Β· Apache-2.0 AND BSD-3-Clause AND MIT AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND (Unlicense OR MIT)
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms