SYSTEMD-IMDS-GENERATOR(8)

πŸ“¦
version 262.1 Β· 3 versions
, in arch rolling

πŸ’– systemd-imds-generator(8) πŸ’–

okay bestie, pull up a chair, we're talking about systemd-imds-generator β€” a generator that turns IMDS (Instance Metadata Service) on at boot for the systems that can actually do it. She's a little systemd system-generator living her best life in /usr/lib/systemd/system-generators/, and she's about to tell you exactly what she does. πŸ¦‹


✨ SYNOPSIS ✨

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

🌸 DESCRIPTION 🌸

So systemd-imds-generator is a generator that enables IMDS (Instance Metadata Service) functionality at boot on systems that support it. That's the vibe. And she does three specific things, no more no less:

  • She pulls the systemd-imdsd.socket unit (which activates systemd-imdsd@.service(8)) into the initial transaction. What that gets you: IMDS access for local applications, delivered via Varlink IPC. ✨
  • She pulls the systemd-imds-early-network.service unit into the initial transaction, which generates a suitable systemd.network(5) network configuration file. That file is what allows early-boot network access to the IMDS functionality. πŸ”₯
  • She pulls the systemd-imds-import.service unit into the initial transaction, which automatically imports various credentials from IMDS into the local system, storing them in /run/credstore/. πŸ’–

By default, whether to pull in these services or not is decided based on hwdb(7) information, which detects various IMDS environments automatically. (She just knows, iykyk.) But β€” plot twist β€” this logic may be overridden via systemd.imds=, see below. πŸ‘‘

systemd-imds-generator implements systemd.generator(7).


πŸŽ€ KERNEL COMMAND LINE πŸŽ€

She understands the following kernel command line parameters, and yes, you type them in exactly like this:

  • systemd.imds= β€” Takes a boolean argument or the special value "auto", and may be used to enable or disable the IMDS logic. Quick note though, bestie: this controls only whether the relevant services (as listed above) are automatically pulled into the initial transaction β€” it has no effect if some other unit or the user explicitly activates the relevant units. If this option is not used (or set to "auto"), automatic detection of IMDS is used, see above. ✨

Added in version 261.

  • systemd.imds.network= β€” Takes one of "off", "locked", "unlocked". Controls whether and how to set up networking for IMDS endpoint access. Unless set to "off", early boot networking is enabled, ensuring that the IMDS endpoint can be reached. If set to "locked", direct access to the IMDS endpoint by regular unprivileged processes is disabled via a "prohibit" route, so that any access must be done through systemd-imdsd@.service or its associated tools. If set to "unlocked" (the default), this "prohibit" route is not created, and regular unprivileged processes can directly contact IMDS. πŸ’…

Added in version 261.

  • systemd.imds.import= β€” Takes a boolean argument. If false, the systemd-imds-import.service (see above) is not pulled into the initial transaction, i.e. no credentials are imported from IMDS. Defaults to true in the initrd, and false otherwise. 🫢

Added in version 261.


🌈 SEE ALSO 🌈

systemd(1), systemd-imds(1), systemd-imdsd@.service(8), systemd.system-credentials(7)


and that's the whole page, bestie, no cap πŸ’€πŸ’– this one's from systemd 262.1, so go forth and let the generator do her thing β€” she ate, periodt. πŸŽ€βœ¨

πŸ“¦ 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