As discussed in HardwareDetection there are many compelling reasons to select both the 2.6.15 kernel and the required udev 071 for our hardware-detection needs. The upgrade from the current udev 060 is a major change that affects many packages currently in the archive, some requiring changes and some becoming deprecated.

This spec outlines a roadmap of changes required.



  • Update to most recent version and use to compile tools (like udev) that will be placed in the initramfs.


  • Update or repackage udev to the latest version from upstream (071).
  • There are some more recent changes in the git repository that provide caching of the udev rules and further volume UUID support (that would be nice for ProbeForRootFilesystem); so we'll pull these and add them to the package.

As discussed in HardwareActivation:

  • Implement udevd scoreboard
  • Implement udevplug
  • The new udev package will Provide, Conflict and Replace the old hotplug package.
  • Ensure that during upgrade hotplug configuration is cleaned away, and the init script disabled.
  • As discussed in NetworkMagic, move the network agent from hotplug to ifupdown.

  • Move blacklists and isapnp alias map from hotplug package to udev. These will continue to be maintained with new entries added as necessary.
  • Add new udev rules to replace usbfs with /dev/bus/usb.


  • Ask the ftpmasters to eject it from the archive like the bitch it is.


  • Upgrade to most recent version to ensure we have the best alias and blacklist support.


  • Ask the ftpmasters to gently lay it to rest in the morgue, and plant a flower on its chest.


Update the initramfs to take advantage of the new cold-plugging system described in HardwareDetection:

  • Mount virtual filesystems.
  • Start udevd to handle device node creation, etc.
  • Create base device nodes by tickling the parts of /sys that reflect the platform.

  • Load essential modules from /etc/mkinitramfs/modules (and other force_load calls).

  • Walk the PCI /sys tree for hard-drive devices and tickle those, also tickle the IDE, SCSI and i2o buses. Other buses aren't known to contain drives we support for the root filesystem.

  • Attempt hibernate recovery.
  • Walk the PCI, USB and ieee1394 trees to locate controllers and hubs, for both removable devices and keyboards.
  • Mount root filesystem and switch to userspace.

User space

  • Replace the initial S02mountvirtfs and S04udev scripts with a single script that checks whether the initramfs was run, and if not mounts virtual filesystems and prepares /dev.

  • Start udevd if not running, or instruct the running udevd to reload the rules and add a new inotify watch on the real filesystem.
  • Walk the entire /sys tree and tickle all events; this will not only cold-plug all of the hardware, but adjust the permissions of anything created in the initramfs.

Data preservation and migration

Custom-written hotplug rules will need to be migrated to be udev rules. There is no way to do this in an automated fashion.

Outstanding issues

Rebooting the system shortly after the upgrade is critical. It is quite likely that hal will stop working, and the rules that are on the harddrive may then be completely incompatible. The cute little lightbulb "Please click on me for a message" in the corner is probably insufficiently invasive to make sure this happens. That notification applet should be refered to mpt for a case of the mean-and-ugly treatment. This is out of scope for this spec.

This spec has been created as https://launchpad.net/distros/ubuntu/+spec/urgent-reboot-notification


UdevRoadmap (last edited 2008-08-06 16:16:48 by localhost)