BCVK-EPHEMERAL-TEST-BASIC(8)

πŸ“¦ version 0.21.0, in fedora 43, fedora 44

πŸ’– bcvk-ephemeral-test-basic(8) β€” the vibe check for your bootc image πŸ’–

okay so bestie, welcome to the manual page for bcvk-ephemeral-test-basic β€” one of the bcvk girls. she's here to boot an ephemeral VM and make sure systemd actually reaches the running state. that's it. that's the whole job. slay. ✨


🌸 SYNOPSIS 🌸

bcvk ephemeral test-basic [OPTIONS] IMAGE

πŸ¦‹ DESCRIPTION πŸ¦‹

so what she does is: boot IMAGE as an ephemeral VM and check that systemd reaches the "running" state. it's a quick smoke test for bootc container images β€” like, does this thing even boot, fr fr. πŸ”₯

this is literally shorthand for:

bcvk ephemeral run-ssh IMAGE -- systemctl is-system-running --wait

(that gets run through /bin/sh -c in the VM, with all the handling described below, no cap). she prints the final system state, so on success her only output is "running" β€” iconic behavior, honestly. πŸ’… but if the state is anything else (like "degraded" because some unit failed 😭), she also lists the failed units for you. and just like with bcvk-ephemeral-run-ssh(8), the VM gets removed when the check completes. gone. deleted. periodt. πŸ’€


πŸŽ€ EXIT STATUS πŸŽ€

  • 0 β€” systemd reached the "running" state πŸ‘‘ (we love to see it)
  • 1 β€” systemd finished booting in another state, such as "degraded" πŸ˜”
  • 124 β€” boot did not finish within 10 minutes of SSH becoming available (e.g. a start job with no timeout); the pending jobs are listed ⏰
also! failures of bcvk-ephemeral-run-ssh(8) itself β€” like when the VM fails to boot or SSH never becomes available β€” also exit non-zero (usually 1) and print an error on stderr. so like, if things go weird, check stderr bestie, that's where the tea is. πŸ«–

✨ OPTIONS ✨

  • IMAGE β€” Container image to run as ephemeral VM. this one is required, no skipping it. πŸ™ˆ
  • --itype=ITYPE β€” Instance type (e.g., u1.nano, u1.small, u1.medium). Overrides vcpus/memory if specified. she's the main character, she overrules everyone else. πŸ‘‘
  • --memory=MEMORY β€” Memory size (e.g., 4G, 2048M, or plain number for MB)
    • Default: 4G
  • --vcpus=VCPUS β€” Number of vCPUs (overridden by --itype if specified)
  • --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
  • -t, --tty β€” Allocate a pseudo-TTY for container
  • -i, --interactive β€” Keep STDIN open for container
  • -d, --detach β€” Run container in background
  • --rm β€” Automatically remove container when it exits
  • --name=NAME β€” Assign a name to the container
  • --network=NETWORK β€” Configure the network for the container
  • --label=LABEL β€” Add metadata to the container in key=value form
  • -e, --env=ENV β€” Set environment variables in the container (key=value)
  • --debug-entrypoint=DEBUG_ENTRYPOINT β€” Do not run the default entrypoint directly, but instead invoke the provided command (e.g. bash)
  • --bind=HOST_PATH[:NAME] β€” Bind mount host directory (RW) at /run/virtiofs-mnt-<name>
  • --ro-bind=HOST_PATH[:NAME] β€” Bind mount host directory (RO) at /run/virtiofs-mnt-<name>
  • --systemd-units=SYSTEMD_UNITS_DIR β€” Directory with systemd units to inject (expects system/ subdirectory)
  • --bind-storage-ro β€” Mount host container storage (RO) at /run/virtiofs-mnt-hoststorage
  • --add-swap=ADD_SWAP β€” Allocate a swap device of the provided size
  • --mount-disk-file=FILE[:NAME] β€” Mount disk file as virtio-blk device at /dev/disk/by-id/virtio-<name>
  • --karg=KERNEL_ARGS β€” Additional kernel command line arguments
  • --ignition=IGNITION_CONFIG β€” Path to Ignition config file (JSON format) to inject via fw_cfg

🌈 EXAMPLES 🌈

Smoke test a Fedora bootc image:

bcvk ephemeral test-basic quay.io/fedora/fedora-bootc:42

Test a locally built image:

podman build -t localhost/mybootc .
bcvk ephemeral test-basic localhost/mybootc

Test with more memory (the default is 4G) and CPUs:

bcvk ephemeral test-basic --memory 8G --vcpus 4 localhost/mybootc

πŸ’œ SEE ALSO πŸ’œ

bcvk-ephemeral(8), bcvk-ephemeral-run-ssh(8)


⭐ VERSION ⭐

v0.21.0


and that's the whole page bestie!! 🫢 this was bcvk-ephemeral-test-basic from the bcvk manual, version v0.21.0 β€” go forth and smoke test your images, you're gonna do amazing, mwah πŸ’–πŸŒΈβœ¨

πŸ“¦ where this page comes from