Upstart Plans to Ease Linux Management - page 2
Streamlining the init Processes
Why do something like this? After all, the venerable old
sysvinit has served well for decades. But the times they are a'changing. Linux's 2.6 kernel delivered major gains in hardware functionality and management, thanks to power management, USB, udev and hotplugging. This has turned booting and device management upside-down. In the olden days both desktops and servers were pretty much unchanging- keyboards, mice, monitors, and printers were connected via specialized ports. Keyboards, mice, and monitors had to be connected when the system booted or it wouldn't see them. So booting and device management were static and predictable. Only laptops had hotplugging via PCMCIA or Cardbus slots, which could hotplug all manner of devices: Ethernet adapters, external IDE and SCSI drives, external monitors, MIDI interfaces and game ports, Token ring adapters, sound cards, and whatever else could be made to work.
Then along came USB everywhere, and now we can hotplug anything anytime. In fact Linux now treats all devices, including internal drives and PCI devices, as hotpluggable and manages them with the udev subsystem. Anything with a USB connector can be hotplugged: printers, scanners, storage devices, network cards, PDAs, you name it. But this presents some new issues: impermanent device names, and unreliable availablity at boot time. Yes, you can edit files in
/etc/udev/rules.d to create permanent device names, and then stuff them in
/etc/fstab to get mounted at boot time. But the Upstart devs have a vision for something even better: an event-based init daemon that responds to actual events generate by the system, rather than relying on static configurations.
This opens up the possibility for all kinds of automagical goodness, because any system event can trigger the
init daemon to do something. Like starting and stopping certain programs when you plug in and remove devices like PDAs, cameras, music players, or USB keys. Or mounting a network filesystem when it becomes available. Or triggering an alert when a certain file changes. Or speeding up boot times, because the kernel won't waste time waiting for something that is not available. Or trigger a script to run when a device is connected or removed, or a filesystem becomes available. Yes, we can do a lot of these things now, but in a kludgy, over-complicated way.
The Upstart developers promise to take it slowly, since these are fundamental system functions, and to try very hard not to break things all to heck. Debian users may also play with Upstart, since it is now in the Experimental repository.