Index: chapter10/grub.xml
===================================================================
--- chapter10/grub.xml	(revision b59c9e9155e6fffe4c35d4a622a9eaa5eb93d226)
+++ chapter10/grub.xml	(revision b6ff6a8c95543b63e6ed8f7acaa561f2305c7df1)
@@ -19,10 +19,21 @@
   <note>
     <para>
-      If your system has UEFI support and you wish to boot LFS with UEFI,
-      you should skip the instructions in this page but still learn the
+      This section assume your system has UEFI support and you wish to boot
+      LFS with UEFI and GRUB built following the instructions in Chapter 8.
+    </para>
+    <para>
+      If you've installed GRUB for UEFI with optional dependencies following
+      BLFS, you should skip the instructions in this page but still learn the
       syntax of <filename>grub.cfg</filename> and the method to specify
       a partition in the file from this page, and configure GRUB with UEFI
-      support using the instructions provided in
-      <ulink url="&blfs-book;postlfs/grub-setup.html">the BLFS page</ulink>.
+      using the instructions provided in
+      <ulink url="&blfs-book;postlfs/grub-setup.html">the BLFS page</ulink>,
+      but replace <parameter>--target=x86_64-efi</parameter> with
+      <parameter>--target=arm64-efi</parameter> for the ARM64 system.
+    </para>
+    <para>
+      If your system does not support UEFI or you don't want to use it,
+      you'll need to figure out how to configure the booting process of
+      the system on your own.
     </para>
   </note>
@@ -37,16 +48,21 @@
     LILO.</para></warning>
 
-    <para> Ensure that an emergency boot disk is ready to <quote>rescue</quote>
+    <para>Ensure that an emergency boot disk is ready to <quote>rescue</quote>
     the computer if the computer becomes unusable (un-bootable).  If you do not
-    already have a boot device, you can create one.  In order for the procedure
-    below to work, you need to jump ahead to BLFS and install
-    <userinput>xorriso</userinput> from the <ulink
-    url="&blfs-book;multimedia/libisoburn.html">
-    libisoburn</ulink> package.</para>
-
-<screen role="nodump"><userinput>cd /tmp
-grub-mkrescue --output=grub-img.iso
-xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso</userinput></screen>
-
+    already have a boot device, you can create one.  To create a emergency
+    boot device for UEFI, consult section <quote>Create an Emergency Boot
+    Disk</quote> in
+	<ulink url="&blfs-book;postlfs/grub-setup.html">the BLFS page</ulink>.</para>
+
+  </sect2>
+
+  <sect2>
+    <title>Turn off Secure Boot</title>
+
+    <para>LFS does not have the essential packages to support Secure Boot.
+    To set up the boot process following the instructions in this section,
+    Secure Boot must be turned off from the configuration interface of the
+    firmware. Read the documentation provided by the manufacturer of your
+    system to find out how.</para>
   </sect2>
 
@@ -74,8 +90,29 @@
     <title>Setting Up the Configuration</title>
 
-    <para>GRUB works by writing data to the first physical track of the
-    hard disk.  This area is not part of any file system.  The programs
-    there access GRUB modules in the boot partition.  The default location
-    is /boot/grub/.</para>
+    <para>GRUB works by creating an EFI executable in the EFI System
+    Partition (ESP).  You can find the ESP with:</para>
+
+<screen role="nodump"><userinput>fdisk -l | grep 'EFI System'</userinput></screen>
+
+    <para>If no ESP exists on your hard drive (for example, you are building
+    LFS on a fresh new system with a Live CD as the host distro), read
+    <ulink url="&blfs-book;postlfs/grub-setup.html">the BLFS page</ulink>
+    for the instruction to create an ESP on your hard drive.</para>
+
+    <para>If the ESP is not mounted at
+    <filename class="directory">/boot/efi</filename> (in the chroot),
+    mount it now:</para>
+
+<screen role="nodump"><userinput>mkdir -pv /boot/efi
+mount /boot/efi</userinput></screen>
+
+    <note>
+      <para>The path to the device node is intentionally omitted in the
+      command.  We expect the entry for mounting the ESP to
+      <filename class="directory">/boot/efi</filename> is already in
+      <filename>/etc/fstab</filename>.  Add the entry before running the
+      command if you forgot to create an entry for the ESP in
+      <xref linkend="ch-bootable-fstab"/>.</para>
+    </note>
 
     <para>The location of the boot partition is a choice of the user that
