UdevRoadmap

Differences between revisions 6 and 18 (spanning 12 versions)
Revision 6 as of 2005-11-03 16:42:17
Size: 2129
Editor: 209
Comment:
Revision 18 as of 2008-08-06 16:16:48
Size: 4188
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
 * '''Launchpad Entry''': https://launchpad.net/distros/ubuntu/+spec/foo
 * '''Created''': [[Date(2005-11-02T17:22:51Z)]] by JeffBailey
 * '''Contributors''': JeffBailey
 * '''Packages affected''':
 * '''Launchpad Entry''': https://launchpad.net/distros/ubuntu/+spec/udev-roadmap
 * '''Created''': <<Date(2005-11-02T17:22:51Z)>> by JeffBailey
 * '''Contributors''': JeffBailey, ScottJamesRemnant
 * '''Packages affected''': initramfs-tools, hotplug, grepmap, udev, klibc, linux-image-*, modutils
Line 10: Line 10:
Upgrading from udev 060 to 071 is a major change that affects initramfs, udev, hotplug, hal, and many other pieces. The 2.6.15 kernel will require udev 071. Because these changes are invasive, this spec is split out from HardwareDetection to make sure that it can be reviewed and implemented independantly. 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.
Line 12: Line 12:
== Rationale ==

 * Many components of the Linux system will require a newer udev. These include ProbeForRootFilesystem, LinuxKernelRoadmap, and HardwareDetection.

== Scope ==

Newer versions of udev affect the following packages:

 * initramfs-tools

 * hotplug

 * klibc

 * hal

 * linux-image-*
This spec outlines a roadmap of changes required.
Line 32: Line 16:
=== klibc ===
Line 33: Line 18:
=== initramfs ===
Update the initramfs startup sequence to reflect the following:

 * Create base device nodes
 * Start udevd
 * Load modules from /etc/mkinitramfs/modules (and other force_load calls)

''' Note: without udevstart, something needs to correct permissions, or we need to provide the rules. '''

 * Walk the sysfs tree for harddrive devices and tickle uevents for those
 * Walk the ide, scsi, and i2o busses
 * Attempt hibernate recovery
 * Walk the pci sysfs tree for usb controllers
 * Update to most recent version and use to compile tools (like udev) that will be placed in the initramfs.
Line 49: Line 22:
 * Upgrade to at least udev-071.
 * Implement scroreboard from HardwareActivation
 * Implement udevplug from HardwareActivation
 * 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.
Line 53: Line 25:
=== full userspace init scripts === As discussed in HardwareActivation:
 * Implement udevd scoreboard
 * Implement udevplug
Line 55: Line 29:
 * Where udevstart and coldplugging routines are currently run, ensure that udevd is running (in case of custom kernels), and pass over entire sysfs tree to cause events to be rerun. This will ensure that device nodes are created with correct permissions and according to the rules of the running system.  * 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`.

=== hotplug ===

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

=== modutils ===

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

=== grepmap ===

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

=== initramfs ===

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.
Line 59: Line 69:
Custom written hotplug rules will need to be migrated to be udev rules. There is no way to do this in an automated fashion. Custom-written hotplug rules will need to be migrated to be udev rules. There is no way to do this in an automated fashion.
Line 62: Line 72:

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
----
CategorySpec

Summary

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.

Implementation

klibc

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

udev

  • 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.

hotplug

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

modutils

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

grepmap

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

initramfs

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


CategorySpec

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