SYSTEMD-UDEVD.SERVICE(8)

๐ŸŒธ SYSTEMD-UDEVD.SERVICE ๐Ÿ’…

okay bestie, welcome to the systemd-udevd.service page โ€” aka the manual for systemd-udevd-kernel.socket, systemd-udevd-varlink.socket, and systemd-udevd itself, the Device event managing daemon. yes she's a daemon. yes she's booked and busy. ๐Ÿ’–


โœจ SYNOPSIS โœจ

systemd-udevd.service

systemd-udevd-kernel.socket

systemd-udevd-varlink.socket

/usr/lib/systemd/systemd-udevd [--daemon] [--debug] [--children-max=]
                               [--exec-delay=] [--event-timeout=]
                               [--resolve-names=early|late|never]
                               [--version] [--help]

๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

so systemd-udevd literally just sits there listening to kernel uevents. the way that she's so attentive. ๐Ÿ‘‘ for every single event she gets, she runs the matching instructions that are written in the udev rules. wanna know more about those rules? go read udev(7) babe.

and you can configure how this daemon behaves in like four different ways:

  • via udev.conf(5),
  • via her command line options,
  • via environment variables,
  • and via the kernel command line.

โ€ฆor you can just change stuff on the fly with udevadm control. main character energy fr fr. โœจ


๐ŸŽ€ OPTIONS ๐ŸŽ€

  • -d, --daemon โ€” detach and run in the background. she's leaving, she's independent, she's got her own thing going on. ๐Ÿซถ

Added in version 186.

  • -D, --debug โ€” prints debug messages to standard error. spill the tea, girl. ๐Ÿ’…

Added in version 186.

  • -c, --children-max= โ€” caps how many events can be executed in parallel at the same time.

Added in version 186.

  • -e, --exec-delay= โ€” delays the execution of each RUN{program} parameter by however many seconds you give it.

lowkey useful when you're debugging system crashes during coldplug that happen because some non-working kernel modules got loaded. ๐Ÿ˜ญ

Added in version 186.

  • -t, --event-timeout= โ€” sets how many seconds to wait for events to finish. after that time is up, the event gets terminated. the default is 180 seconds.

Added in version 216.

  • -s, --timeout-signal= โ€” sets the signal that systemd-udevd sends to forked-off processes once the event timeout is reached.

you can override this setting at boot time with the kernel command line option udev.timeout_signal=.

setting it to SIGABRT may be helpful if you're trying to debug worker timeouts. defaults to SIGKILL.

heads up bestie: setting this option on the command line overrides the setting from the configuration file. ๐Ÿ’€

Added in version 246.

  • -N, --resolve-names= โ€” tells systemd-udevd when to resolve names of users and groups:
    • early (the default) โ€” names get resolved when the rules are parsed.
    • late โ€” names get resolved for every event.
    • never โ€” names are never resolved and all devices are owned by root.

Added in version 186.

  • -h, --help โ€” prints a short help text and exits. bye bestie ๐Ÿ‘‹
  • -V, --version โ€” prints a short version string and exits. โญ

๐ŸŒˆ KERNEL COMMAND LINE ๐ŸŒˆ

okay so parameters prefixed with rd. get read when systemd-udevd is used in an initrd, and the ones without the prefix get processed both in the initrd and on the host. noted. ๐Ÿ“

  • udev.log_level=, rd.udev.log_level= โ€” sets the log level.

Added in version 247.

  • udev.trace[=BOOL], rd.udev.trace[=BOOL] โ€” enables/disables trace logging. when it's enabled, udev.log_level= gets ignored, and "debug" level is assumed instead.

Added in version 258.

  • udev.children_max=, rd.udev.children_max= โ€” limits the number of events executed in parallel.

Added in version 186.

  • udev.exec_delay=, rd.udev.exec_delay= โ€” delays the execution of each RUN{program} parameter by the given number of seconds. this one might be useful when debugging system crashes during coldplug caused by loading non-working kernel modules. ๐Ÿ™ˆ

