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) ?