You're looking at a bunch of changes if you want to run latest udev. These are not in any particular order:
* You need a /run directory that is a tmpfs, and it needs to be available in *early* boot. This means that it will have to be added to the aaa_base package, and rc.S will need to mount it before much else happens, but it also has to be mounted inside initrd in case the system is coming up from there, which means the rc.S logic has to account for that.
* If you're using an initrd, you'll have to set 'OPTIONS+="db_persist"' for dm devices inside the initrd, which means writing that into a udev rules file if raid and/or lvm support are included in the initrd. Otherwise, the state info for those will not persist from the initrd to the real system. While you're messing with the initrd, you may as well use the new method in udevadm to kill udevd inside the initrd, and go ahead and start udevd before loading modules (it shouldn't be necessary to load them manually at all anyway) -- that will solve the problem with firmware not loading properly from an initrd. While you're messing with that, you might find the post here on LQ where ecd102 provided a patch to include any needed firmware in the initrd
Also, somewhere around line 270 of src/mkinitrd/init, make this change:
Code:
-RESUMEDEV=$(ls -l $RESUMEDEV | awk '{ print $NF }')
+RESUMEDEV=$(readlink -f $RESUMEDEV)
* You'll need to install kmod, since new udev requires that. Whether you want to replace module-init-tools or not is your call, and that decision will require you to adjust the build process accordingly. Seems fine as a replacement here, for what that's worth.
* While you're messing with udev, you may as well edit the usb-controller file in /etc/modprobe.d to use the new softdep syntax instead of the deprecated 'install' stuff. Also, in rc.udev, you can kill the creation of /dev/root symlink; nothing uses it these days, and it was an ugly hack anyway.
While I'm talking about early boot stuff, if you happen to use root on lvm, you might consider these changes I've made locally (yes, I'm reading from my notes here), but how to do it will be left as an exercise for the reader:
Code:
* lvm2
- use /run instead of /var/run ; this eliminates some warnings about lock
failures on boot with fully encrypted setup (since /run/lock/lvm is
writable already, while /var/lock/lvm isn't (since /var is part of /,
which is still ro, or /var is separate filesystem, which isn't mounted
yet))
In case it's not clear, all of this is working just fine here, but the changes are (as you can see) somewhat intrusive. Sadly, there are even more intrusive changes needed by other upgrades that aren't strictly necessary for the udev update.