SYSTEMD-...GENERATOR(8)

๐Ÿ‘‘ SYSTEMD-...GENERATOR(8) โ€” systemd-veritysetup-generator

okay bestie, sit down, hydrate, and let's talk about systemd-veritysetup-generator โ€” the little generator that is genuinely doing the most so your verity-protected block devices just work at boot ๐Ÿ’–


โœจ NAME โœจ

systemd-veritysetup-generator โ€” unit generator for verity protected block devices ๐Ÿฆ‹


๐ŸŒธ SYNOPSIS ๐ŸŒธ

/usr/lib/systemd/system-generators/systemd-veritysetup-generator

that's it. that's the whole vibe. it lives at that exact path, no arguments, no drama ๐ŸŽ€


๐Ÿ’… DESCRIPTION ๐Ÿ’…

so. systemd-veritysetup-generator is a generator โ€” and a generator, if you didn't know, is the thing that runs early at boot (and again whenever the system manager's config gets reloaded) and turns stuff into native systemd units. this one specifically translates kernel command line options that configure verity protected block devices into native systemd units. it will create systemd-veritysetup@.service(8) units as necessary. slay โœจ

and like, currently? only two verity devices may be set up with this generator, bestie. just two. they back the root and /usr file systems of the OS. that's the whole assignment. ๐Ÿ‘‘

also important: systemd-veritysetup-generator implements systemd.generator(7). periodt.


๐Ÿ”ฅ KERNEL COMMAND LINE ๐Ÿ”ฅ

here's the part where the tea gets spilled. systemd-veritysetup-generator understands these kernel command line parameters, and no, we are not skipping a single one of them:

  • systemd.verity=, rd.systemd.verity= โ€” takes a boolean argument. defaults to "yes". if you say "no", it disables the generator entirely (yes, the whole thing, gone, bye). rd.systemd.verity= is honored only in the initrd, while systemd.verity= is honored by both the main system and in the initrd.
added in version 233.
  • veritytab=, rd.veritytab= โ€” takes a boolean argument. defaults to "yes". if you say "no", it causes the generator to ignore any devices configured in /etc/veritytab. rd.veritytab= is honored only in the initrd, while veritytab= is honored by both the main system and in the initrd.
added in version 248.
  • roothash= โ€” takes a root hash value for the root file system. it expects a hash value formatted in hexadecimal characters of the appropriate length (i.e. most likely 256 bit/64 characters, or longer). if it's not specified via systemd.verity_root_data= and systemd.verity_root_hash=, then the hash and data devices to use are automatically derived from the specified hash value. specifically: the data partition device is looked for under a GPT partition UUID derived from the first 128-bit of the root hash, and the hash partition device is looked for under a GPT partition UUID derived from the last 128-bit of the root hash. which means it is usually sufficient to specify the root hash to boot from a verity protected root file system, since device paths are automatically determined from it โ€” as long as the partition table is properly set up. iykyk ๐Ÿ’…
added in version 233.
  • systemd.verity_root_data=, systemd.verity_root_hash= โ€” these two settings take block device paths as arguments and may be used to explicitly configure the data partition and hash partition to use for setting up the verity protection for the root file system. if not specified, these paths are automatically derived from the roothash= argument (see above, bestie, keep up ๐Ÿ’–).
added in version 233.
  • systemd.verity_root_options= โ€” takes a comma-separated list of dm-verity options. it expects the following options: superblock=BOOLEAN, format=NUMBER, data-block-size=BYTES, hash-block-size=BYTES, data-blocks=BLOCKS, hash-offset=BYTES, salt=HEX, uuid=UUID, ignore-corruption, restart-on-corruption, ignore-zero-blocks, check-at-most-once, panic-on-corruption, hash=HASH, fec-device=PATH, fec-offset=BYTES, fec-roots=NUM and root-hash-signature=PATH|base64:HEX. see veritysetup(8) for more details.
added in version 248.
  • usrhash=, systemd.verity_usr_data=, systemd.verity_usr_hash=, systemd.verity_usr_options= โ€” equivalent to their counterparts for the root file system as described above, but apply to the /usr/ file system instead. same energy, different filesystem ๐Ÿซถ
added in version 250.

๐Ÿฆ‹ SEE ALSO ๐Ÿฆ‹

go read these next, they're iconic:


and that's the whole page, bestie!! systemd 262.1, manual page SYSTEMD-...GENERATOR(8) โ€” go forth and boot your verity-protected root like the main character you are ๐Ÿ’œโœจ

๐Ÿ“ฆ where this page comes from
  • arch rolling: systemd 262.1-1 ยท LGPL-2.1-or-later AND CC0-1.0 AND GPL-2.0-or-later AND MIT-0
  • ๐Ÿ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms