Index: boot/x86_64-64-chapter.xml
===================================================================
--- boot/x86_64-64-chapter.xml	(revision 15b9eeb7acfc93ee98086c709d4d5b7796e5a4ee)
+++ boot/x86_64-64-chapter.xml	(revision 3f01f6031f105acd959cc2c2d8676cbd633b5f52)
@@ -23,5 +23,7 @@
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/pwdgroup.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="x86_64/kernel.xml"/>
-  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="x86_64-64/grub-build.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="x86_64-64/bootloaders.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="x86_64-64/bin86.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="x86_64-64/lilo-build.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/settingenviron.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="x86_64-64/flags.xml"/>
@@ -30,5 +32,5 @@
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/devices.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/changingowner.xml"/>
-  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="x86/grub.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="x86_64-64/lilo.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/whatnext.xml"/>
 
Index: boot/x86_64-64/bin86.xml
===================================================================
--- boot/x86_64-64/bin86.xml	(revision 3f01f6031f105acd959cc2c2d8676cbd633b5f52)
+++ boot/x86_64-64/bin86.xml	(revision 3f01f6031f105acd959cc2c2d8676cbd633b5f52)
@@ -0,0 +1,63 @@
+<?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-boot-bin86" role="wrap">
+  <?dbhtml filename="bin86.html"?>
+
+  <title>Bin86-&bin86-version;</title>
+
+  <indexterm zone="ch-boot-bin86">
+    <primary sortas="a-Bin86">Bin86</primary>
+    <secondary>boot</secondary>
+  </indexterm>
+
+  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
+  href="../../final-system/x86_64-64/bin86.xml"
+  xpointer="xpointer(//*[@role='package'])"/>
+
+  <sect2 role="installation">
+    <title>Installation of Bin86</title>
+
+    <para os="a">We are building bin86 so that we can compile lilo.
+      Both <command>as86</command> and <command>ld86</command> need to
+      run on the host system to assemble x86_64 code.  We cannot
+      compile the whole package like this, but fortunately these two
+      programs are the only parts we require.</para>
+
+    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
+    href="../../final-system/x86_64-64/bin86.xml"
+    xpointer="xpointer(//*[@os='p1'])"/>
+
+    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
+    href="../../final-system/x86_64-64/bin86.xml"
+    xpointer="xpointer(//*[@os='p2'])"/>
+
+    <para os="b">The Bin86 package does not contain a <command>configure
+      </command> script.  Natively compile only the necessary parts with:
+    </para>
+
+<screen os="c"><userinput>make CC=gcc -C as as86
+make CC=gcc -C ld ld86</userinput></screen>
+
+    <para os="e">Install the assembler and linker where they will be on
+      the PATH when we build lilo, using prefixes to show that their
+      output is not for a native system.</para>
+
+<screen os="f"><userinput>install -v -m 755 -s as/as86 /cross-tools/bin/${LFS_TARGET}-as86
+install -v -m 755 -s ld/ld86 /cross-tools/bin/${LFS_TARGET}-ld86</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title/>
+
+    <para>Details on this package are located in <xref
+    linkend="contents-bin86" role="."/></para>
+
+  </sect2>
+
+</sect1>
Index: boot/x86_64-64/bootloaders.xml
===================================================================
--- boot/x86_64-64/bootloaders.xml	(revision 3f01f6031f105acd959cc2c2d8676cbd633b5f52)
+++ boot/x86_64-64/bootloaders.xml	(revision 3f01f6031f105acd959cc2c2d8676cbd633b5f52)
@@ -0,0 +1,36 @@
+<?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-boot-building-a-bootloader" role="wrap">
+  <?dbhtml filename="building-a-bootloader.html"?>
+
+  <title>Building a bootloader</title>
+
+    <para>On x86 and x86_64 (multilib) architectures, the preferred
+      bootloader is Grub.  Unfortunately, Grub doesn&quot;t work on x86_64
+      Pure64 - the stage2 files can be correctly built as 32-bit, but the
+      grub shell is a 64-bit program, and tries to execute some of the
+      stage2 routines - this results in a segmentation fault. Therefore,
+      in the final system we use Lilo as the bootloader.
+    </para>
+
+    <para>If you already have a bootloader, such as Grub, installed on
+      the system then you should use that to make your new kernel bootable.
+   </para>
+
+  <note>
+    <para>We will now cross-compile Bin86 and Lilo - these instructions 
+      assume you are using an x86_64 machine (e.g. booted fron a Live CD),
+      either pure64 or multilib. This approach will not work if you are
+      running the machine as i686, because a 32-bit kernel will not be
+      able to execute a 64-bit binary to install the bootloader.  If that
+      is the case, you will need to install an i686 bootloader on the
+      host system. 
+    </para>
+  </note>
+
+</sect1>
Index: ot/x86_64-64/grub-build.xml
===================================================================
--- boot/x86_64-64/grub-build.xml	(revision 15b9eeb7acfc93ee98086c709d4d5b7796e5a4ee)
+++ 	(revision )
@@ -1,85 +1,0 @@
-<?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-boot-grub-build" role="wrap">
-  <?dbhtml filename="grub-build.html"?>
-
-  <title>GRUB-&grub-version;</title>
-
-  <indexterm zone="ch-boot-grub-build">
-    <primary sortas="a-GRUB">GRUB</primary>
-    <secondary>boot</secondary>
-  </indexterm>
-
-  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
-  href="../../final-system/x86/grub.xml"
-  xpointer="xpointer(//*[@role='package'])"/>
-
-  <sect2 role="installation">
-    <title>Installation of GRUB</title>
-
-    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
-    href="../x86/grub-build.xml"
-    xpointer="xpointer(//*[@os='a'])"/>
-
-    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
-    href="../../final-system/x86_64-64/grub.xml"
-    xpointer="xpointer(//*[@os='p1'])"/>
-
-    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
-    href="../../final-system/x86_64-64/grub.xml"
-    xpointer="xpointer(//*[@os='p2'])"/>
-
-    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
-    href="../../final-system/x86_64-64/grub.xml"
-    xpointer="xpointer(//*[@os='p3'])"/>
-
-    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
-    href="../../final-system/x86_64-64/grub.xml"
-    xpointer="xpointer(//*[@os='p4'])"/>
-
-    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
-    href="../x86/grub-build.xml"
-    xpointer="xpointer(//*[@os='b'])"/>
-
-<screen os="aa"><userinput>./configure --prefix=/usr --host=${LFS_TARGET}</userinput></screen>
-
-    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
-    href="../x86/grub-build.xml"
-    xpointer="xpointer(//*[@os='c'])"/>
-
-    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
-    href="../x86/grub-build.xml"
-    xpointer="xpointer(//*[@os='d'])"/>
-
-    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
-    href="../x86/grub-build.xml"
-    xpointer="xpointer(//*[@os='f'])"/>
-
-    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
-    href="../x86_64/grub-build.xml"
-    xpointer="xpointer(//*[@os='ab'])"/>
-
-    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
-    href="../x86_64/grub-build.xml"
-    xpointer="xpointer(//*[@os='i'])"/>
-
-    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
-    href="../x86_64/grub-build.xml"
-    xpointer="xpointer(//*[@os='j'])"/>
-
-  </sect2>
-
-  <sect2 role="content">
-    <title/>
-
-    <para>Details on this package are located in <xref
-    linkend="contents-grub" role="."/></para>
-
-  </sect2>
-
-</sect1>
Index: boot/x86_64-64/lilo-build.xml
===================================================================
--- boot/x86_64-64/lilo-build.xml	(revision 3f01f6031f105acd959cc2c2d8676cbd633b5f52)
+++ boot/x86_64-64/lilo-build.xml	(revision 3f01f6031f105acd959cc2c2d8676cbd633b5f52)
@@ -0,0 +1,53 @@
+<?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-boot-lilo-build" role="wrap">
+  <?dbhtml filename="lilo-build.html"?>
+
+  <title>Lilo-&lilo-version;</title>
+
+  <indexterm zone="ch-boot-lilo-build">
+    <primary sortas="a-Lilo">Lilo</primary>
+    <secondary>boot</secondary>
+  </indexterm>
+
+  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
+  href="../../final-system/x86_64-64/lilo.xml"
+  xpointer="xpointer(//*[@role='package'])"/>
+
+  <sect2 role="installation">
+    <title>Installation of Lilo</title>
+
+    <para os="a">The following patch forces lilo to use our cross-compiler
+      (except for a couple of utilities which run during the compile),
+      and to look for as86 and ld86 under the names by which we installed
+      them.</para>
+
+<screen os="b"><userinput>patch -Np1 -i ../&lilo-cross-x86_64-patch;</userinput></screen>
+
+    <para os="c">Compile the program which installs the loader, linking
+      it statically so that it does not have to link to host libraries
+      when it runs:</para> 
+
+<screen os="d"><userinput>make lilo-static</userinput></screen>
+
+    <para os="e">Install only the parts we need:</para>
+
+<screen os="f"><userinput>install -v -m755 lilo-static /tools/bin
+install -v -m755 keytab-lilo.pl /tools/bin</userinput></screen>
+
+  </sect2>
+
+  <sect2 role="content">
+    <title/>
+
+    <para>Details on this package are located in <xref
+    linkend="contents-lilo" role="."/></para>
+
+  </sect2>
+
+</sect1>
Index: boot/x86_64-64/lilo.xml
===================================================================
--- boot/x86_64-64/lilo.xml	(revision 3f01f6031f105acd959cc2c2d8676cbd633b5f52)
+++ boot/x86_64-64/lilo.xml	(revision 3f01f6031f105acd959cc2c2d8676cbd633b5f52)
@@ -0,0 +1,115 @@
+<?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-boot-lilo">
+  <?dbhtml filename="lilo.html"?>
+
+  <title>Making the LFS System Bootable</title>
+
+  <indexterm zone="ch-boot-lilo">
+    <primary sortas="a-Lilo">Lilo</primary>
+    <secondary>configuring</secondary>
+  </indexterm>
+
+  <para os="a">You are nearly ready to boot to the new temporary system.
+  One of the last things to do is to ensure that the system can be booted.
+  The instructions below apply only to x86_64 machines on which lilo is going
+  to be installed. Information on using a pre-installed Grub on machines
+  currently running as x86 or x86_64 multilib should be available in the
+  usual resource-specific locations for those architectures.  If you have
+  installed an x86 version of lilo, these instructions should be modified
+  to refer to the <command>lilo</command> and <command>keytab-lilo.pl
+  </command> commands you installed on the host system.</para>
+
+  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
+  href="../x86/grub.xml"
+  xpointer="xpointer(//*[@os='b'])"/>
+
+  <para os="c">If you have multiple systems on your machine using a different
+  bootloader such as grub, you may prefer to use that instead - consult the
+  appropriate documentation.  The rest of this section assumes you are going
+  to use lilo.</para> 
+
+  <para os="d">Earlier, we compiled and installed the Lilo boot loader software
+  in preparation for this step. The procedure involves writing a boot image to
+  a specific location on the hard drive. If you have a floppy disk drive, or
+  if you have installed a cd recording program, we highly recommend using
+  mkrescue to create a Lilo boot floppy, or CD (using e.g. dvdrecord from
+  dvdrtools) as a test and as a backup.</para>
+
+  <para os="e">Normally, you interact with lilo by using the cursor and enter
+  keys to select from the available option(s), but sometimes it is necessary to
+  add other boot options, such as e.g. 'init=/bin/bash' to debug boot failures.
+  The more your keyboard layout differs from the US qwerty layout, the harder
+  it will be to type boot options unless lilo knows about your keyboard layout.
+  So, we will create a key table for Lilo (.ktl) file - at one point in the
+  documentation these are referred to as .klt files, which may be a typo, but
+  has been followed by some distros.  The name, and location, are not important
+  but it is conventional to put these in /boot with the name representing the
+  key layout.  For a British keyboard layout, the following command will
+  achieve this:</para> 
+
+<screen os="f" role="nodump"><userinput>keytab-lilo.pl uk >i${LFS}/boot/uk.ktl</userinput></screen>
+
+  <para os="g">The argument to the command is the name of the keymap, or if
+    necessary you can specify the full path to the keymap.  Use whatever
+    is appropriate for your keyboard.</para>
+
+  <para os="i">The next step is to create /etc/lilo.conf</para>
+
+<screen os="j" role="nodump"><userinput>cat &gt; ${LFS}/etc/lilo.conf &lt;&lt; "EOF"
+<literal># Begin /etc/lilo.conf
+# lilo.conf
+#
+# global options
+boot=/dev/&lt;bootdisk&gt;
+keytable=/boot/&lt;keytable&gt;
+lba32
+map=/boot/map
+prompt
+
+# set the name of the default image to boot
+default=lfs
+
+# define an image
+image=/boot/lfskernel
+    label=lfs
+    root=/dev/&lt;partition&gt;
+    read-only
+# optionally add parameters to pass, e.g.
+#   append="video=radeonfb:1024x768-16@70"
+
+# if you had an existing system, you could
+# add its details here.
+EOF</literal></userinput></screen>
+
+
+  <para os="k">Replace &lt;bootdisk&gt; with the name of the disk (or
+    partition) on which the boot sector is to be written, e.g. sda. Replace
+    &lt;keytable&gt; with the name of the keytable file you created, and
+    &lt;partition&gt; with the name of the root partition for the new
+    system.
+  </para>
+
+  <warning os="l">
+    <para>The following command will overwrite any current boot loader.
+    Do not run the command if this is not desired. If you have
+    cross-compiled on a different machine from the target, you must
+    install the bootloader on the target machine, the installed boot
+    block is not a file which can be copied with <command>tar</command>. 
+    </para>
+  </warning>
+
+  <para os="m">Run Lilo:</para>
+
+<screen os="n" role="nodump"><userinput>/tools/bin/lilo-static -v</userinput></screen>
+
+  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
+  href="../../bootable/x86_64-64/lilo.xml"
+  xpointer="xpointer(//*[@os='o'])"/>
+
+</sect1>
Index: bootable/x86_64-64-chapter.xml
===================================================================
--- bootable/x86_64-64-chapter.xml	(revision 3f01f6031f105acd959cc2c2d8676cbd633b5f52)
+++ bootable/x86_64-64-chapter.xml	(revision 3f01f6031f105acd959cc2c2d8676cbd633b5f52)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE chapter 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;
+]>
+
+<chapter id="chapter-bootable" xreflabel="Making the LFS System Bootable">
+  <?dbhtml dir="bootable"?>
+  <?dbhtml filename="chapter.html"?>
+
+  <title>Making the LFS System Bootable</title>
+
+  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/introduction.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/fstab.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="x86_64/kernel.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="x86_64-64/lilo.xml"/>
+
+</chapter>
Index: bootable/x86_64-64/lilo.xml
===================================================================
--- bootable/x86_64-64/lilo.xml	(revision 3f01f6031f105acd959cc2c2d8676cbd633b5f52)
+++ bootable/x86_64-64/lilo.xml	(revision 3f01f6031f105acd959cc2c2d8676cbd633b5f52)
@@ -0,0 +1,136 @@
+<?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-bootable-lilo">
+  <?dbhtml filename="lilo.html"?>
+
+  <title>Making the LFS System Bootable</title>
+
+  <indexterm zone="ch-bootable-lilo">
+    <primary sortas="a-Lilo">Lilo</primary>
+    <secondary>configuring</secondary>
+  </indexterm>
+
+    <para os="a">Your shiny new LFS system is almost complete. One of the
+      last things to do is to ensure that the system can be properly
+      booted. The instructions below apply only to computers using lilo,
+      which in the context of this book means x86_64 Pure64 systems.
+      Information on <quote>boot loading</quote> for other architectures
+      should be available in the usual resource-specific locations for
+      those architectures.</para>
+
+  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
+  href="../x86/grub.xml"
+  xpointer="xpointer(//*[@os='b'])"/>
+
+    <para os="c">If you have multiple systems on your machine using a
+      different bootloader such as Grub, you may prefer to use that
+      instead - consult the appropriate documentation.  The rest of
+      this section assumes you are going to use Lilo.</para> 
+
+    <para os="d">Earlier, we compiled and installed the Lilo boot loader
+      software in preparation for this step. The procedure involves
+      writing a boot image to a specific location on the hard drive.
+      We highly recommend using mkrescue to create a Lilo boot CD
+      (using e.g. dvdrecord from dvdrtools) as a backup (this requires
+      loopback block device support in the kernel).</para>
+
+    <para os="e">Normally, you interact with lilo by using the cursor
+      and <literal>enter</literal> keys to select from the available
+      option(s), but sometimes it is necessary to add other boot
+      options, such as e.g. 'init=/bin/bash' to debug boot failures.
+      The more your keyboard layout differs from the US qwerty layout,
+      the harder it becomes to type boot options unless lilo knows
+      about your keyboard layout. So, we will create a key table for
+      Lilo (.ktl) file - at one point in the documentation these are
+      referred to as .klt files, which may be a typo, but has been
+      followed by some distros.  The name, and location, are not
+      important but it is conventional to put these in /boot with
+      the name representing the key layout.  For a British keyboard
+      layout, the following command will achieve this:</para> 
+
+<screen os="f" role="nodump"><userinput>keytab-lilo.pl uk >/boot/uk.ktl</userinput></screen>
+
+    <para os="g">The argument to the command is the name of the keymap,
+      or if necessary you can specify the full path to the keymap.  Use
+      whatever is appropriate for your keyboard.</para>
+
+    <para os="h">When the x86 LFS book used to include Lilo, it
+    advised against running it from chroot in case the MBR became
+    corrupted. Provided you have /proc mounted and have device special
+    files for the disks, it seems to be safe to run recent versions of
+    Lilo in chroot, although it is always possible that an updated
+    bootloader, or defective configuration file, may render the system
+    unbootable.</para>  
+
+    <para os="i">The next step is to create /etc/lilo.conf</para>
+
+<screen os="j" role="nodump"><userinput>cat &gt; /etc/lilo.conf &lt;&lt; "EOF"
+<literal># Begin /etc/lilo.conf
+# lilo.conf
+#
+# global options
+boot=/dev/&lt;bootdisk&gt;
+keytable=/boot/&lt;keytable&gt;
+lba32
+map=/boot/map
+prompt
+
+# set the name of the default image to boot
+default=lfs
+
+# define an image
+image=/boot/lfskernel
+    label=lfs
+    root=/dev/&lt;partition&gt;
+    read-only
+# optionally add parameters to pass, e.g.
+#   append="video=radeonfb:1024x768-16@70"
+
+# repeat for any other kernel images
+
+# optionally, add legacy operating systems
+# see man lilo.conf for examples 
+EOF</literal></userinput></screen>
+
+
+    <para os="k">Replace &lt;bootdisk&gt; with the name of the disk (or
+      partition) on which the boot sector is to be written, e.g. sda.
+      Replace &lt;keytable&gt; with the name of the keytable file you
+      created, and &lt;partition&gt; with the name of the root partition
+      for the new system.
+    </para>
+
+  <warning os="l">
+    <para>The following command will overwrite the current boot loader.
+    Do not run the command if this is not desired.</para>
+  </warning>
+
+    <para os="m">Run Lilo:</para>
+
+<screen os="n" role="nodump"><userinput>/sbin/lilo -v</userinput></screen>
+
+  <note os='o'>
+    <para>People who have been used to GRUB need to be aware that
+      lilo works differently - in particular, you cannot edit the
+      available choices as you can in the grub shell, and lilo records
+      the block addresses of the kernels into the boot blocks each time
+      /sbin/lilo is run. This means that when you compile a new kernel,
+      you have to add it to /etc/lilo.conf and rerun /sbin/lilo.  It
+      also means that if you recompile an existing kernel and save it
+      to the same name you still have to rerun /sbin/lilo in case it now
+      occupies different blocks on the filesystem.</para>
+  </note>
+
+    <para os="p">If you are running multiple systems on this box and
+    using lilo, it is a good idea to ensure that each system is running
+    the same version of lilo, otherwise an old version may not be able
+    to overwrite the bootloader from a newer version.  You will also
+    need to ensure that the copies of /etc/lilo.conf on each system are
+    kept synchronised.</para>
+
+</sect1>
Index: final-system/x86_64-64-chapter.xml
===================================================================
--- final-system/x86_64-64-chapter.xml	(revision 15b9eeb7acfc93ee98086c709d4d5b7796e5a4ee)
+++ final-system/x86_64-64-chapter.xml	(revision 3f01f6031f105acd959cc2c2d8676cbd633b5f52)
@@ -66,5 +66,6 @@
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/udev.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/hotplug.xml"/>
-  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="x86_64-64/grub.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="x86_64-64/bin86.xml"/>
+  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="x86_64-64/lilo.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/aboutdebug.xml"/>
   <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="common/stripping.xml"/>
Index: final-system/x86_64-64/bin86.xml
===================================================================
--- final-system/x86_64-64/bin86.xml	(revision 3f01f6031f105acd959cc2c2d8676cbd633b5f52)
+++ final-system/x86_64-64/bin86.xml	(revision 3f01f6031f105acd959cc2c2d8676cbd633b5f52)
@@ -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-system-bin86" role="wrap">
+  <?dbhtml filename="bin86.html"?>
+
+  <title>Bin86-&bin86-version;</title>
+
+  <indexterm zone="ch-system-bin86">
+    <primary sortas="a-Bin86">Bin86</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para>The Bin86 package contains an assembler and linker to produce
+      16 or 32-bit 8086 machine code.</para>
+
+    <segmentedlist>
+      <segtitle>&dependencies;</segtitle>
+
+      <seglistitem>
+        <seg>Bash, Binutils, Coreutils, GCC, Glibc, Make
+	</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+
+  <sect2 role="installation">
+    <title>Installation of Bin86</title>
+
+    <para os="a">We are building bin86 because it is required to
+      compile lilo, and at the moment no other bootloader builds and runs
+      on a pure64 system. If your machine has multiple systems (i.e. x86
+      or multilib) you may prefer to use the bootloader from those
+      systems, such as grub.</para>
+
+    <para os="p1">This patch updates bin86 to compile on x86_64:</para>
+
+<screen os="p2"><userinput>patch -Np1 -i ../&bin86-x86_64-patch;</userinput></screen>
+
+    <para os="c">Compile the package:</para>
+
+<screen os="d"><userinput>make</userinput></screen>
+
+    <para os="e">Install the package:</para>
+
+<screen os="f"><userinput>make PREFIX=/usr install</userinput></screen>
+
+  </sect2>
+
+  <sect2 id="contents-bin86" role="content">
+    <title>Contents of Bin86</title>
+
+    <segmentedlist>
+      <segtitle>Installed programs</segtitle>
+
+      <seglistitem>
+        <seg>as86, ld86, nm86, objdump86, size86</seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="as86">
+        <term><command>as86</command></term>
+        <listitem>
+          <para>An 8086 assembler</para>
+          <indexterm zone="ch-system-bin86 as86">
+            <primary sortas="b-as86">as86</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="ld86">
+        <term><command>ld86</command></term>
+        <listitem>
+          <para>A linker for the object files produced by as86</para>
+          <indexterm zone="ch-system-bin86 ld86">
+            <primary sortas="b-ld86">ld86</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="nm86">
+        <term><command>nm86</command></term>
+        <listitem>
+          <para>Symbolic link to objdump86</para>
+          <indexterm zone="ch-system-bin86 nm86">
+            <primary sortas="b-nm86">nm86</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="objdump86">
+        <term><command>objdump86</command></term>
+        <listitem>
+          <para>A utility to examine and report on the output from as86 and ld86</para>
+          <indexterm zone="ch-system-bin86 objdump86">
+            <primary sortas="b-objdump86">objdump86</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="size86">
+        <term><command>size86</command></term>
+        <listitem>
+          <para>Symbolic link to objdump86</para>
+          <indexterm zone="ch-system-bin86 size86">
+            <primary sortas="b-size86">size86</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
Index: nal-system/x86_64-64/grub.xml
===================================================================
--- final-system/x86_64-64/grub.xml	(revision 15b9eeb7acfc93ee98086c709d4d5b7796e5a4ee)
+++ 	(revision )
@@ -1,75 +1,0 @@
-<?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-system-grub" role="wrap">
-  <?dbhtml filename="grub.html"?>
-
-  <title>GRUB-&grub-version;</title>
-
-  <indexterm zone="ch-system-grub">
-    <primary sortas="a-GRUB">GRUB</primary>
-  </indexterm>
-
-  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
-  href="../x86/grub.xml"
-  xpointer="xpointer(//*[@role='package'])"/>
-
-  <sect2 role="installation">
-    <title>Installation of GRUB</title>
-
-    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
-    href="../x86/grub.xml"
-    xpointer="xpointer(//*[@os='a'])"/>
-
-    <para os="p1">This patch updates grub to work in a Pure64 environment:</para>
-
-<screen os="p2"><userinput>patch -Np1 -i ../&grub-pure64-patch;</userinput></screen>
-
-    <para os="p3">Make the source package aware of the patch:</para>
-
-<screen os="p4"><userinput>autoreconf</userinput></screen>
-
-    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
-    href="../x86/grub.xml"
-    xpointer="xpointer(//*[@os='b'])"/>
-
-<screen><userinput>./configure --prefix=/usr --host=$(LFS_TARGET)</userinput></screen>
-
-    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
-    href="../x86/grub.xml"
-    xpointer="xpointer(//*[@os='c'])"/>
-
-    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
-    href="../x86/grub.xml"
-    xpointer="xpointer(//*[@os='d'])"/>
-
-    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
-    href="../x86/grub.xml"
-    xpointer="xpointer(//*[@os='e'])"/>
-
-    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
-    href="../x86/grub.xml"
-    xpointer="xpointer(//*[@os='f'])"/>
-
-    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
-    href="../x86_64/grub.xml"
-    xpointer="xpointer(//*[@os='h'])"/>
-
-    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
-    href="../x86_64/grub.xml"
-    xpointer="xpointer(//*[@os='i'])"/>
-
-    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
-    href="../x86_64/grub.xml"
-    xpointer="xpointer(//*[@os='j'])"/>
-
-  </sect2>
-
-  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
-  href="../x86/grub.xml"
-  xpointer="xpointer(id('contents-grub'))"/>
-
-</sect1>
Index: final-system/x86_64-64/lilo.xml
===================================================================
--- final-system/x86_64-64/lilo.xml	(revision 3f01f6031f105acd959cc2c2d8676cbd633b5f52)
+++ final-system/x86_64-64/lilo.xml	(revision 3f01f6031f105acd959cc2c2d8676cbd633b5f52)
@@ -0,0 +1,121 @@
+<?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-system-lilo" role="wrap">
+  <?dbhtml filename="lilo.html"?>
+
+  <title>Lilo-&lilo-version;</title>
+
+  <indexterm zone="ch-system-lilo">
+    <primary sortas="a-Lilo">Lilo</primary>
+  </indexterm>
+
+  <sect2 role="package">
+    <title/>
+
+    <para os="a">The Lilo package contains the Linux Loader, a bootloader.</para>
+
+    <para os="b">We have chosen to use lilo because at the moment no other
+      bootloader builds and runs on a pure64 system. If your machine has
+      multiple systems (i.e. x86 or multilib) you may prefer to use the
+      bootloader from the other system, such as grub.</para>
+
+    <segmentedlist>
+      <segtitle>&dependencies;</segtitle>
+
+      <seglistitem>
+        <seg>Bash, Bin86, Binutils, Coreutils, GCC, Glibc, Make, Sed
+	</seg>
+      </seglistitem>
+    </segmentedlist>
+
+  </sect2>
+
+
+  <sect2 role="installation">
+    <title>Installation of Lilo</title>
+
+    <para os="c">Compile the package:</para>
+
+<screen os="d"><userinput>make</userinput></screen>
+
+    <para os="e">Install the package:</para>
+
+<screen os="f"><userinput>make install</userinput></screen>
+
+    <para>At the end of the installation the make install process will
+      print a message stating that /sbin/lilo has to be executed to
+      complete the update. Don&quot;t do this as it has no use. The
+      /etc/lilo.conf isn&quot;t present yet. We will complete the
+      installation of lilo in chapter 12.</para>
+
+  </sect2>
+
+  <sect2 id="contents-lilo" role="content">
+    <title>Contents of Lilo</title>
+
+    <segmentedlist>
+      <segtitle>Installed programs</segtitle>
+
+      <seglistitem>
+        <seg>diag1.img, lilo, mkrescue, keytab-lilo.pl</seg>
+      </seglistitem>
+    </segmentedlist>
+
+    <variablelist>
+      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+      <?dbfo list-presentation="list"?>
+      <?dbhtml list-presentation="table"?>
+
+      <varlistentry id="diag1.img">
+        <term><command>diag1.img</command></term>
+        <listitem>
+          <para>A diagnostic disk boot image.</para>
+          <indexterm zone="ch-system-lilo diag1.img">
+            <primary sortas="b-diag1.img">diag1.img</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="lilo">
+        <term><command>lilo</command></term>
+        <listitem>
+          <para>Lilo installs the Linux boot loader which is used to start
+            a Linux system.</para>
+          <indexterm zone="ch-system-lilo lilo">
+            <primary sortas="b-lilo">lilo</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="mkrescue">
+        <term><command>mkrescue</command></term>
+        <listitem>
+          <para>A script to make a bootable floppy or CD image using the
+	    default settings from the configuration file.</para>
+          <indexterm zone="ch-system-lilo mkrescue">
+            <primary sortas="b-mkrescue">mkrescue</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry id="keytab-lilo.pl">
+        <term><command>keytab-lilo.pl</command></term>
+        <listitem>
+          <para>A perl script to create a keyboard translation table to
+	    allow the bootloader to process keystrokes to match your
+	    keyboard layout.</para>
+          <indexterm zone="ch-system-lilo keytab-lilo.pl">
+            <primary sortas="b-keytab-lilo.pl">keytab-lilo.pl</primary>
+          </indexterm>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+
+  </sect2>
+
+</sect1>
Index: general.ent
===================================================================
--- general.ent	(revision 15b9eeb7acfc93ee98086c709d4d5b7796e5a4ee)
+++ general.ent	(revision 3f01f6031f105acd959cc2c2d8676cbd633b5f52)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
 
