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 eachRUN{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 is180seconds.
Added in version 216.
-s,--timeout-signal=โ sets the signal thatsystemd-udevdsends 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=โ tellssystemd-udevdwhen 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 byroot.
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 eachRUN{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 thatsystemd-udevdwill 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; specifying0disables it.
Added in version 199.
net.naming_scheme=โ network interfaces get renamed to give them predictable names when possible (unlessnet.ifnames=0is 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 theNamePolicy=setting in.linkfiles, e.g."onboard"or"path". seesystemd.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 bysystemd-udevdโ it gets converted into a.linkfile bysystemd-network-generator.service(8)instead. for this argument to actually take effect,systemd-network-generator.servicemust 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