aboutsummaryrefslogtreecommitdiffstats
path: root/chapter08/grub.xml
diff options
context:
space:
mode:
authorBruce Dubbs <bdubbs@linuxfromscratch.org>2020-06-07 20:16:00 +0000
committerBruce Dubbs <bdubbs@linuxfromscratch.org>2020-06-07 20:16:00 +0000
commitfcc027677da55c41dcaea045f5b9ff8b088e6495 (patch)
tree42500a7858959695b971e7f28f1d0bf33185db2e /chapter08/grub.xml
parentd53fefab5a6772fef606392a61608fc290e6a7ae (diff)
Initial commit of alternative cross LFS
git-svn-id: http://svn.linuxfromscratch.org/LFS/branches/cross2@11897 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
Diffstat (limited to 'chapter08/grub.xml')
-rw-r--r--chapter08/grub.xml495
1 files changed, 339 insertions, 156 deletions
diff --git a/chapter08/grub.xml b/chapter08/grub.xml
index d6897d5e5..25a61077b 100644
--- a/chapter08/grub.xml
+++ b/chapter08/grub.xml
@@ -5,7 +5,7 @@
%general-entities;
]>
-<sect1 id="ch-bootable-grub" role="wrap">
+<sect1 id="ch-system-grub" role="wrap">
<?dbhtml filename="grub.html"?>
<sect1info condition="script">
@@ -14,178 +14,361 @@
<address>&grub-url;</address>
</sect1info>
- <title>Using GRUB to Set Up the Boot Process</title>
-
- <sect2>
- <title>Introduction</title>
-
- <warning><para>Configuring GRUB incorrectly can render your system
- inoperable without an alternate boot device such as a CD-ROM. This
- section is not required to boot your LFS system. You may just
- want to modify your current boot loader, e.g. Grub-Legacy, GRUB2, or
- LILO.</para></warning>
-
-
- <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>
-
- <note>
- <para>
- To boot LFS on host systems that have UEFI enabled, the kernel needs to
- have been built with the CONFIG_EFI_STUB capabality described in the
- previous section. However, LFS can be booted using GRUB2 without such
- an addition. To do this, the UEFI Mode and Secure Boot capabilities in
- the host system's BIOS need to be turned off. For details, see <ulink
- url="&hints-root;lfs-uefi.txt">
- the lfs-uefi.txt hint</ulink> at
- &hints-root;lfs-uefi.txt.
- </para>
- </note>
+ <title>GRUB-&grub-version;</title>
- </sect2>
+ <indexterm zone="ch-system-grub">
+ <primary sortas="a-Grub">GRUB</primary>
+ </indexterm>
- <sect2>
- <title>GRUB Naming Conventions</title>
-
- <para>GRUB uses its own naming structure for drives and partitions in
- the form of <emphasis>(hdn,m)</emphasis>, where <emphasis>n</emphasis>
- is the hard drive number and <emphasis>m</emphasis> is the partition
- number. The hard drive number starts from zero, but the partition number
- starts from one for normal partitions and five for extended partitions.
- Note that this is different from earlier versions where
- both numbers started from zero. For example, partition <filename
- class="partition">sda1</filename> is <emphasis>(hd0,1)</emphasis> to
- GRUB and <filename class="partition">sdb3</filename> is
- <emphasis>(hd1,3)</emphasis>. In contrast to Linux, GRUB does not
- consider CD-ROM drives to be hard drives. For example, if using a CD
- on <filename class="partition">hdb</filename> and a second hard drive
- on <filename class="partition">hdc</filename>, that second hard drive
- would still be <emphasis>(hd1)</emphasis>.</para>
+ <sect2 role="package">
+ <title/>
- </sect2>
+ <para>The GRUB package contains the GRand Unified Bootloader.</para>
+
+ <segmentedlist>
+ <segtitle>&buildtime;</segtitle>
+ <segtitle>&diskspace;</segtitle>
+
+ <seglistitem>
+ <seg>&grub-ch6-sbu;</seg>
+ <seg>&grub-ch6-du;</seg>
+ </seglistitem>
+ </segmentedlist>
- <sect2>
- <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>The location of the boot partition is a choice of the user that
- affects the configuration. One recommendation is to have a separate small
- (suggested size is 100 MB) partition just for boot information. That way
- each build, whether LFS or some commercial distro, can access the same boot
- files and access can be made from any booted system. If you choose to do
- this, you will need to mount the separate partition, move all files in the
- current <filename class="directory">/boot</filename> directory (e.g. the
- linux kernel you just built in the previous section) to the new partition.
- You will then need to unmount the partition and remount it as <filename
- class="directory">/boot</filename>. If you do this, be sure to update
- <filename>/etc/fstab</filename>.</para>
-
- <para>Using the current lfs partition will also work, but configuration
- for multiple systems is more difficult.</para>
-
- <para>Using the above information, determine the appropriate
- designator for the root partition (or boot partition, if a separate
- one is used). For the following example, it is assumed that the root
- (or separate boot) partition is <filename
- class="partition">sda2</filename>.</para>
-
- <para>Install the GRUB files into <filename
- class="directory">/boot/grub</filename> and set up the boot track:</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>
- </warning>
-
-<screen role="nodump"><userinput>grub-install /dev/sda</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 chapter 6. If this is the case, add
- <option>--target i386-pc</option> to the command above.</para>
- </note>
-
-<!-- This does not seem to be true any more
- <note><para><application>grub-install</application> is a script and calls another
- program, grub-probe, that may fail with a message "cannot stat `/dev/root'".
- If so, create a temporary symbolic link from your root partition to /dev/root:</para>
-
-<screen role="nodump"><userinput>ln -sv /dev/sda2 /dev/root</userinput></screen>
-
- <para>The symbolic link will only be present until the system is rebooted.
- The link is only needed for the installation procedure.
- </para></note>
--->
</sect2>
- <sect2 id="grub-cfg">
- <title>Creating the GRUB Configuration File</title>
+ <sect2 role="installation">
+ <title>Installation of GRUB</title>
+
+ <para>Prepare GRUB for compilation:</para>
- <para>Generate <filename>/boot/grub/grub.cfg</filename>:</para>
+<screen><userinput remap="configure">./configure --prefix=/usr \
+ --sbindir=/sbin \
+ --sysconfdir=/etc \
+ --disable-efiemu \
+ --disable-werror</userinput></screen>
- <screen revision="sysv"><userinput>cat &gt; /boot/grub/grub.cfg &lt;&lt; "EOF"
-<literal># Begin /boot/grub/grub.cfg
-set default=0
-set timeout=5
+ <variablelist>
+ <title>The meaning of the new configure options:</title>
-insmod ext2
-set root=(hd0,2)
+ <varlistentry>
+ <term><parameter>--disable-werror</parameter></term>
+ <listitem>
+ <para>This allows the build to complete with warnings introduced
+ by more recent Flex versions.</para>
+ </listitem>
+ </varlistentry>
-menuentry "GNU/Linux, Linux &linux-version;-lfs-&version;" {
- linux /boot/vmlinuz-&linux-version;-lfs-&version; root=/dev/sda2 ro
-}</literal>
-EOF</userinput></screen>
+ <varlistentry>
+ <term><parameter>--disable-efiemu</parameter></term>
+ <listitem>
+ <para>This option minimizes what is built by disabling a feature and
+ testing programs not needed for LFS.</para>
+ </listitem>
+ </varlistentry>
- <screen revision="systemd"><userinput>cat &gt; /boot/grub/grub.cfg &lt;&lt; "EOF"
-<literal># Begin /boot/grub/grub.cfg
-set default=0
-set timeout=5
+ </variablelist>
-insmod ext2
-set root=(hd0,2)
+ <para>Compile the package:</para>
-menuentry "GNU/Linux, Linux &linux-version;-lfs-&versiond;" {
- linux /boot/vmlinuz-&linux-version;-lfs-&versiond; root=/dev/sda2 ro
-}</literal>
-EOF</userinput></screen>
+<screen><userinput remap="make">make</userinput></screen>
+ <para>This package does not come with a test suite.</para>
- <note><para>From <application>GRUB</application>'s perspective, the
- kernel files are relative to the partition used. If you
- used a separate /boot partition, remove /boot from the above
- <emphasis>linux</emphasis> line. You will also need to change the
- <emphasis>set root</emphasis> line to point to the boot partition.
- </para></note>
+ <para>Install the package:</para>
- <para>GRUB is an extremely powerful program and it provides a tremendous
- number of options for booting from a wide variety of devices, operating
- systems, and partition types. There are also many options for customization
- such as graphical splash screens, playing sounds, mouse input, etc. The
- details of these options are beyond the scope of this introduction.</para>
+<screen><userinput remap="install">make install
+mv -v /etc/bash_completion.d/grub /usr/share/bash-completion/completions</userinput></screen>
- <caution><para>There is a command, <application>grub-mkconfig</application>, that
- can write a configuration file automatically. It uses a set of scripts in
- /etc/grub.d/ and will destroy any customizations that you make. These scripts
- are designed primarily for non-source distributions and are not recommended for
- LFS. If you install a commercial Linux distribution, there is a good chance
- that this program will be run. Be sure to back up your grub.cfg file.</para></caution>
+ <para>Using GRUB to make your LFS system bootable will be discussed in
+ <xref linkend="ch-bootable-grub"/>.</para>
- </sect2>
+ </sect2>
+
+ <sect2 id="contents-gRUB" role="content">
+ <title>Contents of GRUB</title>
+
+ <segmentedlist>
+ <segtitle>Installed programs</segtitle>
+ <segtitle>Installed directories</segtitle>
+
+ <seglistitem>
+
+ <seg>grub-bios-setup, grub-editenv, grub-file, grub-fstest,
+ grub-glue-efi, grub-install, grub-kbdcomp, grub-macbless,
+ grub-menulst2cfg, grub-mkconfig,
+ grub-mkimage, grub-mklayout, grub-mknetdir,
+ grub-mkpasswd-pbkdf2, grub-mkrelpath, grub-mkrescue, grub-mkstandalone,
+ grub-ofpathname, grub-probe, grub-reboot, grub-render-label,
+ grub-script-check,
+ grub-set-default, grub-sparc64-setup, and grub-syslinux2cfg</seg>
+
+ <seg>/usr/lib/grub, /etc/grub.d, /usr/share/grub, and /boot/grub (when grub-install
+ is first run)</seg>
+ </seglistitem>
+ </segmentedlist>
+
+ <variablelist>
+ <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+ <?dbfo list-presentation="list"?>
+ <?dbhtml list-presentation="table"?>
+
+ <varlistentry id="grub-bios-setup">
+ <term><command>grub-bios-setup</command></term>
+ <listitem>
+ <para>Is a helper program for grub-install</para>
+ <indexterm zone="ch-system-grub grub-bios-setup">
+ <primary sortas="b-grub-bios-setup">grub-bios-setup</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="grub-editenv">
+ <term><command>grub-editenv</command></term>
+ <listitem>
+ <para>A tool to edit the environment block</para>
+ <indexterm zone="ch-system-grub grub-editenv">
+ <primary sortas="b-grub-editenv">grub-editenv</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="grub-file">
+ <term><command>grub-file</command></term>
+ <listitem>
+ <para>Checks if FILE is of the specified type.</para>
+ <indexterm zone="ch-system-grub grub-file">
+ <primary sortas="b-grub-file">grub-file</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="grub-fstest">
+ <term><command>grub-fstest</command></term>
+ <listitem>
+ <para>Tool to debug the filesystem driver</para>
+ <indexterm zone="ch-system-grub grub-fstest">
+ <primary sortas="b-grub-fstest">grub-fstest</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="grub-glue-efi">
+ <term><command>grub-glue-efi</command></term>
+ <listitem>
+ <para>Processes ia32 and amd64 EFI images and glues them
+ according to Apple format.</para>
+ <indexterm zone="ch-system-grub grub-glue-efi">
+ <primary sortas="b-grub-glue-efi">grub-glue-efi</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="grub-install">
+ <term><command>grub-install</command></term>
+ <listitem>
+ <para>Install GRUB on your drive</para>
+ <indexterm zone="ch-system-grub grub-install">
+ <primary sortas="b-grub-install">grub-install</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="grub-kbdcomp">
+ <term><command>grub-kbdcomp</command></term>
+ <listitem>
+ <para>Script that converts an xkb layout into one recognized by
+ GRUB</para>
+ <indexterm zone="ch-system-grub grub-kbdcomp">
+ <primary sortas="b-grub-kbdcomp">grub-kbdcomp</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="grub-macbless">
+ <term><command>grub-macbless</command></term>
+ <listitem>
+ <para>Mac-style bless on HFS or HFS+ files</para>
+ <indexterm zone="ch-system-grub grub-macbless">
+ <primary sortas="b-grub-macbless">grub-macbless</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="grub-menulst2cfg">
+ <term><command>grub-menulst2cfg</command></term>
+ <listitem>
+ <para>Converts a GRUB Legacy <filename>menu.lst</filename>
+ into a <filename>grub.cfg</filename> for use with GRUB 2</para>
+ <indexterm zone="ch-system-grub grub-menulst2cfg">
+ <primary sortas="b-grub-menulst2cfg">grub-menulst2cfg</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="grub-mkconfig">
+ <term><command>grub-mkconfig</command></term>
+ <listitem>
+ <para>Generate a grub config file</para>
+ <indexterm zone="ch-system-grub grub-mkconfig">
+ <primary sortas="b-grub-mkconfig">grub-mkconfig</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="grub-mkimage">
+ <term><command>grub-mkimage</command></term>
+ <listitem>
+ <para>Make a bootable image of GRUB</para>
+ <indexterm zone="ch-system-grub grub-mkimage">
+ <primary sortas="b-grub-mkimage">grub-mkimage</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="grub-mklayout">
+ <term><command>grub-mklayout</command></term>
+ <listitem>
+ <para>Generates a GRUB keyboard layout file</para>
+ <indexterm zone="ch-system-grub grub-mklayout">
+ <primary sortas="b-grub-mklayout">grub-mklayout</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="grub-mknetdir">
+ <term><command>grub-mknetdir</command></term>
+ <listitem>
+ <para>Prepares a GRUB netboot directory</para>
+ <indexterm zone="ch-system-grub grub-mknetdir">
+ <primary sortas="b-grub-mknetdir">grub-mknetdir</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="grub-mkpasswd-pbkdf2">
+ <term><command>grub-mkpasswd-pbkdf2</command></term>
+ <listitem>
+ <para>Generates an encrypted PBKDF2 password for use in the boot
+ menu</para>
+ <indexterm zone="ch-system-grub grub-mkpasswd-pbkdf2">
+ <primary sortas="b-grub-mkpasswd-pbkdf2">grub-mkpasswd-pbkdf2</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="grub-mkrelpath">
+ <term><command>grub-mkrelpath</command></term>
+ <listitem>
+ <para>Makes a system pathname relative to its root</para>
+ <indexterm zone="ch-system-grub grub-mkrelpath">
+ <primary sortas="b-grub-mkrelpath">grub-mkrelpath</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="grub-mkrescue">
+ <term><command>grub-mkrescue</command></term>
+ <listitem>
+ <para>Make a bootable image of GRUB suitable for a floppy disk or CDROM/DVD</para>
+ <indexterm zone="ch-system-grub grub-mkrescue">
+ <primary sortas="b-grub-mkrescue">grub-mkrescue</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="grub-mkstandalone">
+ <term><command>grub-mkstandalone</command></term>
+ <listitem>
+ <para>Generates a standalone image</para>
+ <indexterm zone="ch-system-grub grub-mkstandalone">
+ <primary sortas="b-grub-mkstandalone">grub-mkstandalone</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="grub-ofpathname">
+ <term><command>grub-ofpathname</command></term>
+ <listitem>
+ <para>Is a helper program that prints the path of a GRUB device</para>
+ <indexterm zone="ch-system-grub grub-ofpathname">
+ <primary sortas="b-grub-ofpathname">grub-ofpathname</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="grub-probe">
+ <term><command>grub-probe</command></term>
+ <listitem>
+ <para>Probe device information for a given path or device</para>
+ <indexterm zone="ch-system-grub grub-probe">
+ <primary sortas="b-grub-probe">grub-probe</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="grub-reboot">
+ <term><command>grub-reboot</command></term>
+ <listitem>
+ <para>Sets the default boot entry for GRUB for the next boot only</para>
+ <indexterm zone="ch-system-grub grub-reboot">
+ <primary sortas="b-grub-reboot">grub-reboot</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="grub-render-label">
+ <term><command>grub-render-label</command></term>
+ <listitem>
+ <para>Render Apple .disk_label for Apple Macs</para>
+ <indexterm zone="ch-system-grub grub-render-label">
+ <primary sortas="b-grub-render-label">grub-render-label</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="grub-script-check">
+ <term><command>grub-script-check</command></term>
+ <listitem>
+ <para>Checks GRUB configuration script for syntax errors</para>
+ <indexterm zone="ch-system-grub grub-script-check">
+ <primary sortas="b-grub-script-check">grub-script-check</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="grub-set-default">
+ <term><command>grub-set-default</command></term>
+ <listitem>
+ <para>Sets the default boot entry for GRUB</para>
+ <indexterm zone="ch-system-grub grub-set-default">
+ <primary sortas="b-grub-set-default">grub-set-default</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="grub-sparc64-setup">
+ <term><command>grub-sparc64-setup</command></term>
+ <listitem>
+ <para>Is a helper program for grub-setup</para>
+ <indexterm zone="ch-system-grub grub-sparc64-setup">
+ <primary sortas="b-grub-sparc64-setup">grub-setup</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="grub-syslinux2cfg">
+ <term><command>grub-syslinux2cfg</command></term>
+ <listitem>
+ <para>Transform a syslinux config file into grub.cfg format</para>
+ <indexterm zone="ch-system-grub grub-syslinux2cfg">
+ <primary sortas="b-grub-syslinux2cfg">grub-syslinux2cfg</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ </sect2>
</sect1>