Index: chapter06/udev.xml
===================================================================
--- chapter06/udev.xml	(revision fa21b3dc894b9964620968dfae6685d69ce89fb9)
+++ chapter06/udev.xml	(revision dc591b57ec9c9f925aa82ebab3d4f4f605ab765d)
@@ -29,7 +29,17 @@
 <title>Installation of Udev</title>
 
+<para>Create some devices that Udev cannot handle due to them being required
+very early in the boot process:</para>
+
+<screen><userinput>ln -sv /proc/self/fd /lib/udev/devices/fd 
+ln -sv /proc/self/fd/0 /lib/udev/devices/stdin
+ln -sv /proc/self/fd/1 /lib/udev/devices/stdout
+ln -sv /proc/self/fd/2 /lib/udev/devices/stderr
+ln -sv /proc/kcore /lib/udev/devices/core</userinput></screen>
+
 <para>Compile the package:</para>
 
-<screen><userinput>make EXTRAS=extras/run_directory</userinput></screen>
+<screen><userinput>make \
+EXTRAS="extras/ata_id extras/cdrom_id extras/edd_id extras/firmware extras/floppy extras/scsi_id extras/usb_id extras/volume_id"</userinput></screen>
 
 <para>The meaning of the make option:</para>
@@ -37,11 +47,8 @@
 <variablelist>
   <varlistentry>
-    <term><parameter>EXTRAS=extras/run_directory</parameter>
-    </term>
+    <term><parameter>EXTRAS=...</parameter></term>
     <listitem>
-      <para>This builds the <command>udev_run_devd</command> and
-        <command>udev_run_hotplugd</command> binaries, which are required for
-        correct handling of hotpluggable devices.
-      </para>
+      <para>This builds several helper binaries that can aid in writing custom
+      Udev rules.</para>
     </listitem>
   </varlistentry>
@@ -53,5 +60,7 @@
 <para>Install the package:</para>
 
-<screen><userinput>make DESTDIR=/ EXTRAS=extras/run_directory install</userinput></screen>
+<screen><userinput>make DESTDIR=/ \
+EXTRAS="extras/ata_id extras/cdrom_id extras/edd_id extras/firmware extras/floppy extras/scsi_id extras/usb_id extras/volume_id" \
+install</userinput></screen>
 
 <para>The meaning of the make option:</para>
@@ -75,4 +84,16 @@
 <screen><userinput>cp -v ../&udev-config-file; /etc/udev/rules.d/25-lfs.rules</userinput></screen>
 
+<para>Alter Udev's configuration file so that Udev can automatically load kernel
+modules.</para>
+
+<screen><userinput>sed -i 147,150d /etc/udev/rules.d/25-lfs.rules
+cat &gt;&gt; /etc/udev/rules.d/25-lfs.rules &lt;&lt; EOF
+# Rules to allow hotplugging of devices with modular drivers
+ACTION=="add", SUBSYSTEM=="usb", MODALIAS=="*", \
+   RUN+="/sbin/modprobe $modalias"
+ACTION=="add", SUBSYSTEM=="scsi", SYSFS{type}=="[07]", \
+   RUN+="/sbin/modprobe sd_mod"
+EOF</userinput></screen> 
+
 <para>Install the documentation that explains how to create Udev rules:</para>
 
@@ -81,4 +102,5 @@
 <!-- Not for the LiveCD -->
 <!-- Edit Me -->
+
 <para>Run the <command>udevstart</command> program to create our full
 complement of device nodes.</para>
@@ -93,6 +115,5 @@
 <segtitle>Installed programs</segtitle>
 <segtitle>Installed directory</segtitle>
-<seglistitem><seg>udev, udev_run_devd, udev_run_hotplugd, udevcontrol, udevd,
-udevinfo, udevmonitor, udevsend, udevstart, and udevtest</seg>
+<seglistitem><seg>udevcontrol, udevd, udevinfo, udevmonitor, and udevtest</seg>
 <seg>/etc/udev</seg></seglistitem>
 </segmentedlist>
@@ -102,39 +123,4 @@
 <?dbhtml list-presentation="table"?>
                                                                                 
-<varlistentry id="udev">
-<term><command>udev</command></term>
-<listitem>
-<para>Creates device nodes in <filename
-class="directory">/dev</filename> or renames network interfaces (not
-in LFS) in response to hotplug events</para>
-<indexterm zone="ch-system-udev udev"><primary sortas="b-udev">udev</primary></indexterm>
-</listitem></varlistentry>
-
-<varlistentry id="udev_run_devd">
-  <term><command>udev_run_devd</command></term>
-  <listitem>
-    <para>Executes programs and scripts in the
-      <filename class="directory">/etc/dev.d/</filename> directory in response
-      to hotplug events
-    </para>
-    <indexterm zone="ch-system-udev udev_run_devd">
-      <primary sortas="b-udev_run_devd">udev_run_devd</primary>
-    </indexterm>
-  </listitem>
-</varlistentry>
-
-<varlistentry id="udev_run_hotplugd">
-  <term><command>udev_run_hotplugd</command></term>
-  <listitem>
-    <para>Executes programs and scripts in the
-      <filename class="directory">/etc/hotplug.d/</filename> directory in
-      response to hotplug events
-    </para>
-    <indexterm zone="ch-system-udev udev_run_hotplugd">
-      <primary sortas="b-udev_run_hotplugd">udev_run_hotplugd</primary>
-    </indexterm>
-  </listitem>
-</varlistentry>
-
 <varlistentry id="udevcontrol">
 <term><command>udevcontrol</command></term>
@@ -175,24 +161,4 @@
 </listitem></varlistentry>
 
-<varlistentry id="udevsend">
-<term><command>udevsend</command></term>
-<listitem>
-<para>Delivers hotplug events to <command>udevd</command></para>
-<indexterm zone="ch-system-udev udevsend"><primary sortas="b-udevsend">udevsend</primary></indexterm>
-</listitem></varlistentry>
-
-<varlistentry id="udevstart">
-<term><command>udevstart</command></term>
-<listitem>
-<para>Creates device nodes in <filename
-class="directory">/dev</filename> that correspond to drivers compiled directly
-into the kernel; it performs that task by simulating hotplug events presumably
-dropped by the kernel before invocation of this program (e.g., because the root
-filesystem has not been mounted) and submitting such synthetic hotplug events
-to <command>udev</command></para>
-<indexterm zone="ch-system-udev udevstart"><primary sortas="b-udevstart">udevstart</primary></indexterm>
-</listitem>
-</varlistentry>
-
 <varlistentry id="udevtest">
 <term><command>udevtest</command></term>
