PVICS(8)
π NAME π
pvics β Convert qcow2 KVM guest images to EBC-ready SEL images. Yes bestie, this is the pvics(8) page from the System Manager's Manual, and it's literally here to turn your qcow2 KVM guest image into something EBC-ready and SEL-ready. π
β¨ SYNOPSIS β¨
pvics ACTION [-h|--help] [-c|--config CONFIG_FILE] [-i|--image
BASE_IMAGE]
πΈ DESCRIPTION πΈ
Use the pvics tool to convert existing QEMU Copy/-On/-Write version 2 (qcow2) KVM guest images into images that are ready for Early Boot Customization (EBC) and Secure Execution for Linux (SEL). The tool encrypts the root file system and prepares all resources required for EBC.
The tool operates on a copy of the original base image and performs operations in three main phases:
- Retrieving information about a given base image
- Converting a base image according to a configuration
- Encrypting the root file system and preparing EBC resources
Okay so this is the important bit: all operations preserve the original base image. Logs are written to a temporary file, and the filename is logged as the first message during runtime. Temporary artifacts are automatically cleaned up on completion or failure. Slay.
π Base Image Prerequisites π
The following prerequisites have to be fulfilled by the base image:
- label of boot partition set to
boot - label of root partition set to
root - guest is to be backed by a
qcow2image - an initramfs containing the dracut module
95sel-ebcwhich is part ofs390-tools - a boot loader specifying that initramfs and a kernel parameter line on which root is specified by label
- any line starting with
default=should be removed from/etc/zipl.conf
π ACTIONS π
listβ Retrieve information about a given base image. This action displays available boot loader entries from/boot/loader/entries, along with kernel and initramfs hashes and the kernel command line. This is useful for:- Determining valid values for the boot-loader-entry configuration option
- Comparing components between base and converted images
- Verifying image contents before conversion
convertβ Convert a base image according to the configuration file. This action:- Fetches kernel, initramfs, and kernel command line from the specified boot loader entry
- Builds a SEL image using
pvimg(1) - Updates
/boot/bootmapto boot into the SEL image
The resulting image will be a SEL guest image. It requires encryption to be fully EBC-ready (unless no-ebc is enabled in the configuration). No cap.
encryptβ Encrypt the root file system and prepare EBC resources. This action:- Generates secure defaults (CCK, extension secret, LUKS keys) if not provided
- Encrypts the root file system using LUKS with PAES
- Populates
/boot/sics/withadd/-secretrequests - Creates
toc.polandtoc.asrfor integrity protection
This action requires EBC. The guest can boot only by using PAES to open the root file system. That's the whole vibe: no PAES, no boot. π
fullβ Perform bothconvertandencryptactions in sequence. This is equivalent to runningconvertfollowed byencrypt, but in a single invocation.
π¬ ARGUMENTS π¬
ACTIONβ The action to perform:list,convert,encrypt, orfull.
π OPTIONS π
-h,--helpβ Display help message and exit.-c,--config CONFIG_FILEβ Path to the YAML configuration file. Seepvics.yaml(5)for the configuration file format and options. Required forconvert,encrypt, andfullactions. Not required for thelistaction.-i,--image BASE_IMAGEβ Path to the baseqcow2image file to process. Required for all actions.
π₯ CONVERSION PROCESS π₯
The conversion process consists of three phases:
π§ Component Fetching π§
The tool retrieves the kernel, initramfs, and kernel command line from the boot loader entry specified in the configuration file. The components are validated to ensure they meet SEL EBC requirements.
The tool prepends rd.sel-ebc to the kernel command line to trigger the SEL EBC dracut module (unless no-ebc is enabled) and appends any user-provided kernel parameters from the configuration.
π¦ SEL Image Build π¦
The SEL image is built using pvimg(1) with the fetched components. Additional options may be specified in the configuration file via .convert.pvimg-create-options.
π Bootmap Update π
The tool updates the bootmap to boot into the new SEL image:
- Existing boot loader entries in
/boot/loader/entries/*.confare renamed to*.conf.old - A new entry
sel-ebc.confis created that points to/boot/sel-ebc.img zipl(8)is run to update the bootmap
The guest is temporarily started to update the bootmap using libvirt on z/Architecture or qemu on non-z/Architecture architectures. Failures are logged to /var/log/sel-ebc-zipl.log. Bestie, keep that log path in your notes.
π ENCRYPTION PROCESS π
The encryption process consists of three phases:
π Secure Default Generation π
If not provided in the configuration, the following are generated from /dev/random:
- Customer communication key (CCK)
- Root file system LUKS encryption key
- Extension secret for
add/-secretrequests - LUKS passphrase
π Root File System Encryption π
The root file system is encrypted using the following steps:
- Resize the
qcow2image to accommodate the LUKS header - Resize the root partition (but not the file system) to fit the LUKS header
- Encrypt the root file system using LUKS
- Reformat the LUKS header from AES to PAES (Protected AES)
π AES to PAES Conversion π
The LUKS header is converted from standard AES encryption to protected AES (PAES). With PAES, encryption secrets are stored in the ultravisor secret store rather than directly in the LUKS header.
πΈ SICS Population πΈ
The SEL Image Customization Source directory (/boot/sics) is populated with the following secrets as add/-secret requests:
- Customer communication key (CCK)
- LUKS encryption key
- LUKS passphrase
- Any additional
add/-secretrequests specified in the configuration
All automatically builtadd/-secretrequests are added totoc.pol, which verifies the completeness of/boot/sics. User-suppliedadd/-secretrequests from the configuration are also added. Finally,toc.asris built as a meta secret that links totoc.polfor integrity protection. That's the integrity-protection pipeline, periodt.
π« BUILDING SEL IMAGES WITHOUT EBC π«
While the primary purpose of pvics is to create EBC-ready SEL images with encrypted root file systems, it can also build SEL images without EBC functionality using the no-ebc configuration option.
When no-ebc: true is set in the configuration:
- The
convertaction builds a SEL image without EBC-specific flags - The
encryptaction is completely skipped - The
fullaction becomes equivalent toconvertonly - The
rd.sel-ebckernel parameter is not added --enable-cck-updateand--disable-image-encryptionflags are not passed topvimg
This mode is useful for:
- Single-party image creation where the same entity performs conversion, customization, and encryption
- Testing SEL guest functionality without EBC complexity
- Development and debugging scenarios
- Simplified SEL image generation workflows
π¦ OUTPUT FILES π¦
All output files are written to the directory specified by the out configuration option:
<out>/image.qcow2β The converted SEL image (afterconvertorfullaction)<out>/cck.keyβ Customer communication key (generated if not provided)<out>/extension.secretβ Extension secret foradd/-secretrequests (generated if not provided)<out>/rfs.keyβ Root file system LUKS encryption key (generated if not provided)<out>/passphraseβ LUKS passphrase (generated if not provided)<out>/*.asrβ Generated add-secret request files
ποΈ TEMPORARY FILES ποΈ
/tmp/tmp.*β Log file (filename logged at startup)
β EXIT STATUS β
0β Success1β General error (invalid arguments, missing files, operation failure)
π§ͺ EXAMPLES π§ͺ
π List Boot Loader Entries π
pvics list --image /path/to/base-image.qcow2
π Convert Image Only π
pvics convert --config /path/to/config.yaml --image /path/to/base-image.qcow2
π Encrypt Image Only π
pvics encrypt --config /path/to/config.yaml --image /path/to/converted-image.qcow2
π Full Conversion and Encryption π
pvics full --config /path/to/config.yaml --image /path/to/base-image.qcow2
π Build SEL Image Without EBC π
# config.yaml contains: no-ebc: true
pvics convert --config /path/to/config.yaml --image /path/to/base-image.qcow2
π FILES π
/boot/loader/entries/*.confβ Boot loader entry files in the base image/boot/sel-ebc.imgβ The resulting SEL image file in the guest/boot/sics/β SEL image-customization source directory that contains EBC resources/boot/sics/toc.polβ Table-of-contents policy file that lists alladd/-secretrequests/boot/sics/toc.asrβ Meta secret for integrity protection oftoc.pol/var/log/sel-ebc-zipl.logβ Log file forziplbootmap update operations
π NOTES π
- All operations are performed on a copy of the original base image.
- The tool requires root privileges for file-system operations.
- The LUKS device is named
cryptroot. - The temporary working directory is created at
/opt/sel-<UUID>. - The
no-verifyoption should not be used in production environments. - Generated secrets are written to the output directory and should be secured appropriately.
π SEE ALSO π
pvics.yaml(5)pvsecret(1)pvimg(1)pvebc(8)zipl(8)cryptsetup(8)lsinitrd(1)- Linux on IBM Z and IBM LinuxONE: Secure Execution for Linux documentation
π AUTHOR π
IBM Corporation
That's the whole pvics(8) page, bestie! It ships with s390-tools, dated April 2026 β go convert, encrypt, and secure those images with main-character energy πβ¨π«Ά
π¦ where this page comes from
- opensuse-leap 16.0: s390-tools 2.44.1-160000.1.1 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms