Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion contrib/packaging/bcvk.spec
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ Source1: %{url}/releases/download/v%{version}/bcvk-%{version}-vendor.tar.
# Only build for architectures with full support and testing
ExclusiveArch: x86_64 aarch64

Requires: binutils
Requires: openssh-clients
Requires: podman
Requires: qemu-img
Expand Down
10 changes: 7 additions & 3 deletions crates/kit/src/run_ephemeral.rs
Original file line number Diff line number Diff line change
Expand Up @@ -861,11 +861,15 @@ fn parse_service_exit_code(status_content: &str) -> Result<i32> {
Ok(0)
}

/// Check for required binaries in the target container image
/// Check for required binaries in the privileged container
///
/// These binaries must be present in the container image being run as an ephemeral VM.
/// These binaries must be present in the privileged container that runs bcvk,
/// not the guest bootc image that gets booted inside the VM.
fn check_required_container_binaries() -> Result<()> {
// We use systemctl in a few places. objcopy is for UKI extraction.
// systemctl: used for checking cloud-init and other systemd operations
// objcopy: for UKI kernel extraction (when using UKI images)
// NOTE: bwrap is checked earlier in entrypoint.sh, not here, because by the
// time run_impl() executes we're already inside the bwrap namespace
let required_binaries = ["systemctl", "objcopy"];

let mut missing = Vec::new();
Expand Down
16 changes: 15 additions & 1 deletion docs/src/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,18 @@ sudo dnf install bcvk

## Prerequisites

Required:
### Host Requirements

For building from source:
- [Rust](https://www.rust-lang.org/)
- Git

For running bcvk:
- QEMU/KVM
- qemu-img
- virtiofsd
- Podman
- openssh-clients (for libvirt SSH operations)

Optional:
- libvirt (for persistent VM features)
Expand All @@ -24,6 +30,14 @@ Optional:
sudo usermod -a -G libvirt $USER
```

### Target Bootc Image Requirements

For `bcvk ephemeral` operations, the bootc container images you run must contain:
- systemctl (systemd)
- objcopy (binutils)
- bwrap (bubblewrap)
- ssh, ssh-keygen (openssh-clients)

## Development Binaries

Pre-built binaries from `main` are available as OCI artifacts:
Expand Down
Loading