-<!ENTITY version "CLFS-SVN-20060309">
+<!ENTITY version "CLFS-SVN-20060312">
 <!ENTITY version-x86 "&version;-x86">
 <!ENTITY version-x86_64 "&version;-x86_64-Multilib">
@@ -16,5 +16,5 @@
 <!ENTITY version-alpha "&version;-ALPHA">
 
-<!ENTITY releasedate "March 9, 2006">
+<!ENTITY releasedate "March 12, 2006">
 <!ENTITY milestone "0.1">
 <!ENTITY generic-version "svn"> <!-- Use "svn", "testing", or "x.y[-pre{x}]" -->
Index: introduction/x86_64-64/changelog.xml
===================================================================
--- introduction/x86_64-64/changelog.xml	(revision 15b9eeb7acfc93ee98086c709d4d5b7796e5a4ee)
+++ introduction/x86_64-64/changelog.xml	(revision 3f01f6031f105acd959cc2c2d8676cbd633b5f52)
@@ -33,4 +33,13 @@
 
 -->
+    <listitem>
+      <para>March 12, 2006</para>
+      <itemizedlist>
+        <listitem>
+          <para>[ken] - Use Lilo, because the grub shell segfaults.</para>
+        </listitem>
+      </itemizedlist>
+    </listitem>
+
 
     <listitem>
