BCVK-TO-DISK(8)

πŸ“¦
version 0.21.0 Β· 3 versions
, in fedora 43, fedora 44

πŸ’… NAME πŸ’…

ok so bcvk-to-disk β€” bestie, this is the girl that installs bootc images onto actual persistent disk images. like, real disks. bootable ones. she's that girl. part of the bcvk manual, section 8 (system administration, iykyk).


✨ SYNOPSIS ✨

bcvk to-disk [-h|--help] [OPTIONS] IMAGE

πŸ¦‹ DESCRIPTION πŸ¦‹

She does the whole automated installation of bootc containers onto disk images, using ephemeral VMs as her little installation environment. Multiple filesystems? yes. Custom sizing? absolutely. Bootable disk images ready for production deployment? periodt. πŸ’–

The installation process, step by step, no skipping:

  1. Creates a new disk image with the specified filesystem layout
  2. Boots an ephemeral VM with the target container image
  3. Runs bootc install to-disk within the VM to install to the disk
  4. Produces a bootable disk image that can be deployed anywhere

🌸 OPTIONS 🌸

  • SOURCE_IMAGE β€” the container image to install. This argument is required. no source, no slay.
  • TARGET_DISK β€” the target disk/device path. Also required, bestie. you gotta tell her where.
  • --filesystem=FILESYSTEM β€” root filesystem type, like ext4, xfs, btrfs. pick your vibe.
  • --root-size=ROOT_SIZE β€” root filesystem size (e.g., '10G', '5120M').
  • --storage-path=STORAGE_PATH β€” path to host container storage. she'll auto-detect it if you don't specify, so no stress.
  • --target-transport=TARGET_TRANSPORT β€” the transport; e.g. oci, oci-archive, containers-storage. Defaults to registry.
  • --karg=KARG β€” set a kernel argument.
  • --composefs-backend β€” default to composefs-native storage.
  • --bootloader=BOOTLOADER β€” which bootloader to use for the composefs-native backend.
  • --allow-missing-fsverity β€” allow installation without fs-verity support for the composefs-native backend. she's being lenient, okay?
  • --disk-size=DISK_SIZE β€” disk size to create (e.g. 10G, 5120M, or a plain number for bytes).
  • --format=FORMAT β€” output disk image format.

Possible values:

  • raw
  • qcow2

Default: raw

  • --itype=ITYPE β€” instance type (e.g., u1.nano, u1.small, u1.medium). Overrides vcpus/memory if specified. she said I'm in charge now.
  • --memory=MEMORY β€” memory size (e.g. 4G, 2048M, or a plain number for MB).

Default: 4G

  • --vcpus=VCPUS β€” number of vCPUs (overridden by --itype if specified, so watch the hierarchy bestie).
  • --console β€” connect the QEMU console to the container's stdio (visible via podman logs/attach).
  • --debug β€” enable debug mode (drop to shell instead of running QEMU). 🐚
  • --virtio-serial-out=NAME:FILE β€” add virtio-serial device with output to file (format: name:/path/to/file).
  • --execute=EXECUTE β€” execute command inside VM via systemd and capture output.
  • -K, --ssh-keygen β€” generate SSH keypair and inject via systemd credentials. πŸ”‘
  • --virtiofsd=VIRTIOFSD_BINARY β€” path to virtiofsd binary (overrides auto-detection).
  • --output=OUTPUT β€” select how VM output is presented.

Possible values:

  • console
  • journal

Default: console

  • --log-dir=STREAMS=DIR β€” write VM log streams to files in DIR.
  • --install-log=INSTALL_LOG β€” configure logging for bootc install by setting the RUST_LOG environment variable.
  • --label=LABEL β€” add metadata to the container in key=value form.
  • --dry-run β€” check if the disk would be regenerated without actually creating it. manifesting ✨ without the commitment.
  • --bootc-install-podman-arg=BOOTC_INSTALL_PODMAN_ARGS β€” pass an extra argument to the inner podman run that executes bootc install. May be specified multiple times. Useful for testing edge cases; for example --bootc-install-podman-arg=--read-only stresses the install path by making the container rootfs read-only, which exercises bootloader code paths that avoid writing to the host's read-only /boot (similar to osbuild sandbox environments).

πŸŽ€ ARGUMENTS πŸŽ€

  • IMAGE β€” container image reference to install (e.g., registry.example.com/my-bootc:latest).

🌈 EXAMPLES 🌈

Create a raw disk image:

bcvk to-disk quay.io/centos-bootc/centos-bootc:stream10 /path/to/disk.img

Create a qcow2 disk image (more compact):

bcvk to-disk --format qcow2 quay.io/fedora/fedora-bootc:42 /path/to/fedora.qcow2

Create with specific disk size:

bcvk to-disk --disk-size 20G quay.io/fedora/fedora-bootc:42 /path/to/large-disk.img

Create with custom filesystem and root size:

bcvk to-disk --filesystem btrfs --root-size 15G quay.io/fedora/fedora-bootc:42 /path/to/btrfs-disk.img

Development workflow β€” test then create deployment image:

# Test the container as a VM first
bcvk ephemeral run-ssh my-app

# If good, create the deployment image
bcvk to-disk my-app /tmp/my-app.img

πŸ’œ VERSION πŸ’œ

v0.1.0


ok that's literally the whole page bestie 🫢 this one's v0.1.0, and yeah she lives in the bcvk man page set. go make some bootable disk images, you've got this. πŸ’–βœ¨

πŸ“¦ where this page comes from