A few things have piled up, so before any simple patches to get it up to speed (with other related or no stuff), maybe you have some other ideas/plans: 1) hwdb This is enabled by default, but de-facto depends on usbutils (usb.ids) and pciutils (pci.ids). Which is prefectly fine, apart from /usr mounts. Nothing anywhere close to important here judging from egrep, but there're a few rules that set few things depending on the contents of those files. There're a few options I can see here: 1) check+mount in initramfs (btw, with few simple alterations to rc, dracut can serve as pretty much perfect initramfs for CRUX) 2) "we don't support separate /usr" - well, it's an option ... 3) disable hwdb ... 4) point udev to different places for usb.ids (since 171) and pci.ids, and adjust respective packages to additionally copy *.ids files to some place under / (/lib/hwdb ? etc.). To make it flexible, simple patches to shell scripts used to update those files would be necessary as well (update_pciids, update_usbids.sh). 5) some other options Either way, if udev is assumed to be able to run cleanly with unmounted and separate /usr, something here would be needed. I'd opt for #4 now (and #1 in a long shot), as the required changes are pretty trivial (even if ugly, see for fun: http://www.spinics.net/linux/lists/hotplug/msg04867.html) 2) acl acl is in core, and I'd guess can be just enabled for those that need it 3) keymaps no other dependencies or issues (if i haven't missed anything), would make a few laptop users more happy 4) generator rules Deprecated but still enabled. The stance on network renaming is, that those that need it should provide static rules themselves (which is pretty trivial to do either way). I'd disable it and install some example file in /etc/udev/rules.d 5) edd, floppy, modeswitch deprecated and disabled by default (modeswitch moved to upstream, edd caused problems, floopy created deprecated names iirc), so not much to mention here 6) gudev If it's decided to keep that disabled (besides aiming at as minimal build as possible, any other reasons ?), then trickery with moving glib's runtime dirs to / is likely unnecessary as well (gio part in particular) 9) other things and somewhat related things - do we really need udevinfo symlink anymore ? (think the switch to udevadm is roughly 2 years old already) - do we still need exec access in /dev ? (or itow, is there still anything that would want such thing present) - I'd really move start_udev to rc. It's not even supposed to be run from commandline. And it needs to check a few more things related to handover (generally /dev submounts). - vgscan should have --mknodes removed, as everything is handled by udev now. It can cause a few warning messages as well, if udev-configured lvm finds nodes manually created (overwritten) by lvm (which --mknodes will promptly do) - vgchange would be better to use --sysinit - there's one more thing related to lvm - the udev db must be preserved across pivot, otherwise vgchange would have to be called with --refresh to properly repopulate udev db; overall something to keep in mind depending on what kind of initramfs builder one uses - in context of lvm/dm - do we really need them as separate packages ? Space savings are at best symbolic, Pkgfiles are practically identical. - in context of lvm/dm/md/udev - do we really need static builds (and random patches making that still possible) ?