Index: materials/x86_64-64/packages.xml
===================================================================
--- materials/x86_64-64/packages.xml	(revision 15b9eeb7acfc93ee98086c709d4d5b7796e5a4ee)
+++ materials/x86_64-64/packages.xml	(revision 3f01f6031f105acd959cc2c2d8676cbd633b5f52)
@@ -14,7 +14,14 @@
 
     <varlistentry>
-      <term>GRUB (&grub-version;) - &grub-size;:</term>
+      <term>Bin86 (&bin86-version;) - &bin86-size;:</term>
       <listitem>
-        <para><ulink url="&grub-url;"/></para>
+        <para><ulink url="&bin86-url;"/></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term>Lilo (&lilo-version;) - &lilo-size;:</term>
+      <listitem>
+        <para><ulink url="&lilo-url;"/></para>
       </listitem>
     </varlistentry>
@@ -22,5 +29,5 @@
   </variablelist>
 
-  <para>Total size of these packages: about 38 MB</para>
+  <para>Total size of these packages: about 469 KB</para>
 
 </sect1>
Index: materials/x86_64-64/patches.xml
===================================================================
--- materials/x86_64-64/patches.xml	(revision 15b9eeb7acfc93ee98086c709d4d5b7796e5a4ee)
+++ materials/x86_64-64/patches.xml	(revision 3f01f6031f105acd959cc2c2d8676cbd633b5f52)
@@ -12,4 +12,12 @@
 
   <variablelist role="materials">
