Index: bootscripts/common/bootscripts.xml
===================================================================
--- bootscripts/common/bootscripts.xml	(revision bf8c11fb096060737d31a21fba001b2722737b95)
+++ bootscripts/common/bootscripts.xml	(revision bf8c11fb096060737d31a21fba001b2722737b95)
@@ -0,0 +1,305 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+  "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../../general.ent">
+  <!ENTITY % patches-entities SYSTEM "../../patches.ent">
+  %general-entities;
+  %patches-entities;
+]>
+
+<sect1 id="ch-scripts-bootscripts" role="wrap">
+  <?dbhtml filename="bootscripts.html"?>
+
+  <title>LFS-Bootscripts-&lfs-bootscripts-version;</title>
+
+  <indexterm zone="ch-scripts-bootscripts">
+    <primary sortas="a-Bootscripts">Bootscripts</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>The LFS-Bootscripts package contains a set of scripts to
+    start/stop the LFS system at bootup/shutdown.</para>
+
+    <segmentedlist>
+      <segtitle>&buildtime;</segtitle>
+      <segtitle>&diskspace;</segtitle>
+
+      <seglistitem>
+        <seg>Not checked yet</seg>
+        <seg>Not checked yet</seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <segmentedlist>
+      <segtitle>&dependencies;</segtitle>
+
+      <seglistitem>
+        <seg>Bash and Coreutils</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+  <sect2 role="installation">
+    <title>Installation of LFS-Bootscripts</title>
+
+    <para>Install the package:</para>
+
+<screen><userinput>make install</userinput></screen>
+
+  </sect2>
+
+  <sect2 id="contents-bootscripts" role="content">
+    <title>Contents of LFS-Bootscripts</title>
+
+    <segmentedlist>
+      <segtitle>Installed scripts</segtitle>
+
+      <seglistitem>
+        <seg>checkfs, cleanfs, console, functions, halt, hotplug, ifdown,
+        ifup, localnet, mountfs, mountkernfs, network, rc, reboot, sendsignals,
+        setclock, static, swap, sysklogd, template, and udev</seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="checkfs-bootscripts">
+        <term><command>checkfs</command></term>
+        <listitem>
+          <para>Checks the integrity of the file systems before they are
+          mounted (with the exception of journal and network based file
+          systems)</para>
+          <indexterm zone="ch-scripts-bootscripts checkfs-bootscripts">
+            <primary sortas="d-checkfs">checkfs</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="cleanfs-bootscripts">
+        <term><command>cleanfs</command></term>
+        <listitem>
+          <para>Removes files that should not be preserved between reboots,
+          such as those in <filename class="directory">/var/run/</filename>
+          and <filename class="directory">/var/lock/</filename>; it re-creates
+          <filename>/var/run/utmp</filename> and removes the possibly present
+          <filename>/etc/nologin</filename>, <filename>/fastboot</filename>,
+          and <filename>/forcefsck</filename> files</para>
+          <indexterm zone="ch-scripts-bootscripts cleanfs-bootscripts">
+            <primary sortas="d-cleanfs">cleanfs</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="console-bootscripts">
+        <term><command>console</command></term>
+        <listitem>
+          <para>Loads the correct keymap table for the desired keyboard
+          layout; it also sets the screen font</para>
+          <indexterm zone="ch-scripts-bootscripts console-bootscripts">
+            <primary sortas="d-console">console</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="functions-bootscripts">
+        <term><command>functions</command></term>
+        <listitem>
+          <para>Contains common functions, such as error and status checking,
+          that are used by several bootscripts</para>
+          <indexterm zone="ch-scripts-bootscripts functions-bootscripts">
+            <primary sortas="d-functions">functions</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="halt-bootscripts">
+        <term><command>halt</command></term>
+        <listitem>
+          <para>Halts the system</para>
+          <indexterm zone="ch-scripts-bootscripts halt-bootscripts">
+            <primary sortas="d-halt">halt</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="hotplug-bootscripts">
+        <term><command>hotplug</command></term>
+        <listitem>
+          <para>Loads modules for system devices</para>
+          <indexterm zone="ch-scripts-bootscripts hotplug-bootscripts">
+            <primary sortas="d-hotplug">hotplug</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="ifdown-bootscripts">
+        <term><command>ifdown</command></term>
+        <listitem>
+          <para>Assists the network script with stopping network devices</para>
+          <indexterm zone="ch-scripts-bootscripts ifdown-bootscripts">
+            <primary sortas="d-ifdown">ifdown</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="ifup-bootscripts">
+        <term><command>ifup</command></term>
+        <listitem>
+          <para>Assists the network script with starting network devices</para>
+          <indexterm zone="ch-scripts-bootscripts ifup-bootscripts">
+            <primary sortas="d-ifup">ifup</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="localnet-bootscripts">
+        <term><command>localnet</command></term>
+        <listitem>
+          <para>Sets up the system's hostname and local loopback device</para>
+          <indexterm zone="ch-scripts-bootscripts localnet-bootscripts">
+            <primary sortas="d-localnet">localnet</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="mountfs-bootscripts">
+        <term><command>mountfs</command></term>
+        <listitem>
+          <para>Mounts all file systems, except ones that are marked
+          <emphasis>noauto</emphasis> or are network based</para>
+          <indexterm zone="ch-scripts-bootscripts mountfs-bootscripts">
+            <primary sortas="d-mountfs">mountfs</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="mountkernfs-bootscripts">
+        <term><command>mountkernfs</command></term>
+        <listitem>
+          <para>Mounts virtual kernel file systems, such as
+          <systemitem class="filesystem">proc</systemitem></para>
+          <indexterm zone="ch-scripts-bootscripts mountkernfs-bootscripts">
+            <primary sortas="d-mountkernfs">mountkernfs</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="network-bootscripts">
+        <term><command>network</command></term>
+        <listitem>
+          <para>Sets up network interfaces, such as network cards, and sets up
+          the default gateway (where applicable)</para>
+          <indexterm zone="ch-scripts-bootscripts network-bootscripts">
+            <primary sortas="d-network">network</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="rc-bootscripts">
+        <term><command>rc</command></term>
+        <listitem>
+          <para>The master run-level control script; it is responsible for
+          running all the other bootscripts one-by-one, in a sequence
+          determined by the name of the symbolic links being processed</para>
+          <indexterm zone="ch-scripts-bootscripts rc-bootscripts">
+            <primary sortas="d-rc">rc</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="reboot-bootscripts">
+        <term><command>reboot</command></term>
+        <listitem>
+          <para>Reboots the system</para>
+          <indexterm zone="ch-scripts-bootscripts reboot-bootscripts">
+            <primary sortas="d-reboot">reboot</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="sendsignals-bootscripts">
+        <term><command>sendsignals</command></term>
+        <listitem>
+          <para>Makes sure every process is terminated before the system reboots
+          or halts</para>
+          <indexterm zone="ch-scripts-bootscripts sendsignals-bootscripts">
+            <primary sortas="d-sendsignals">sendsignals</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="setclock-bootscripts">
+        <term><command>setclock</command></term>
+        <listitem>
+          <para>Resets the kernel clock to local time in case the hardware clock
+          is not set to UTC time</para>
+          <indexterm zone="ch-scripts-bootscripts setclock-bootscripts">
+            <primary sortas="d-setclock">setclock</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="static-bootscripts">
+        <term><command>static</command></term>
+        <listitem>
+          <para>Provides the functionality needed to assign a static Internet
+          Protocol (IP) address to a network interface</para>
+          <indexterm zone="ch-scripts-bootscripts static-bootscripts">
+            <primary sortas="d-static">static</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="swap-bootscripts">
+        <term><command>swap</command></term>
+        <listitem>
+          <para>Enables and disables swap files and partitions</para>
+          <indexterm zone="ch-scripts-bootscripts swap-bootscripts">
+            <primary sortas="d-swap">swap</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="sysklogd-bootscripts">
+        <term><command>sysklogd</command></term>
+        <listitem>
+          <para>Starts and stops the system and kernel log daemons</para>
+          <indexterm zone="ch-scripts-bootscripts sysklogd-bootscripts">
+            <primary sortas="d-sysklogd">sysklogd</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="template-bootscripts">
+        <term><command>template</command></term>
+        <listitem>
+          <para>A template to create custom bootscripts for other
+          daemons</para>
+          <indexterm zone="ch-scripts-bootscripts template-bootscripts">
+            <primary sortas="d-template">template</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="udev-bootscripts">
+        <term><command>udev</command></term>
+        <listitem>
+          <para>Prepares the <filename class="directory">/dev</filename>
+          directory and starts Udev</para>
+          <indexterm zone="ch-scripts-bootscripts udev-bootscripts">
+            <primary sortas="d-udev">udev</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
Index: bootscripts/common/console.xml
===================================================================
--- bootscripts/common/console.xml	(revision bf8c11fb096060737d31a21fba001b2722737b95)
+++ bootscripts/common/console.xml	(revision bf8c11fb096060737d31a21fba001b2722737b95)
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+  "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-scripts-console">
+  <?dbhtml filename="console.html"?>
+  <title>Configuring the Linux Console</title>
+
+  <indexterm zone="ch-scripts-console">
+    <primary sortas="d-console">console</primary>
+  <secondary>configuring</secondary></indexterm>
+
+  <para>This section discusses how to configure the <command>console</command>
+  bootscript that sets up the keyboard map and the console font. If non-ASCII
+  characters (e.g., the British pound sign and Euro character) will not be
+  used and the keyboard is a U.S. one, skip this section. Without the
+  configuration file, the <command>console</command> bootscript will do
+  nothing.</para>
+
+  <para>The <command>console</command> script reads the
+  <filename>/etc/sysconfig/console</filename> file for configuration
+  information. Decide which keymap and screen font will be used. Various
+  language-specific HOWTO's can also help with this (see <ulink
+  url="http://www.tldp.org/HOWTO/HOWTO-INDEX/other-lang.html"/>. A pre-made
+  <filename>/etc/sysconfig/console</filename> file with known settings for
+  several countries was installed with the LFS-Bootscripts package, so the
+  relevant section can be uncommented if the country is supported. If still
+  in doubt, look in the <filename class="directory">/usr/share/kbd</filename>
+  directory for valid keymaps and screen fonts. Read
+  <filename>loadkeys(1)</filename> and <filename>setfont(8)</filename> to
+  determine the correct arguments for these programs. Once decided, create
+  the configuration file with the following command:</para>
+
+<screen><userinput>cat &gt;/etc/sysconfig/console &lt;&lt;"EOF"
+<literal>KEYMAP="<replaceable>[arguments for loadkeys]</replaceable>"
+FONT="<replaceable>[arguments for setfont]</replaceable>"</literal>
+EOF</userinput></screen>
+
+  <para>For example, for Spanish users who also want to use the Euro
+  character (accessible by pressing AltGr+E), the following settings are
+  correct:</para>
+
+<screen><userinput>cat &gt;/etc/sysconfig/console &lt;&lt;"EOF"
+<literal>KEYMAP="es euro2"
+FONT="lat9-16 -u iso01"</literal>
+EOF</userinput></screen>
+
+  <note>
+    <para>The <envar>FONT</envar> line above is correct only for the ISO
+    8859-15 character set. If using ISO 8859-1 and, therefore, a pound sign
+    instead of Euro, the correct <envar>FONT</envar> line would be:</para>
+
+<screen><userinput>FONT="lat1-16"</userinput></screen>
+
+  </note>
+
+    <para>If the <envar>KEYMAP</envar> or <envar>FONT</envar> variable is not
+    set, the <command>console</command> initscript will not run the
+    corresponding program.</para>
+
+    <para>In some keymaps, the Backspace and Delete keys send characters
+    different from ones in the default keymap built into the kernel. This
+    confuses some applications. For example, Emacs displays its help (instead
+    of erasing the character before the cursor) when Backspace is pressed.
+    To check if the keymap in use is affected (this works only for i386
+    keymaps):</para>
+
+<screen><userinput>zgrep '\W14\W' <replaceable>[/path/to/your/keymap]</replaceable></userinput></screen>
+
+  <para>If the keycode 14 is Backspace instead of Delete, create the
+  following keymap snippet to fix this issue:</para>
+
+<screen><userinput>mkdir -p /etc/kbd &amp;&amp; cat &gt; /etc/kbd/bs-sends-del &lt;&lt;"EOF"
+<literal>                  keycode  14 = Delete Delete Delete Delete
+              alt keycode  14 = Meta_Delete
+        altgr alt keycode  14 = Meta_Delete
+                  keycode 111 = Remove
+    altgr control keycode 111 = Boot
+      control alt keycode 111 = Boot
+altgr control alt keycode 111 = Boot</literal>
+EOF</userinput></screen>
+
+  <para>Tell the <command>console</command> script to load this
+  snippet after the main keymap:</para>
+
+<screen><userinput>cat &gt;&gt;/etc/sysconfig/console &lt;&lt;"EOF"
+<literal>KEYMAP_CORRECTIONS="/etc/kbd/bs-sends-del"</literal>
+EOF</userinput></screen>
+
+  <para>To compile the keymap directly into the kernel instead of setting it
+  every time from the <command>console</command> bootscript, follow the
+  instructions given in <xref linkend="ch-bootable-kernel" role="."/> Doing
+  this ensures that the keyboard will always work as expected, even when
+  booting into maintenance mode (by passing <option>init=/bin/sh</option> to
+  the kernel), because the <command>console</command> bootscript will not be
+  run in that situation. Additionally, the kernel will not set the screen font
+  automatically. This should not pose many problems because ASCII characters
+  will be handled correctly, and it is unlikely that a user would need to rely
+  on non-ASCII characters while in maintenance mode.</para>
+
+  <para>Since the kernel will set up the keymap, it is possible to omit the
+  <envar>KEYMAP</envar> variable from the
+  <filename>/etc/sysconfig/console</filename> configuration file. It can
+  also be left in place, if desired, without consequence. Keeping it could
+  be beneficial if running several different kernels where it is difficult
+  to ensure that the keymap is compiled into every one of them.</para>
+
+</sect1>
Index: bootscripts/common/hostname.xml
===================================================================
--- bootscripts/common/hostname.xml	(revision bf8c11fb096060737d31a21fba001b2722737b95)
+++ bootscripts/common/hostname.xml	(revision bf8c11fb096060737d31a21fba001b2722737b95)
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+  "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-scripts-hostname">
+  <?dbhtml filename="hostname.html"?>
+
+  <title>Configuring the localnet Script</title>
+
+  <indexterm zone="ch-scripts-hostname">
+    <primary sortas="d-localnet">localnet</primary>
+  <secondary>configuring</secondary></indexterm>
+
+  <para>Part of the job of the <command>localnet</command> script is
+  setting the system's hostname. This needs to be configured in the
+  <filename>/etc/sysconfig/network</filename> file.</para>
+
+  <para>Create the <filename>/etc/sysconfig/network</filename> file
+  and enter a hostname by running:</para>
+
+  <screen><userinput>echo "HOSTNAME=<replaceable>[lfs]</replaceable>" &gt; /etc/sysconfig/network</userinput></screen>
+
+  <para><replaceable>[lfs]</replaceable> needs to be replaced with the
+  name given to the computer. Do not enter the Fully Qualified
+  Domain Name (FQDN) here. That information will be put in the
+  <filename>/etc/hosts</filename> file in the next section.</para>
+
+</sect1>
Index: bootscripts/common/hosts.xml
===================================================================
--- bootscripts/common/hosts.xml	(revision bf8c11fb096060737d31a21fba001b2722737b95)
+++ bootscripts/common/hosts.xml	(revision bf8c11fb096060737d31a21fba001b2722737b95)
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+  "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-scripts-hosts">
+  <?dbhtml filename="hosts.html"?>
+
+  <title>Creating the /etc/hosts File</title>
+
+  <indexterm zone="ch-scripts-hosts">
+    <primary sortas="e-/etc/hosts">/etc/hosts</primary>
+  </indexterm>
+
+  <indexterm zone="ch-scripts-hosts">
+    <primary sortas="d-localnet">localnet</primary>
+  <secondary>/etc/hosts</secondary></indexterm>
+
+  <indexterm zone="ch-scripts-hosts">
+    <primary sortas="d-network">network</primary>
+  <secondary>/etc/hosts</secondary></indexterm>
+
+  <para>If a network card is to be configured, decide on the IP address,
+  FQDN, and possible aliases for use in the
+  <filename>/etc/hosts</filename> file. The syntax is:</para>
+
+  <screen>&lt;IP address&gt; myhost.example.org aliases</screen>
+
+  <para>Unless the computer is to be visible to the Internet (i.e.,
+  there is a registered domain and a valid block of assigned IP
+  addresses&mdash;most users do not have this), make sure that the IP
+  address is in the private network IP address range. Valid ranges
+  are:</para>
+
+<screen><literal>  Class Networks
+  A     10.0.0.0
+  B     172.16.0.0 through 172.31.0.255
+  C     192.168.0.0 through 192.168.255.255</literal></screen>
+
+  <para>A valid IP address could be 192.168.1.1. A valid FQDN for this
+  IP could be <uri>www.linuxfromscratch.org</uri> (not recommended
+  because this is a valid registered domain address and could cause
+  domain name server issues).</para>
+
+  <para>Even if not using a network card, an FQDN is still required.
+  This is necessary for certain programs to operate correctly.</para>
+
+  <para>Create the  <filename>/etc/hosts</filename> file by running:</para>
+
+<screen><userinput>cat &gt; /etc/hosts &lt;&lt; "EOF"
+<literal># Begin /etc/hosts (network card version)
+
+127.0.0.1 localhost
+<replaceable>[192.168.1.1]</replaceable> <replaceable>[&lt;HOSTNAME&gt;.example.org]</replaceable> <replaceable>[HOSTNAME]</replaceable>
+
+# End /etc/hosts (network card version)</literal>
+EOF</userinput></screen>
+
+  <para>The <replaceable>[192.168.1.1]</replaceable> and
+  <replaceable>[&lt;HOSTNAME&gt;.example.org]</replaceable>
+  values need to be changed for specific users or requirements (if
+  assigned an IP address by a network/system administrator and the
+  machine will be connected to an existing network).</para>
+
+
+  <para>If a network card is not going to be configured, create the
+  <filename>/etc/hosts</filename> file by running:</para>
+
+<screen><userinput>cat &gt; /etc/hosts &lt;&lt; "EOF"
+<literal># Begin /etc/hosts (no network card version)
+
+127.0.0.1 <replaceable>[&lt;HOSTNAME&gt;.example.org]</replaceable> <replaceable>[HOSTNAME]</replaceable> localhost
+
+# End /etc/hosts (no network card version)</literal>
+EOF</userinput></screen>
+
+</sect1>
Index: bootscripts/common/inputrc.xml
===================================================================
--- bootscripts/common/inputrc.xml	(revision bf8c11fb096060737d31a21fba001b2722737b95)
+++ bootscripts/common/inputrc.xml	(revision bf8c11fb096060737d31a21fba001b2722737b95)
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+  "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+   <!ENTITY % general-entities SYSTEM "../../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-scripts-inputrc">
+  <?dbhtml filename="inputrc.html"?>
+
+  <title>Creating the /etc/inputrc File</title>
+
+  <indexterm zone="ch-scripts-inputrc">
+    <primary sortas="e-/etc/inputrc">/etc/inputrc</primary>
+  </indexterm>
+
+  <para>The <filename>/etc/inputrc</filename> file deals with mapping
+  the keyboard for specific situations. This file is the start-up file
+  used by Readline &mdash; the input-related library &mdash; used by Bash
+  and most other shells.</para>
+
+  <para>Most people do not need user-specific keyboard mappings so
+  the command below creates a global <filename>/etc/inputrc</filename>
+  used by everyone who logs in. If you later decide you need to override
+  the defaults on a per-user basis, you can create a
+  <filename>.inputrc</filename> file in the user's home directory with
+  the modified mappings.</para>
+
+  <para>For more information on how to edit the <filename>inputrc</filename>
+  file, see <command>info bash</command> under the <emphasis>Readline Init
+  File</emphasis> section. <command>info readline</command> is also a good
+  source of information.</para>
+
+  <para>Below is a generic global <filename>inputrc</filename> along
+  with comments to explain what the various options do. Note that
+  comments cannot be on the same line as commands. Create the file
+  using the following command:</para>
+
+<screen><userinput>cat &gt; /etc/inputrc &lt;&lt; "EOF"
+<literal># Begin /etc/inputrc
+# Modified by Chris Lynn &lt;roryo@roryo.dynup.net&gt;
+
+# Allow the command prompt to wrap to the next line
+set horizontal-scroll-mode Off
+
+# Enable 8bit input
+set meta-flag On
+set input-meta On
+
+# Turns off 8th bit stripping
+set convert-meta Off
+
+# Keep the 8th bit for display
+set output-meta On
+
+# none, visible or audible
+set bell-style none
+
+# All of the following map the escape sequence of the
+# value contained inside the 1st argument to the
+# readline specific functions
+
+"\eOd": backward-word
+"\eOc": forward-word
+
+# for linux console
+"\e[1~": beginning-of-line
+"\e[4~": end-of-line
+"\e[5~": beginning-of-history
+"\e[6~": end-of-history
+"\e[3~": delete-char
+"\e[2~": quoted-insert
+
+# for xterm
+"\eOH": beginning-of-line
+"\eOF": end-of-line
+
+# for Konsole
+"\e[H": beginning-of-line
+"\e[F": end-of-line
+
+# End /etc/inputrc</literal>
+EOF</userinput></screen>
+
+</sect1>
Index: bootscripts/common/introduction.xml
===================================================================
--- bootscripts/common/introduction.xml	(revision bf8c11fb096060737d31a21fba001b2722737b95)
+++ bootscripts/common/introduction.xml	(revision bf8c11fb096060737d31a21fba001b2722737b95)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+  "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-scripts-introduction">
+  <?dbhtml filename="introduction.html"?>
+
+  <title>Introduction</title>
+
+  <para>This chapter details how to install and configure the LFS-Bootscripts
+  package. Most of these scripts will work without modification, but a few
+  require additional configuration files because they deal with
+  hardware-dependent information.</para>
+
+  <para>System-V style init scripts are employed in this book because they
+  are widely used. For additional options, a hint detailing the BSD style
+  init setup is available at <ulink
+  url="http://www.linuxfromscratch.org/hints/downloads/files/bsd-init.txt"/>.
+  Searching the LFS mailing lists for <quote>depinit</quote> will also offer
+  additional choices.</para>
+
+  <para>If using an alternative style of init scripts, skip this chapter and
+  move on to <xref linkend="chapter-bootable"/>.</para>
+
+</sect1>
Index: bootscripts/common/network.xml
===================================================================
--- bootscripts/common/network.xml	(revision bf8c11fb096060737d31a21fba001b2722737b95)
+++ bootscripts/common/network.xml	(revision bf8c11fb096060737d31a21fba001b2722737b95)
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+  "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-scripts-network">
+  <?dbhtml filename="network.html"?>
+
+  <title>Configuring the network Script</title>
+
+  <indexterm zone="ch-scripts-network">
+    <primary sortas="d-network">network</primary>
+  <secondary>configuring</secondary></indexterm>
+
+  <para>This section only applies if a network card is to be
+  configured.</para>
+
+  <para>If a network card will not be used, there is likely no need to
+  create any configuration files relating to network cards. If that is
+  the case, remove the <filename class="symlink">network</filename>
+  symlinks from all run-level directories (<filename
+  class="directory">/etc/rc.d/rc*.d</filename>).</para>
+
+  <sect2>
+    <title>Creating Network Interface Configuration Files</title>
+
+    <para>Which interfaces are brought up and down by the network script
+    depends on the files and directories in the <filename
+    class="directory">/etc/sysconfig/network-devices</filename> hierarchy.
+    This directory should contain a sub-directory for each interface to be
+    configured, such as <filename>ifconfig.xyz</filename>, where
+    <quote>xyz</quote> is a network interface name. Inside this directory
+    would be files defining the attributes to this interface, such as its
+    IP address(es), subnet masks, and so forth.</para>
+
+    <para>The following command creates a sample <filename>ipv4</filename>
+    file for the <filename class="devicefile">eth0</filename> device:</para>
+
+<screen><userinput>cd /etc/sysconfig/network-devices &amp;&amp;
+mkdir ifconfig.eth0 &amp;&amp;
+cat &gt; ifconfig.eth0/ipv4 &lt;&lt; "EOF"
+<literal>ONBOOT=yes
+SERVICE=ipv4-static
+IP=192.168.1.1
+GATEWAY=192.168.1.2
+PREFIX=24
+BROADCAST=192.168.1.255</literal>
+EOF</userinput></screen>
+
+    <para>The values of these variables must be changed in every file to
+    match the proper setup. If the <envar>ONBOOT</envar> variable is
+    set to <quote>yes</quote> the network script will bring up the
+    Network Interface Card (NIC) during booting of the system. If set
+    to anything but <quote>yes</quote> the NIC will be ignored by the
+    network script and not brought up.</para>
+
+    <para>The <envar>SERVICE</envar> variable defines the method used for
+    obtaining the IP address. The LFS-Bootscripts package has a modular IP
+    assignment format, and creating additional files in the <filename
+    class="directory">/etc/sysconfig/network-devices/services</filename>
+    directory allows other IP assignment methods. This is commonly used
+    for Dynamic Host Configuration Protocol (DHCP), which is addressed in
+    the BLFS book.</para>
+
+    <para>The <envar>GATEWAY</envar> variable should contain the default
+    gateway IP address, if one is present. If not, then comment out the
+    variable entirely.</para>
+
+    <para>The <envar>PREFIX</envar> variable needs to contain the number
+    of bits used in the subnet. Each octet in an IP address is 8 bits.
+    If the subnet's netmask is 255.255.255.0, then it is using the first
+    three octets (24 bits) to specify the network number. If the netmask
+    is 255.255.255.240, it would be using the first 28 bits. Prefixes
+    longer than 24 bits are commonly used by DSL and cable-based Internet
+    Service Providers (ISPs). In this example (PREFIX=24), the netmask is
+    255.255.255.0. Adjust the <envar>PREFIX</envar> variable according to
+    your specific subnet.</para>
+
+  </sect2>
+
+  <sect2 id="resolv.conf">
+    <title>Creating the /etc/resolv.conf File</title>
+
+    <indexterm zone="resolv.conf">
+      <primary sortas="e-/etc/resolv.conf">/etc/resolv.conf</primary>
+    </indexterm>
+
+    <para>If the system is going to be connected to the Internet, it will
+    need some means of Domain Name Service (DNS) name resolution to resolve
+    Internet domain names to IP addresses, and vice versa. This is best
+    achieved by placing the IP address of the DNS server, available from
+    the ISP or network administrator, into <filename>/etc/resolv.conf</filename>.
+    Create the file by running the following:</para>
+
+<screen><userinput>cat &gt; /etc/resolv.conf &lt;&lt; "EOF"
+<literal># Begin /etc/resolv.conf
+
+domain {<replaceable>[Your Domain Name]</replaceable>}
+nameserver <replaceable>[IP address of your primary nameserver]</replaceable>
+nameserver <replaceable>[IP address of your secondary nameserver]</replaceable>
+
+# End /etc/resolv.conf</literal>
+EOF</userinput></screen>
+
+    <para>Replace <replaceable>[IP address of the nameserver]</replaceable>
+    with the IP address of the DNS most appropriate for the setup. There will
+    often be more than one entry (requirements demand secondary servers for
+    fallback capability). If you only need or want one DNS server, remove the
+    second <emphasis>nameserver</emphasis> line from the file. The IP address
+    may also be a router on the local network.</para>
+
+  </sect2>
+
+</sect1>
Index: bootscripts/common/profile.xml
===================================================================
--- bootscripts/common/profile.xml	(revision bf8c11fb096060737d31a21fba001b2722737b95)
+++ bootscripts/common/profile.xml	(revision bf8c11fb096060737d31a21fba001b2722737b95)
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+  "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-scripts-profile">
+  <title>The Bash Shell Startup Files</title>
+  <?dbhtml filename="profile.html"?>
+
+  <indexterm zone="ch-scripts-profile">
+    <primary sortas="e-/etc/profile">/etc/profile</primary>
+  </indexterm>
+
+  <para>The shell program <command>/bin/bash</command> (hereafter
+  referred to as <quote>the shell</quote>) uses a collection of startup
+  files to help create an environment to run in. Each file has a
+  specific use and may affect login and interactive environments
+  differently. The files in the <filename
+  class="directory">/etc</filename> directory provide global settings.
+  If an equivalent file exists in the home directory, it may override
+  the global settings.</para>
+
+  <para>An interactive login shell is started after a successful login,
+  using <command>/bin/login</command>, by reading the
+  <filename>/etc/passwd</filename> file. An interactive non-login shell
+  is started at the command-line (e.g.,
+  <prompt>[prompt]$</prompt><command>/bin/bash</command>). A
+  non-interactive shell is usually present when a shell script is
+  running. It is non-interactive because it is processing a script and
+  not waiting for user input between commands.</para>
+
+  <para>For more information, see <command>info bash</command> under the
+  <emphasis>Bash Startup Files and Interactive Shells</emphasis> section.</para>
+
+  <para>The files <filename>/etc/profile</filename> and
+  <filename>~/.bash_profile</filename> are read when the shell is
+  invoked as an interactive login shell.</para>
+
+  <para>The base <filename>/etc/profile</filename> below sets some
+  environment variables necessary for native language support. Setting
+  them properly results in:</para>
+
+  <itemizedlist>
+    <listitem>
+      <para>The output of programs translated into the native language</para>
+    </listitem>
+    <listitem>
+      <para>Correct classification of characters into letters, digits and
+      other classes. This is necessary for <command>bash</command> to
+      properly accept non-ASCII characters in command lines in non-English
+      locales</para>
+    </listitem>
+    <listitem>
+      <para>The correct alphabetical sorting order for the country</para>
+    </listitem>
+    <listitem>
+      <para>Appropriate default paper size</para>
+    </listitem>
+    <listitem>
+      <para>Correct formatting of monetary, time, and date values</para>
+    </listitem>
+  </itemizedlist>
+
+  <para>This script also sets the <envar>INPUTRC</envar> environment variable
+  that makes Bash and Readline use the <filename>/etc/inputrc</filename> file
+  created earlier.</para>
+
+  <para>Replace <replaceable>[ll]</replaceable> below with the
+  two-letter code for the desired language (e.g., <quote>en</quote>) and
+  <replaceable>[CC]</replaceable> with the two-letter code for the
+  appropriate country (e.g., <quote>GB</quote>).
+  <replaceable>[charmap]</replaceable> should be replaced with the
+  canonical charmap for your chosen locale.</para>
+
+  <para>The list of all locales supported by Glibc can be obtained by running
+  the following command:</para>
+
+<screen><userinput>locale -a</userinput></screen>
+
+  <para>Locales can have a number of synonyms, e.g. <quote>ISO-8859-1</quote>
+  is also referred to as <quote>iso8859-1</quote> and <quote>iso88591</quote>.
+  Some applications cannot handle the various synonyms correctly, so it is
+  safest to choose the canonical name for a particular locale. To determine
+  the canonical name, run the following command, where <replaceable>[locale
+  name]</replaceable> is the output given by <command>locale -a</command> for
+  your preferred locale (<quote>en_GB.iso88591</quote> in our example).</para>
+
+<screen><userinput>LC_ALL=<replaceable>[locale name]</replaceable> locale charmap</userinput></screen>
+
+  <para>For the <quote>en_GB.iso88591</quote> locale, the above command
+  will print:</para>
+
+<screen><computeroutput>ISO-8859-1</computeroutput></screen>
+
+  <para>This results in a final locale setting of
+  <quote>en_GB.ISO-8859-1</quote>.</para>
+
+  <para>Once the proper locale settings have been determined, create the
+  <filename>/etc/profile</filename> file:</para>
+
+<screen><userinput>cat &gt; /etc/profile &lt;&lt; "EOF"
+<literal># Begin /etc/profile
+
+export LANG=<replaceable>[ll]</replaceable>_<replaceable>[CC]</replaceable>.<replaceable>[charmap]</replaceable>
+export INPUTRC=/etc/inputrc
+
+# End /etc/profile</literal>
+EOF</userinput></screen>
+
+  <note>
+    <para>The <quote>C</quote> (default) and <quote>en_US</quote>
+    (the recommended one for United States English users) locales are
+    different.</para>
+  </note>
+
+  <para>Setting the keyboard layout, screen font, and locale-related
+  environment variables are the only internationalization steps needed to
+  support locales that use ordinary single-byte encodings and left-to-right
+  writing direction. More complex cases (including UTF-8 based locales)
+  require additional steps and additional patches because many applications
+  tend to not work properly under such conditions. These steps and patches
+  are not included in the LFS book and such locales are not yet supported
+  by LFS.</para>
+
+</sect1>
Index: bootscripts/common/setclock.xml
===================================================================
--- bootscripts/common/setclock.xml	(revision bf8c11fb096060737d31a21fba001b2722737b95)
+++ bootscripts/common/setclock.xml	(revision bf8c11fb096060737d31a21fba001b2722737b95)
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+  "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-scripts-setclock">
+  <?dbhtml filename="setclock.html"?>
+
+  <title>Configuring the setclock Script</title>
+
+  <indexterm zone="ch-scripts-setclock">
+    <primary sortas="d-setclock">setclock</primary>
+  <secondary>configuring</secondary></indexterm>
+
+  <para os="a">The <command>setclock</command> script reads the time from the
+  hardware clock, also known as the BIOS or the Complementary Metal Oxide
+  Semiconductor (CMOS) clock. If the hardware clock is set to UTC, this
+  script will convert the hardware clock's time to the local time using
+  the <filename>/etc/localtime</filename> file (which tells the
+  <command>hwclock</command> program which timezone the user is in). There
+  is no way to detect whether or not the hardware clock is set to UTC, so
+  this needs to be configured manually.</para>
+
+  <para os="b">If you cannot remember whether or not the hardware clock is set
+  to UTC, find out by running the <userinput>hwclock --localtime
+  --show</userinput> command. This will display what the current time is
+  according to the hardware clock. If this time matches whatever your
+  watch says, then the hardware clock is set to local time. If the output
+  from <command>hwclock</command> is not local time, chances are it is set
+  to UTC time. Verify this by adding or subtracting the proper amount of
+  hours for the timezone to the time shown by <command>hwclock</command>.
+  For example, if you are currently in the MST timezone, which is also
+  known as GMT -0700, add seven hours to the local time.</para>
+
+  <para os="c">Change the value of the <envar>UTC</envar> variable below
+  to a value of <option>0</option> (zero) if the hardware clock
+  is <emphasis>not</emphasis> set to UTC time.</para>
+
+  <para os="d">Create a new file <filename>/etc/sysconfig/clock</filename> by running
+  the following:</para>
+
+<screen><userinput>cat &gt; /etc/sysconfig/clock &lt;&lt; "EOF"
+<literal># Begin /etc/sysconfig/clock
+
+UTC=1
+
+# End /etc/sysconfig/clock</literal>
+EOF</userinput></screen>
+
+  <para os="e">A good hint explaining how to deal with time on LFS is available
+  at <ulink url="&hints-root;time.txt"/>. It explains issues such as
+  time zones, UTC, and the <envar>TZ</envar> environment variable.</para>
+
+</sect1>
Index: bootscripts/common/sysklogd.xml
===================================================================
--- bootscripts/common/sysklogd.xml	(revision bf8c11fb096060737d31a21fba001b2722737b95)
+++ bootscripts/common/sysklogd.xml	(revision bf8c11fb096060737d31a21fba001b2722737b95)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+  "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-scripts-sysklogd">
+  <?dbhtml filename="sysklogd.html"?>
+
+  <title>Configuring the sysklogd script</title>
+
+  <indexterm zone="ch-scripts-sysklogd">
+    <primary sortas="d-sysklogd">sysklogd</primary>
+  <secondary>configuring</secondary></indexterm>
+
+  <para>The <filename>sysklogd</filename> script invokes the
+  <command>syslogd</command> program with the <option>-m 0</option> option.
+  This option turns off the periodic timestamp mark that
+  <command>syslogd</command> writes to the log files every 20 minutes by
+  default. If you want to turn on this periodic timestamp mark, edit the
+  <filename>sysklogd</filename> script and make the changes accordingly.
+  See <userinput>man syslogd</userinput> for more information.</para>
+
+</sect1>
Index: bootscripts/common/udev.xml
===================================================================
--- bootscripts/common/udev.xml	(revision bf8c11fb096060737d31a21fba001b2722737b95)
+++ bootscripts/common/udev.xml	(revision bf8c11fb096060737d31a21fba001b2722737b95)
@@ -0,0 +1,232 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+  "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-scripts-udev">
+  <?dbhtml filename="udev.html"?>
+
+  <title>Device and Module Handling on an LFS System</title>
+
+  <indexterm zone="ch-scripts-udev">
+    <primary sortas="a-Udev">Udev</primary>
+  <secondary>usage</secondary></indexterm>
+
+  <para>In <xref linkend="chapter-building-system"/>, we installed the Udev
+  package. Before we go into the details regarding how this works, a brief
+  history of previous methods of handling devices is in order.</para>
+
+  <para>Linux systems in general traditionally use a static device creation
+  method, whereby a great many device nodes are created under <filename
+  class="directory">/dev</filename> (sometimes literally thousands of nodes),
+  regardless of whether the corresponding hardware devices actually exist.
+  This is typically done via a <command>MAKEDEV</command> script, which
+  contains a number of calls to the <command>mknod</command> program with
+  the relevant major and minor device numbers for every possible device that
+  might exist in the world. Using the Udev method, only those devices which
+  are detected by the kernel get device nodes created for them. Because
+  these device nodes will be created each time the system boots, they will
+  be stored on a <systemitem class="filesystem">tmpfs</systemitem> (a virtual
+  file system that resides entirely in system memory). Device nodes do not
+  require much space, so the memory that is used is negligible.</para>
+
+  <sect2>
+    <title>History</title>
+
+    <para>In February 2000, a new filesystem called <systemitem
+    class="filesystem">devfs</systemitem> was merged into the 2.3.46 kernel
+    and was made available during the 2.4 series of stable kernels. Although
+    it was present in the kernel source itself, this method of creating
+    devices dynamically never received overwhelming support from the core
+    kernel developers.</para>
+
+    <para>The main problem with the approach adopted by <systemitem
+    class="filesystem">devfs</systemitem> was the way it handled
+    device detection, creation, and naming. The latter issue, that of
+    device node naming, was perhaps the most critical. It is generally
+    accepted that if device names are allowed to be configurable, then
+    the device naming policy should be up to a system administrator, not
+    imposed on them by any particular developer(s). The <systemitem
+    class="filesystem">devfs</systemitem> file system also suffers from race
+    conditions that are inherent in its design and cannot be fixed
+    without a substantial revision to the kernel. It has also been marked
+    as deprecated due to a lack of recent maintenance.</para>
+
+    <para>With the development of the unstable 2.5 kernel tree, later
+    released as the 2.6 series of stable kernels, a new virtual filesystem
+    called <systemitem class="filesystem">sysfs</systemitem> came to be. The
+    job of <systemitem class="filesystem">sysfs</systemitem> is to export a
+    view of the system's hardware configuration to userspace processes. With
+    this userspace-visible representation, the possibility of seeing a
+    userspace replacement for <systemitem class="filesystem">devfs</systemitem>
+    became much more realistic.</para>
+
+  </sect2>
+
+  <sect2>
+    <title>Udev Implementation</title>
+
+    <para>The <systemitem class="filesystem">sysfs</systemitem> filesystem
+    was mentioned briefly above. One may wonder how <systemitem
+    class="filesystem">sysfs</systemitem> knows about the devices present
+    on a system and what device numbers should be used for them. Drivers
+    that have been compiled into the kernel directly register their objects
+    with <systemitem class="filesystem">sysfs</systemitem> as they are
+    detected by the kernel. For drivers compiled as modules, this
+    registration will happen when the module is loaded. Once the
+    <systemitem class="filesystem">sysfs</systemitem> filesystem is mounted
+    (on <filename class="directory">/sys</filename>), data which the built-in
+    drivers registered with <systemitem class="filesystem">sysfs</systemitem>
+    are available to userspace processes and to <command>udev</command> for
+    device node creation.</para>
+
+    <para>The <command>S10udev</command> initscript takes care of creating
+    these device nodes when Linux is booted. This script starts by registering
+    <command>/sbin/udevsend</command> as a hotplug event handler. Hotplug
+    events (discussed below) are not usually generated during this stage,
+    but <command>udev</command> is registered just in case they do occur.
+    The <command>udevstart</command> program then walks through the
+    <systemitem class="filesystem">/sys</systemitem> filesystem and creates
+    devices under <filename class="directory">/dev</filename> that match the
+    descriptions. For example, <filename>/sys/class/tty/vcs/dev</filename>
+    contains the string <quote>7:0</quote> This string is used by
+    <command>udevstart</command> to create <filename>/dev/vcs</filename>
+    with major number <emphasis>7</emphasis> and minor <emphasis>0</emphasis>.
+    The names and permissions of the nodes created under the <filename
+    class="directory">/dev</filename> directory are configured according to
+    the rules specified in the files within the <filename
+    class="directory">/etc/udev/rules.d/</filename> directory. These are
+    numbered in a similar fashion to the LFS-Bootscripts package. If
+    <command>udev</command> can't find a rule for the device it is creating,
+    it will default permissions to <emphasis>660</emphasis> and ownership to
+    <emphasis>root:root</emphasis>.</para>
+
+    <para>Once the above stage is complete, all devices that were already
+    present and have compiled-in drivers will be available for use. This
+    leads us to the devices that have modular drivers.</para>
+
+    <para>Earlier, we mentioned the concept of a <quote>hotplug event
+    handler.</quote> When a new device connection is detected by the kernel,
+    the kernel will generate a hotplug event and look at the file
+    <filename>/proc/sys/kernel/hotplug</filename> to determine the userspace
+    program that handles the device's connection. The <command>udev</command>
+    bootscript registered <command>udevsend</command> as this handler. When
+    these hotplug events are generated, the kernel will tell
+    <command>udev</command> to check the <filename
+    class="directory">/sys</filename> filesystem for the information
+    pertaining to this new device and create the <filename
+    class="directory">/dev</filename> entry for it.</para>
+
+    <para>This brings us to one problem that exists with
+    <command>udev</command>, and likewise with <systemitem
+    class="filesystem">devfs</systemitem> before it. It is commonly
+    referred to as the <quote>chicken and egg</quote> problem. Most
+    Linux distributions handle loading modules via entries in
+    <filename>/etc/modules.conf</filename>. Access to a device node causes
+    the appropriate kernel module to load. With <command>udev</command>,
+    this method will not work because the device node does not exist until
+    the module is loaded. To solve this, the <command>S05modules</command>
+    bootscript was added to the LFS-Bootscripts package, along with the
+    <filename>/etc/sysconfig/modules</filename> file. By adding module
+    names to the <filename>modules</filename> file, these modules will be
+    loaded when the computer starts up. This allows <command>udev</command>
+    to detect the devices and create the appropriate device nodes.</para>
+
+    <para>Note that on slower machines or for drivers that create a lot
+    of device nodes, the process of creating devices may take a few
+    seconds to complete. This means that some device nodes may not be
+    immediately accessible.</para>
+
+  </sect2>
+
+  <sect2>
+    <title>Handling Hotpluggable/Dynamic Devices</title>
+
+    <para>When you plug in a device, such as a Universal Serial Bus (USB)
+    MP3 player, the kernel recognizes that the device is now connected and
+    generates a hotplug event. If the driver is already loaded (either
+    because it was compiled into the kernel or because it was loaded via
+    the <command>S05modules</command> bootscript), <command>udev</command>
+    will be called upon to create the relevant device node(s) according to
+    the <systemitem class="filesystem">sysfs</systemitem> data available in
+    <filename class="directory">/sys</filename>.</para>
+
+    <para>If the driver for the just plugged in device is available as a
+    module but currently unloaded, the Hotplug package will load the
+    appropriate module and make this device available by creating the
+    device node(s) for it.</para>
+
+  </sect2>
+
+  <sect2>
+    <title>Problems with Creating Devices</title>
+
+    <para>There are a few known problems when it comes to automatically
+    creating device nodes:</para>
+
+    <para>1) A kernel driver may not export its data to <systemitem
+    class="filesystem">sysfs</systemitem>.</para>
+
+    <para>This is most common with third party drivers from outside the
+    kernel tree. Udev will be unable to automatically create device nodes
+    for such drivers. Use the <filename>/etc/sysconfig/createfiles</filename>
+    configuration file to manually create the devices. Consult the
+    <filename>devices.txt</filename> file inside the kernel documentation
+    or the documentation for that driver to find the proper major/minor
+    numbers.</para>
+
+    <para>2) A non-hardware device is required. This is most common with
+    the Advanced Linux Sound Architecture (ALSA) project's Open Sound
+    System (OSS) compatibility module. These types of devices can be
+    handled in one of two ways:</para>
+
+    <itemizedlist>
+      <listitem>
+        <para>Adding the module names to
+        <filename>/etc/sysconfig/modules</filename></para>
+      </listitem>
+      <listitem>
+        <para>Using an <quote>install</quote> line in
+        <filename>/etc/modprobe.conf</filename>. This tells the
+        <command>modprobe</command> command <quote>when loading this
+        module, also load this other module, at the same time.</quote>
+        For example:</para>
+
+<screen><userinput>install snd-pcm modprobe -i snd-pcm ; modprobe \
+    snd-pcm-oss ; true</userinput></screen>
+
+        <para>This will cause the system to load both the
+        <emphasis>snd-pcm</emphasis> and <emphasis>snd-pcm-oss</emphasis>
+        modules when any request is made to load the driver
+        <emphasis>snd-pcm</emphasis>.</para>
+      </listitem>
+    </itemizedlist>
+
+  </sect2>
+
+  <sect2>
+    <title>Useful Reading</title>
+
+    <para>Additional helpful documentation is available at the following
+    sites:</para>
+
+    <itemizedlist>
+      <listitem>
+        <para remap="verbatim">A Userspace Implementation of <systemitem class="filesystem">devfs</systemitem>
+        <ulink url="http://www.kroah.com/linux/talks/ols_2003_udev_paper/Reprint-Kroah-Hartman-OLS2003.pdf"/></para>
+      </listitem>
+      <listitem>
+        <para remap="verbatim">udev FAQ
+        <ulink url="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-FAQ"/></para>
+      </listitem>
+      <listitem>
+        <para remap="verbatim">The Linux Kernel Driver Model
+        <ulink url="http://public.planetmirror.com/pub/lca/2003/proceedings/papers/Patrick_Mochel/Patrick_Mochel.pdf"/></para>
+      </listitem>
+    </itemizedlist>
+
+  </sect2>
+
+</sect1>
Index: bootscripts/common/usage.xml
===================================================================
--- bootscripts/common/usage.xml	(revision bf8c11fb096060737d31a21fba001b2722737b95)
+++ bootscripts/common/usage.xml	(revision bf8c11fb096060737d31a21fba001b2722737b95)
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+  "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-scripts-usage">
+  <?dbhtml filename="usage.html"?>
+
+  <title>How Do These Bootscripts Work?</title>
+
+  <indexterm zone="ch-scripts-usage">
+    <primary sortas="a-Bootscripts">Bootscripts</primary>
+  <secondary>usage</secondary></indexterm>
+
+  <para>Linux uses a special booting facility named SysVinit that is
+  based on a concept of <emphasis>run-levels</emphasis>. It can be quite
+  different from one system to another, so it cannot be assumed that
+  because things worked in one particular Linux distribution, they should work
+  the same in LFS too. LFS has its own way of doing things, but it
+  respects generally accepted standards.</para>
+
+  <para>SysVinit (which will be referred to as <quote>init</quote> from
+  now on) works using a run-levels scheme. There are seven (numbered 0 to 6)
+  run-levels (actually, there are more run-levels, but they are for
+  special cases and are generally not used. See <filename>init(8)</filename>
+  for more details), and each one of those corresponds to the actions the
+  computer is supposed to perform when it starts up. The default
+  run-level is 3. Here are the descriptions of the different run-levels
+  as they are implemented:</para>
+
+<literallayout>0: halt the computer
+1: single-user mode
+2: multi-user mode without networking
+3: multi-user mode with networking
+4: reserved for customization, otherwise does the same as 3
+5: same as 4, it is usually used for GUI login (like X's <command>xdm</command> or KDE's <command>kdm</command>)
+6: reboot the computer</literallayout>
+
+  <para>The command used to change run-levels is <command>init
+  <replaceable>[runlevel]</replaceable></command>, where
+  <replaceable>[runlevel]</replaceable> is the target run-level. For example,
+  to reboot the computer, a user could issue the <command>init 6</command>
+  command, which is an alias for the <command>reboot</command> command.
+  Likewise, <command>init 0</command> is an alias for the
+  <command>halt</command> command.</para>
+
+  <para>There are a number of directories under <filename
+  class="directory">/etc/rc.d</filename> that look like <filename
+  class="directory">rc?.d</filename> (where ? is the number of the
+  run-level) and <filename class="directory">rcsysinit.d</filename>, all
+  containing a number of symbolic links. Some begin with a
+  <emphasis>K</emphasis>, the others begin with an
+  <emphasis>S</emphasis>, and all of them have two numbers following the
+  initial letter. The K means to stop (kill) a service and the S means
+  to start a service. The numbers determine the order in which the
+  scripts are run, from 00 to 99&mdash;the lower the number the earlier it
+  gets executed. When <command>init</command> switches to another run-level,
+  the appropriate services are either started or stopped, depending on the
+  runlevel chosen.</para>
+
+  <para>The real scripts are in <filename
+  class="directory">/etc/rc.d/init.d</filename>. They do the actual work,
+  and the symlinks all point to them. Killing links and starting links point
+  to the same script in <filename class="directory">/etc/rc.d/init.d</filename>.
+  This is because the scripts can be called with different parameters like
+  <option>start</option>, <option>stop</option>, <option>restart</option>,
+  <option>reload</option>, and <option>status</option>. When a K link is
+  encountered, the appropriate script is run with the <option>stop</option>
+  argument. When an S link is encountered, the appropriate script is run
+  with the <option>start</option> argument.</para>
+
+  <para>There is one exception to this explanation. Links that start
+  with an <emphasis>S</emphasis> in the <filename
+  class="directory">rc0.d</filename> and <filename
+  class="directory">rc6.d</filename> directories will not cause anything
+  to be started. They will be called with the parameter
+  <option>stop</option> to stop something. The logic behind this
+  is that when a user is going to reboot or halt the system, nothing
+  needs to be started. The system only needs to be stopped.</para>
+
+  <para>These are descriptions of what the arguments make the scripts
+  do:</para>
+
+  <variablelist>
+    <varlistentry>
+      <term><option>start</option></term>
+      <listitem>
+        <para>The service is started.</para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term><option>stop</option></term>
+      <listitem>
+        <para>The service is stopped.</para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term><option>restart</option></term>
+      <listitem>
+        <para>The service is stopped and then started again.</para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term><option>reload</option></term>
+      <listitem>
+        <para>The configuration of the service is updated. This is used
+        after the configuration file of a service was modified, when the
+        service does not need to be restarted.</para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term><option>status</option></term>
+      <listitem>
+        <para>Tells if the service is running and with which PIDs.</para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+
+  <para>Feel free to modify the way the boot process works (after all,
+  it is your own LFS system). The files given here are an example of how
+  it can be done.</para>
+
+</sect1>