Added in version 186.

  • udev.event_timeout=, rd.udev.event_timeout= โ€” waits for events to finish, up to the given number of seconds. this might be useful if events are getting terminated because kernel drivers are taking wayyy too long to initialize. ๐Ÿ˜ญ

Added in version 216.

  • udev.timeout_signal=, rd.udev.timeout_signal= โ€” specifies a signal that systemd-udevd will send to workers on timeout.
note: the kernel command line option overrides both the setting in the configuration file and the one on the program command line. she said no arguments, my word is law. ๐Ÿ‘‘

Added in version 246.

  • udev.blockdev_read_only, rd.udev.blockdev_read_only โ€” if you specify this, all physical block devices get marked read-only as they appear. synthetic block devices (like loopback block devices or device mapper devices) are left exactly as they are.

this is useful to guarantee that the contents of physical block devices stay unmodified during runtime โ€” for example, to implement fully stateless systems, for testing, or for recovery situations where corrupted file systems should not be corrupted further through accidental modification. periodt. ๐Ÿ’…

a block device can be marked writable again by issuing the blockdev --setrw command, see blockdev(8) for details.

Added in version 246.

  • net.ifnames= โ€” network interfaces get renamed to give them predictable names when possible. it's enabled by default; specifying 0 disables it.

Added in version 199.

  • net.naming_scheme= โ€” network interfaces get renamed to give them predictable names when possible (unless net.ifnames=0 is specified, see above). with this kernel command line option you can pick a specific version of this algorithm and override the default that was chosen at compilation time.

it expects one of the naming scheme identifiers listed in systemd.net-naming-scheme(7), or "latest" to select the latest scheme known (to this particular version of systemd-udevd.service).

note that selecting a specific scheme is not sufficient to fully stabilize interface naming: the naming is generally derived from driver attributes exposed by the kernel. as the kernel gets updated, previously missing attributes that systemd-udevd.service is checking might appear, and that affects older name derivation algorithms too. ๐Ÿ˜ฌ

Added in version 240.

  • net.ifname_policy=policy1[,policy2,...][,MAC] โ€” specifies naming policies applied when renaming network interfaces. takes a list of policies and an optional MAC address separated with commas. each policy value must be one of the policies understood by the NamePolicy= setting in .link files, e.g. "onboard" or "path". see systemd.link(5) for more details.

when the MAC address is specified, the policies are applied to the interface that has that address. when no MAC address is specified, the policies are applied to all interfaces. this kernel command line argument can be specified multiple times.

plot twist: this argument is not directly read by systemd-udevd โ€” it gets converted into a .link file by systemd-network-generator.service(8) instead. for this argument to actually take effect, systemd-network-generator.service must be enabled. ๐Ÿงš

Example:

net.ifname_policy=keep,kernel,path,slot,onboard,01:23:45:67:89:ab
net.ifname_policy=keep,kernel,path,slot,onboard,mac

This is mostly equivalent to creating the following .link files:

# 91-name-policy-with-mac.link
[Match]
MACAddress=01:23:45:67:89:ab

[Link]
NamePolicy=keep kernel path slot onboard
AlternativeNamePolicy=path slot onboard

and

# 92-name-policy-for-all.link
[Match]
OriginalName=*

[Link]
NamePolicy=keep kernel path slot onboard mac
AlternativeNamePolicy=path slot onboard mac

Added in version 250.


๐Ÿซถ SEE ALSO ๐Ÿซถ

udev.conf(5), udev(7), udevadm(8)


and that's the whole page bestie, you ate that. ๐Ÿ’– this was systemd 262.1, from the SYSTEMD-UDEVD.SERVICE(8) manual โ€” go forth and manage those device events, queen. ๐ŸŽ€โœจ๐Ÿ‘‘

๐Ÿ“ฆ 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