Skip to content
Merged
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
17 changes: 11 additions & 6 deletions cmd/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -412,12 +412,17 @@ func runKubevirtCreate(name string) error {
}

opts := types.CreateOpts{
Name: name,
Namespace: ns,
Mem: createMem,
CPU: createCPU,
Disk: createDisk,
ISO: iso,
Name: name,
Namespace: ns,
Mem: createMem,
CPU: createCPU,
Disk: createDisk,
ISO: iso,
// --firmware was honoured only by the QEMU paths, so a KubeVirt ISO
// install always got SeaBIOS and a UEFI-only ISO (Utah, Dakota) found
// nothing to boot. Opt-in here: changing the KubeVirt default would
// re-firmware every existing catalog image.
UEFI: createFirmware == "uefi",
ContainerDisk: containerDisk,
ImportURL: importURL,
PVC: createPVC,
Expand Down
6 changes: 6 additions & 0 deletions pkg/kubevirt/bootc.go
Original file line number Diff line number Diff line change
Expand Up @@ -481,6 +481,12 @@ write_files:
# empty NVRAM, so it needs the removable fallback path EFI/BOOT/BOOTX64.EFI
# — that's exactly what --generic-image adds (and it skips firmware changes).
COMPOSEFS=0; FS=xfs; BACKEND=--generic-image
# bootc formats the root with the image's own mkfs, so an image that
# ships no xfsprogs (Hummingbird-based desktops carry btrfs-progs
# only) fails "Creating rootfs: No such file or directory" on xfs.
if ! imghas /usr/sbin/mkfs.xfs && ! imghas /usr/bin/mkfs.xfs; then
if imghas /usr/sbin/mkfs.btrfs || imghas /usr/bin/mkfs.btrfs; then FS=btrfs; fi
fi
fi
echo "CORRAL_COMPOSEFS=$COMPOSEFS FS=$FS"
podman run --rm --privileged --pid=host --security-opt label=type:unconfined_t \
Expand Down
6 changes: 6 additions & 0 deletions pkg/kubevirt/manifests.go
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,12 @@ func GenerateVM(opts types.CreateOpts) map[string]any {
"interfaces": []map[string]any{
{"name": "default", "masquerade": map[string]any{}},
},
// An absolute pointer, so VNC clicks land where they are aimed.
// The default PS/2 mouse is relative: a VNC client's absolute
// coordinates drift, and installers cannot be driven by pointer.
"inputs": []map[string]any{
{"type": "tablet", "bus": "usb", "name": "tablet"},
},
},
}
if opts.UEFI {
Expand Down
Loading