@@ -102,21 +139,54 @@
 
     <para>Install the GRUB files into <filename
-    class="directory">/boot/grub</filename> and set up the boot track:</para>
+    class="directory">/boot/grub</filename> and the GRUB EFI executable into
+	<filename class="directory">/boot/efi/EFI/BOOT/BOOTAA64.EFI</filename>:</para>
 
     <warning>
-      <para>The following command will overwrite the current boot loader. Do not
-      run the command if this is not desired, for example, if using a third party
-      boot manager to manage the Master Boot Record (MBR).</para>
+      <para>The following command will overwrite
+      <filename>BOOTAA64.EFI</filename>. Do not run the command if this is
+      not desired, for example, if it contains a third party boot manager.
+      You can backup it with <command>cp</command> as it's a regular
+      file.</para>
     </warning>
 
-<screen role="nodump"><userinput>grub-install /dev/sda</userinput></screen>
+<screen role="nodump"><userinput>grub-install --removable</userinput></screen>
 
     <note>
-      <para>If the system has been booted using UEFI,
-      <command>grub-install</command> will try to install files for the
-      <emphasis>x86_64-efi</emphasis> target, but those files
-      have not been installed in <xref linkend="chapter-building-system"/>.
-      If this is the case, add <option>--target i386-pc</option> to the
-      command above.</para>
+      <para>
+        <parameter>--removable</parameter> may seem strange here.  The UEFI
+        firmware searches EFI executables for boot loaders in a hardcoded
+        path, <filename>EFI/BOOT/BOOTAA64.EFI</filename> in the ESP, and other
+        boot loader paths listed in the EFI variables.  We've not installed
+        the utilities for manipulating EFI variables so we need to install
+        the EFI executable into the hardcoded path.  The hardcoded path is
+        usually used by removable devices (for example, USB thumb devices)
+        so the <command>grub-install</command> option for this purpose is
+        named <parameter>--removable</parameter>.
+      </para>
+      <para>
+        UEFI implementation usually prefers the boot loaders with paths
+        recorded in an EFI variable, to the boot loader with the hardcoded
+        search path.  You may need to invoke the boot device selection menu
+        or setting interface of your EFI firmware on next boot to explicitly
+        select the bootloader.
+      </para>
+      <para>
+        Some UEFI implementation may completely skip the hardcoded path if
+        there are other boot loaders in the same hard drive with paths
+        recorded in an EFI variable.  Then you need to create an EFI
+        variable for the newly installed boot loader.  Install
+        <ulink url="&blfs-book;postlfs/efibootmgr.html">efibootmgr</ulink>,
+        then run the following commands:
+
+<screen role="nodump"><userinput>mount -v -t efivarfs efivarfs /sys/firmware/efi/efivars
+efibootmgr -B -L LFS || true
+efibootmgr -c -L LFS -l '\EFI\BOOT\BOOTAA64.EFI' -d /dev/sda
+umount /sys/firmware/efi/efivars</userinput></screen>
+
+        Replace <filename>/dev/sda</filename> with the device node of the
+        hard drive where you are installing GRUB into.  For some UEFI
+        firmwares, <option>-e 3</option> option may be needed for the
+        <command>efibootmgr -c</command> command.
+      </para>
     </note>
 
@@ -147,4 +217,6 @@
 insmod ext2
 set root=(hd0,2)
+
+insmod all_video
 
 menuentry "GNU/Linux, Linux &linux-version;-lfs-&version;" {
