diff options
author | Bruce Dubbs <bdubbs@linuxfromscratch.org> | 2020-06-07 20:16:00 +0000 |
---|---|---|
committer | Bruce Dubbs <bdubbs@linuxfromscratch.org> | 2020-06-07 20:16:00 +0000 |
commit | fcc027677da55c41dcaea045f5b9ff8b088e6495 (patch) | |
tree | 42500a7858959695b971e7f28f1d0bf33185db2e /chapter08/grub.xml | |
parent | d53fefab5a6772fef606392a61608fc290e6a7ae (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.xml | 495 |
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 > /boot/grub/grub.cfg << "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 > /boot/grub/grub.cfg << "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> |