+
+    <varlistentry os="bin86 x86_64-patch">
+      <term>Bin86 x86_64 Patch - 2 KB:</term>
+      <listitem>
+        <para><ulink
+        url="&patches-root;bin86/&bin86-x86_64-patch;"/></para>
+      </listitem>
+    </varlistentry>
 
     <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
@@ -33,9 +41,9 @@
     </varlistentry>
 
-    <varlistentry os="grub_pure64-patch">
-      <term>Grub Pure 64 Patch - 4 KB:</term>
+    <varlistentry os="lilo-cross-x86_64-patch">
+      <term>Lilo x86_64 Cross Compile Patch - 1 KB:</term>
       <listitem>
         <para><ulink
-        url="&patches-root;grub/&grub-pure64-patch;"/></para>
+        url="&patches-root;lilo/&lilo-cross-x86_64-patch;"/></para>
       </listitem>
     </varlistentry>
Index: packages.ent
===================================================================
--- packages.ent	(revision 15b9eeb7acfc93ee98086c709d4d5b7796e5a4ee)
+++ packages.ent	(revision 3f01f6031f105acd959cc2c2d8676cbd633b5f52)
@@ -24,4 +24,8 @@
 <!ENTITY bash-doc-size "1.0 MB">
 <!ENTITY bash-doc-url "&gnu;bash/bash-doc-&bash-doc-version;.tar.gz">
