PVICS.YAML(5)
π pvics.yaml(5) β like, the whole manual, bestie π
okay so this is pvics.yaml(5), a File Formats Manual page, and it's genuinely the glow-up guide for your config file. no cap, it's a lot, but we're gonna get through it together π«Ά
β¨ NAME β¨
pvics.yaml β the configuration file for the pvics SEL EBC image conversion tool. that's the whole vibe. it's giving "let me tell you how to build your image" π
πΈ DESCRIPTION πΈ
so pvics.yaml is a YAML-formatted config file, and the pvics tool reads it to control the conversion of your existing qcow2 KVM guest images into EBC-ready Secure Execution for Linux (SEL) images. iconic, honestly.
the config file specifies all the parameters for:
- image conversion
- root file system encryption
- early boot customization (EBC) resource preparation
ngl, if you wanna know the detailed tea about what the tool actually does and how the conversion process goes down, go read pvics(8). that's the main character. this page is the supporting cast π
π¦ FILE FORMAT π¦
the config file uses YAML syntax, and it's got these top-level sections:
- Global Options β general settings that apply to all actions
- Certificate Chain β certificate verification configuration
- Conversion Options β settings specific to the
convertaction - Encryption Options β settings specific to the
encryptaction
π GLOBAL OPTIONS π
no-verify: boolean β disables certificate chain verification forpvcommands when it's set totrue. Default:false.
β οΈ WARNING: do not disable certificate chain verification in production environments. i'm serious. bestie. do not. π
no-ebc: boolean β controls whether EBC functionality gets used. when it's set totrue, you get a SEL guest image created without using EBC. Default:false. when it's enabled, here's what happens:- the
encryptaction is skipped - the
fullaction behaves exactly the same as theconvertaction - default
pvimgoptions are not added β only the user-provided options you specified in.convert.pvimg-create-optionsget used - the
rd.sel-ebckernel parameter is not added
- the
out: path β (REQUIRED) local directory path used for output files. every generated file (converted images, keys, ASRs) gets written into this directory. it's the designated drop zone πhkds: list β (REQUIRED) list of paths to host-key-documents (HKDs). paths may contain wildcard patterns, likedata/*.hkd. Example:
hkds:
- data/*.hkd
- /path/to/specific.hkd
π₯ CERTIFICATE CHAIN π₯
the certificate-chain section holds all the relevant files for verification of the certificate chain. this section is REQUIRED if no-verify is false, and UNUSED if no-verify is true. so like, pick a lane π
for more detailed info about certificate chain verification, see pvsecret(1) β that's the deep lore.
certificate-chain.certs: list β list of paths to certificate files. paths may contain wildcard patterns. Example:
certs:
- data/*.cert
certificate-chain.crls: list β list of paths to certificate revocation list (CRL) files. paths may contain wildcard patterns too. Example:
crls:
- data/*.crl
certificate-chain.offline: boolean β enables offline mode for thepvsecret createcommand. whentrue, no network access is attempted for certificate verification. airplane mode but make it security βοΈcertificate-chain.root-ca: path β path to the root Certificate Authority (CA) file for the certificate chain. the source of truth, the mothership, the root of all roots π³
β CONVERSION OPTIONS β
the convert section is where the image conversion phase config lives. these options are used only when you run the convert or full actions β they have no effect on any other actions. like, read the room, other actions π
convert.boot-loader-entry: string β (REQUIRED) title of an existing boot loader entry from the base image. this entry specifies which kernel, initramfs, and kernel command line to use for the SEL image. pro tip: use thelistaction to display the available boot loader entries in the base image. window shopping but for kernels πconvert.sel-kernel-parameter: string β (OPTIONAL) additional kernel parameters to append to the kernel command line of the resulting SEL image. therd.sel-ebcparameter is always prepended automatically (unlessno-ebcistrue). so don't worry, it's handled. Example:
sel-kernel-parameter: swiotlb=524288
convert.pvimg-create-options: string β (OPTIONAL) extra options to pass to thepvimgcommand during SEL image creation. seepvimg(1)for the available options β go check, i'll wait π§
π ENCRYPTION OPTIONS π
the encrypt section is all about root filesystem encryption and EBC resource preparation phase config. these options are used only when running the encrypt or full actions, and they're completely ignored when no-ebc is true. bye bestie π
encrypt.cck: path β (OPTIONAL) path to the customer communication key (CCK) file. if you don't supply it, a CCK will be generated from/dev/randomand written to<out>/cck.key. it literally makes one for you, slay β¨encrypt.extension-secret: path β (OPTIONAL) path to the extension secret file used forpvsecret createcommands. if not supplied, an extension secret gets generated from/dev/randomand written to<out>/extension.secret. REQUIRED ifencrypt.add-secret-requestsis used. in that case, the extension secret must match the one used in the suppliedadd/-secretrequests. no mismatches, that's the rule π€encrypt.luks-key: path β (OPTIONAL) path to the LUKS encryption key file for the root filesystem. if not supplied, a key gets generated from/dev/randomand written to<out>/rfs.key.encrypt.luks-passphrase: path β (OPTIONAL) path to a file that contains the LUKS passphrase. if not supplied, a passphrase gets generated from/dev/randomand written to<out>/passphrase. fresh out of the random generator πencrypt.luks-key-asr-name: string β (OPTIONAL) name of the add-secret request that contains the LUKS encryption key. Default:rfs-luks-key.encrypt.luks-key-size: integer β (OPTIONAL) key size in bits for the LUKS encryption key. valid values:256or512. if not specified, the size is determined from the supplied key file, or a default size is used for generated keys. mystery sizing, but make it documented πencrypt.add-secret-requests: list β (OPTIONAL) list of paths to additionaladd/-secretrequest files to be added during boot. paths may contain wildcard patterns. when you use this option:encrypt.extension-secretis REQUIRED- the supplied extension secret must match the extension secret used in all supplied
add/-secretrequests Example:
add-secret-requests:
- data/*.asr
- /path/to/custom.asr
π EXAMPLES π
β¨ Minimal Configuration for EBC β¨
out: /path/to/output
hkds:
- /path/to/*.hkd
certificate-chain:
certs:
- /path/to/*.cert
crls:
- /path/to/*.crl
offline: true
root-ca: /path/to/root.ca
convert:
boot-loader-entry: "My Boot Entry"
β¨ Configuration with Custom Encryption Keys β¨
out: /path/to/output
hkds:
- /path/to/*.hkd
certificate-chain:
certs:
- /path/to/*.cert
crls:
- /path/to/*.crl
offline: true
root-ca: /path/to/root.ca
convert:
boot-loader-entry: "My Boot Entry"
sel-kernel-parameter: swiotlb=524288
pvimg-create-options: --enable-pckmo-hmac
encrypt:
cck: /path/to/cck.key
luks-key: /path/to/rfs.key
luks-passphrase: /path/to/passphrase
luks-key-size: 512
β¨ Configuration with Additional ASRs β¨
out: /path/to/output
hkds:
- /path/to/*.hkd
certificate-chain:
certs:
- /path/to/*.cert
crls:
- /path/to/*.crl
offline: true
root-ca: /path/to/root.ca
convert:
boot-loader-entry: "My Boot Entry"
encrypt:
extension-secret: /path/to/extension.secret
add-secret-requests:
- /path/to/*.asr
β¨ SEL Image Without EBC β¨
no-ebc: true
out: /path/to/output
hkds:
- /path/to/*.hkd
convert:
boot-loader-entry: "My Boot Entry"
π FILES π
here's where everything lives, bestie:
/boot/loader/entries/*.confβ boot loader entry files in the base image/boot/sel-ebc.imgβ the resulting SEL image file/boot/sics/β SEL Image customization source directory containing EBC resources/boot/sics/toc.polβ table of contents policy file listing alladd/-secretrequests/boot/sics/toc.asrβ meta-secret for integrity protection oftoc.pol/var/log/sel-ebc-zipl.logβ log file forziplbootmap update operations
π SEE ALSO π
go read these, they're all connected, iykyk:
pvics(8)pvsecret(1)pvimg(1)zipl(8)cryptsetup(8)- Linux on IBM Z and IBM LinuxONE: Secure Execution for Linux documentation
okay that's the entire page, you ate that π
β¨ go forth and configure, bestie. this was s390-tools, April 2026, page PVICS.YAML(5) β and that's the whole sign-off, mwah π«Άππ
π¦ 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