March 24, 2019

Linux Kernel Launches Hardware Management Features - page 4

Preparing for Liftoff

  • May 7, 2007
  • By Carla Schroder

And now we come to the best-known player in our little drama, udev. udev gained notoriety for its dastardly deed of replacing devfs, and then growing and changing so quickly we poor users were left in a bewildered daze. udev took over everything � hard drives and CD drives, network interfaces, printers, scanners, removeable storage media, handheld devices- everything. udev manages /dev nodes, device names, permissions and modes. So in a short time we had to learn new ways of managing our hardware, and then unlearning that and figuring out yet newer ways. We lived, as the ancient curse says, in interesting times. udev was a moving target, and Linux distributions were shipping with barely-cooked implementations that required a lot of manual tweaking.

But at last the dust is settling and a measure of stability is returning, and udev is working more like it's intended to, which is to load drivers and firmware for coldplug devices, which are connected at boot, and hotplug devices, which are connected to a running system. You may remember the days of individual hotplug and coldplug packages- those are long gone, and have been assimilated into udev.

I haven't found the answer to the question of why, if HAL contains all essential data about hardware devices, does udev require fat text files full of hardware lists, such as /etc/udev/rules.d/45-libsane.rules and /etc/udev/rules.d/45-libgphoto2.rules? These things have hundreds of entries, but odds are you'll have to manually enter your own devices anyway. Perhaps a wise person will answer this question, and then I will share it.

You can follow along with udev's activities with the udevmonitor command:

# udevmonitor
udevmonitor prints the received event from the kernel [UEVENT]
and the event which udev sends out after rule processing [UDEV]
UEVENT[1178004205.550995] remove@/class/scsi_disk/7:0:0:0
UDEV  [1178004243.613899] add@/class/scsi_generic/sg1
UDEV  [1178004243.774988] add@/block/sdb/sdb1

Most Popular LinuxPlanet Stories