PSA: bad HP udev rules somehow break boot with systemd 38

Adam Williamson awilliam at redhat.com
Mon Jan 23 20:39:45 UTC 2012


Hey, folks. Just thought I'd throw this one out there in case it helps
anyone else.

So ever since systemd 38 landed in Rawhide, I couldn't boot with it: had
to downgrade to 37 to make the system boot. I was pretty sure it wasn't
a generic problem or else more people would be yelling.

Somehow it turns out to be caused by a bunch of outdated udev rules that
something HP-ish has created on my system at some time:

/etc/udev/rules.d/86-hpmud-hp_laserjet_1000.rules
/etc/udev/rules.d/86-hpmud-hp_laserjet_1005_series.rules
/etc/udev/rules.d/86-hpmud-hp_laserjet_1018.rules
/etc/udev/rules.d/86-hpmud-hp_laserjet_1020.rules
/etc/udev/rules.d/86-hpmud-hp_laserjet_p1005.rules
/etc/udev/rules.d/86-hpmud-hp_laserjet_p1006.rules
/etc/udev/rules.d/86-hpmud-hp_laserjet_p1007.rules
/etc/udev/rules.d/86-hpmud-hp_laserjet_p1008.rules
/etc/udev/rules.d/86-hpmud-hp_laserjet_p1505.rules
/etc/udev/rules.d/86-hpmud-hp_laserjet_professional_p1102.rules
/etc/udev/rules.d/86-hpmud-hp_laserjet_professional_p1102w.rules
/etc/udev/rules.d/86-hpmud-hp_laserjet_professional_p1566.rules

None of these are owned by a package, so I don't know what created them
- hp-setup maybe?

Anyhow, these all have a ton of keys of the form SYSFS{idVendor} in
them. That's been deprecated syntax for udev since like 2006, and they
finally killed it with a recent udev release. So I was getting a ton of
errors in /var/log/messages on boot, of the form:

Jan 23 12:21:29 adam udevd[509]: unknown key 'SYSFS{idVendor}'
in /etc/udev/rules.d/86-hpmud-hp_laserjet_professional_p1566.rules:6

Somehow, this would result in the system failing to boot under systemd
38, with the udev service starting and then stopping itself. That would
result in emergency mode, since lots of other services won't start if
udev fails. systemd 37 didn't have a problem booting. I suppose the
large number of errors slows udev start down so much that it hits some
kind of timeout in 38 that isn't in 37, maybe?

Anyhow, the fix turned out to be simple:

sed -i -e 's,SYSFS,ATTR,g' /etc/udev/rules.d/86-*

so if you're hitting a similar issue, and you have those HP udev rules,
try that. Worked for me.
-- 
Adam Williamson
Fedora QA Community Monkey
IRC: adamw | Twitter: AdamW_Fedora | identi.ca: adamwfedora
http://www.happyassassin.net



More information about the devel mailing list