+
+<!ENTITY bin86-version "0.16.17">
+<!ENTITY bin86-size "149 KB">
+<!ENTITY bin86-url "http://homepage.ntlworld.com/robert.debath/dev86/bin86-&bin86-version;.tar.gz">
 
 <!ENTITY binutils-version "2.16.1">
@@ -153,4 +157,8 @@
 <!ENTITY libtool-size "2.8 MB">
 <!ENTITY libtool-url "&gnu;libtool/libtool-&libtool-version;.tar.gz">
+
+<!ENTITY lilo-version "22.7.1">
+<!ENTITY lilo-size "420 KB">
+<!ENTITY lilo-url "ftp://ftp.metalab.unc.edu/pub/Linux/system/boot/lilo/lilo-&lilo-version;.src.tar.gz">
 
 <!ENTITY linux-dl-version "2.6">
Index: patches.ent
===================================================================
--- patches.ent	(revision 15b9eeb7acfc93ee98086c709d4d5b7796e5a4ee)
+++ patches.ent	(revision 3f01f6031f105acd959cc2c2d8676cbd633b5f52)
@@ -74,4 +74,10 @@
 <!ENTITY linux-libc-headers-x86_64_biarch-patch "linux-libc-headers-&linux-libc-headers-version;-x86_64_biarch-1.patch">
 
+<!-- Start of x86_64-64 patches -->
+
+<!ENTITY bin86-x86_64-patch "bin86-&bin86-version;-x86_64-1.patch">
+
+<!ENTITY lilo-cross-x86_64-patch "lilo-&lilo-version;-cross_compile_x86_64-1.patch">
+
 <!-- Start of ppc patches -->
 
Index: x86_64-64-index.xml
===================================================================
--- x86_64-64-index.xml	(revision 15b9eeb7acfc93ee98086c709d4d5b7796e5a4ee)
+++ x86_64-64-index.xml	(revision 3f01f6031f105acd959cc2c2d8676cbd633b5f52)
@@ -62,5 +62,5 @@
     <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="final-system/x86_64-64-chapter.xml"/>
     <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="bootscripts/x86_64-chapter.xml"/>
-    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="bootable/x86_64-chapter.xml"/>
+    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="bootable/x86_64-64-chapter.xml"/>
     <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="the-end/chapter.xml"/>
 
