SYSTEMD-DEBUG-GENERATOR(8)
โจ SYSTEMD-DEBUG-GENERATOR โจ
okay bestie, this is the systemd-debug-generator page from the systemd-debug-generator manual, and it's genuinely one of the most useful little gremlins in the whole systemd family. it's a generator that hands you some debugging superpowers. ๐
๐ NAME ๐
systemd-debug-generator โ a generator that enables a runtime debug shell and masks specific units at boot. it's giving "break glass in case of emergency" but make it cute. ๐จโจ
๐ฆ SYNOPSIS ๐ฆ
/usr/lib/systemd/system-generators/systemd-debug-generator
๐ธ DESCRIPTION ๐ธ
so, systemd-debug-generator is a generator, and its whole job is to provide some debugging functionality. that's it, that's the vibe. no cap. ๐ฅ
and fr fr, systemd-debug-generator implements systemd.generator(7). so if you wanna know how generators work in general, go read that one too. ๐
โญ KERNEL COMMAND LINE โญ
here's the tea, bestie: systemd-debug-generator understands the following kernel command line parameters. every single one of them. we're not skipping a single flag. periodt. ๐
systemd.mask=,rd.systemd.mask=โ these options take a unit name as argument. the unit you name gets masked for the runtime (and by "runtime" we mean this session โ from boot all the way to shutdown), basically the same effect assystemctl(1)'smaskcommand. super useful when you wanna boot with certain units yeeted out of the initial boot transaction so you can debug system startup. you can specify it more than once, go off. the one prefixed with"rd."is honored only in the initrd, while the one without a prefix is only honored on the host. iykyk. ๐
Added in version 215.
systemd.wants=,rd.systemd.wants=โ these options take a unit name as argument. a start job for that unit gets added to the initial transaction. this is the move when you wanna start one or more extra units at boot. may be specified more than once, obviously. the"rd."-prefixed one is honored only in the initrd, while the one that is not prefixed is honored only on the host. ๐ซถ
Added in version 215.
systemd.debug_shell,rd.systemd.debug_shell,systemd.default_debug_tty=,rd.systemd.default_debug_tty=โ if thesystemd.debug_shellorrd.systemd.debug_shelloption is specified, the debug shell service"debug-shell.service"gets pulled into the boot transaction and a debug shell will be spawned during early boot. by default,/dev/tty9is used, but you can also specify a specific tty, either with or without the/dev/prefix. and if you wanna set which tty to use without actually enabling the debug shell? that's whatsystemd.default_debug_tty=is for โ it also takes a tty with or without the/dev/prefix. also note that the shell may also be turned on persistently by enabling it withsystemctl(1)'senablecommand. the options prefixed with"rd."are honored only in the initrd, while the ones without a prefix are honored only on the host. โจ
Added in version 215.
systemd.break=,rd.systemd.break=โ takes one ofpre-udev,pre-basic,pre-mount, orpre-switch-root(that last one is the default for the"rd."option). it also accepts multiple values separated by comma (","). these options let you pause the boot process at a certain point and spawn a debug shell. after you exit that shell, the system resumes booting like nothing happened. the option prefixed with"rd."is honored only in the initrd, while the one without a prefix is honored only on the host. ๐
Added in version 258.
๐ Table 1. Available breakpoints ๐
okay so here's the breakdown, no table because we're doing this cuter. the columns in the original are Breakpoints, Description, Can be used in the initrd, and Can be used on the host:
pre-udevโ Before starting to process kernel uevents, i.e., beforesystemd-udevd.servicestarts. can be used in the initrd: โ. can be used on the host: โ. ๐ฆpre-basicโ Before leaving early boot and regular services start, i.e., beforebasic.targetis reached. can be used in the initrd: โ. can be used on the host: โ. ๐pre-mountโ Before the root filesystem is mounted, i.e., beforesysroot.mountstarts. can be used in the initrd: โ. can be used on the host: โ. ๐ธpre-switch-rootโ Before switching from the initrd to the real root. can be used in the initrd: โ. can be used on the host: โ. โญ
๐ SYSTEM CREDENTIALS ๐
systemd.extra-unit.*โ credentials prefixed with"systemd.extra-unit."specify additional units to add to the final system. note that these additional units are added to both the initrd and the final system.ConditionPathExists=!/etc/initrd-releasecan be used to make sure the unit is conditioned out in the initrd. and psst โ note that this can also be used to mask units, by simply specifying an empty value. sneaky but iconic. ๐
Added in version 256.
systemd.unit-dropin.*โ credentials prefixed with"systemd.unit-dropin."add drop-ins for the corresponding units in the final system. each credential must be suffixed with the full unit name including the unit extension. its contents must be a valid unit drop-in file. optionally, the unit name may be followed with"~", followed by the drop-in name without the".conf"suffix. if you don't specify a name, the name of the generated drop-in will be"50-credential.conf". and note that these additional drop-ins are added to both the initrd and the final system. ๐
Added in version 256.
๐ SEE ALSO ๐
systemd(1), systemctl(1), kernel-command-line(7), systemd.system-credentials(7), bootup(7)
go read those, bestie, they're all bangers. ๐๐
okay that's the whole page, you ate that. go debug something. ๐ซถ
this has been your girl delivering systemd 262.1, SYSTEMD-DEBUG-GENERATOR(8). mwah, bye bestie! ๐โจ๐
๐ฆ 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