GPG Key Management - Create, Backup, Import, and Edit User ID

Posted on March 10, 2026

This post documents the process of creating a new GPG key, backing up a GPG key, importing it to a new machine, and editing the user ID (UID) associated with the key. This is useful for administrators who need to migrate GPG keys, update key metadata, or generate new keys for secure communication.

This post documents the process of backing up a GPG key, importing it to a new machine, and editing the user ID (UID) associated with the key. This is useful for administrators who need to migrate GPG keys or update key metadata.

Read more · 3 min read

Libvirt/CLVM - Add qcow2 support for logical volumes

Posted on March 2, 2026

This post explains a small libvirt patch that adds qcow2 (and other qemu image formats) support when creating volumes on logical (CLVM) storage pools. The patch lets libvirt use qemu-img to initialise a LV as a qcow2 image and then expose that LV to a VM as a block source while preserving activation locking behavior for clustered LVM setups.

Read more · 4 min read

Rebuilding libvirt on Ubuntu 24.04 with CLVM + sanlock patch

Posted on March 1, 2026

This post documents how to fetch, patch and rebuild libvirt (libvirt 10.0.0) on Ubuntu 24.04. The instructions show how to obtain the original source (Launchpad / Ubuntu archives), install build dependencies, apply local patches, and produce installable .deb packages.

The upstream Ubuntu libvirt source and recent packaging patches are available on Launchpad: https://launchpad.net/ubuntu/+source/libvirt

Read more · 6 min read

Rebuilding libvirt on Oracle Linux 9 with CLVM + sanlock patch

Posted on February 28, 2026

In this guide, I walk through rebuilding libvirt-daemon-driver-storage-logical on Oracle Linux 9 and applying a custom CLVM + sanlock patch.

The goal is to produce a rebuilt RPM that can be installed cleanly on Oracle Linux 9 systems while preserving the distro packaging workflow.

In clustered environments, CLVM with lvmlockd and sanlock is a common approach for shared storage. In practice, libvirt’s logical pool behavior can conflict with that model when one host encounters an LV lock held by another host. This patch targets a practical operating model: shared VG visibility with exclusive LV activation (except migration workflows coordinated by an external control plane).

Read more · 7 min read