mirror of
https://git.linuxfromscratch.org/lfs.git
synced 2025-08-14 23:45:16 +01:00
mips64el: remove grub and add a note about bootloader
There are many MIPS boards and grub only supports three kind of them: arc, loongson, qemu. And for loongson and qemu, grub requires freetype2. Just remove it in the mips64el branch.
This commit is contained in:
parent
444bc9c160
commit
c75f261471
@ -74,7 +74,6 @@
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gawk.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="findutils.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="groff.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="grub.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gzip.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="iproute2.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="kbd.xml"/>
|
||||
|
@ -1,403 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
|
||||
<!ENTITY % general-entities SYSTEM "../general.ent">
|
||||
%general-entities;
|
||||
]>
|
||||
|
||||
<sect1 id="ch-system-grub" role="wrap">
|
||||
<?dbhtml filename="grub.html"?>
|
||||
|
||||
<sect1info condition="script">
|
||||
<productname>grub</productname>
|
||||
<productnumber>&grub-version;</productnumber>
|
||||
<address>&grub-url;</address>
|
||||
</sect1info>
|
||||
|
||||
<title>GRUB-&grub-version;</title>
|
||||
|
||||
<indexterm zone="ch-system-grub">
|
||||
<primary sortas="a-Grub">GRUB</primary>
|
||||
</indexterm>
|
||||
|
||||
<sect2 role="package">
|
||||
<title/>
|
||||
|
||||
<para>The GRUB package contains the GRand Unified Bootloader.</para>
|
||||
|
||||
<segmentedlist>
|
||||
<segtitle>&buildtime;</segtitle>
|
||||
<segtitle>&diskspace;</segtitle>
|
||||
|
||||
<seglistitem>
|
||||
<seg>&grub-fin-sbu;</seg>
|
||||
<seg>&grub-fin-du;</seg>
|
||||
</seglistitem>
|
||||
</segmentedlist>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2 role="installation">
|
||||
<title>Installation of GRUB</title>
|
||||
|
||||
<note>
|
||||
<para>
|
||||
If your system has UEFI support and you wish to boot LFS with UEFI,
|
||||
you can skip this package in LFS,
|
||||
and install GRUB with UEFI support (and its dependencies) by following
|
||||
the instructions on
|
||||
<ulink url="&blfs-book;postlfs/grub-efi.html">the BLFS page</ulink>.
|
||||
</para>
|
||||
</note>
|
||||
|
||||
<warning>
|
||||
<para>Unset any environment variables which may affect the build:</para>
|
||||
|
||||
<screen><userinput remap='pre'>unset {C,CPP,CXX,LD}FLAGS</userinput></screen>
|
||||
|
||||
<para>Don't try <quote>tuning</quote> this package with custom
|
||||
compilation flags. This package is a bootloader. The low-level
|
||||
operations in the source code may be broken by
|
||||
aggressive optimization.</para>
|
||||
</warning>
|
||||
|
||||
<para>
|
||||
Add a file missing from the release tarball:
|
||||
</para>
|
||||
|
||||
<screen><userinput remap='pre'>echo <literal>depends bli part_gpt</literal> > grub-core/extra_deps.lst</userinput></screen>
|
||||
|
||||
<para>Prepare GRUB for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">./configure --prefix=/usr \
|
||||
--sysconfdir=/etc \
|
||||
--disable-efiemu \
|
||||
--disable-werror</userinput></screen>
|
||||
|
||||
<variablelist>
|
||||
<title>The meaning of the new configure options:</title>
|
||||
|
||||
<varlistentry>
|
||||
<term><parameter>--disable-werror</parameter></term>
|
||||
<listitem>
|
||||
<para>This allows the build to complete with warnings introduced
|
||||
by more recent versions of Flex.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><parameter>--disable-efiemu</parameter></term>
|
||||
<listitem>
|
||||
<para>This option minimizes what is built by disabling a feature and
|
||||
eliminating some test programs not needed for LFS.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>The test suite for this packages is not recommended. Most of
|
||||
the tests depend on packages that are not available in the limited
|
||||
LFS environment. To run the tests anyway, run <command>make check</command>.</para>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make install
|
||||
mv -v /etc/bash_completion.d/grub /usr/share/bash-completion/completions</userinput></screen>
|
||||
|
||||
<para>Making your LFS system bootable with GRUB will be discussed in
|
||||
<xref linkend="ch-bootable-grub"/>.</para>
|
||||
|
||||
</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 <command>grub-install</command></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>Is 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 to see if the given 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>Is a 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>Glues 32-bit and 64-bit binaries into a single file (for Apple machines)</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>Installs 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>Is a 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>Is the Mac-style bless for HFS or HFS+ file systems (<command>bless</command>
|
||||
is peculiar to Apple machines; it makes a device bootable)</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>Generates a <filename>grub.cfg</filename> 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>Makes 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>Makes a bootable image of GRUB suitable for a floppy disk,
|
||||
CDROM/DVD, or a USB drive</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 to 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>Probes 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>Renders 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 the 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>Transforms 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>
|
@ -376,8 +376,8 @@ make DESTDIR=/usr/pkg/libfoo/1.1 install</userinput></screen>
|
||||
versions of some processors may provide instructions that are unavailable with
|
||||
earlier versions.</para></note>
|
||||
|
||||
<para>Finally, the new system has to be made bootable via <xref
|
||||
linkend="ch-bootable-grub"/>.</para>
|
||||
<para>Finally, the new system has to be made bootable by configuring
|
||||
a bootloader correctly.</para>
|
||||
|
||||
</sect2>
|
||||
|
||||
|
@ -37,9 +37,7 @@
|
||||
kernel command line. This is most appropriate for systems
|
||||
that have just one ethernet device of a particular type. Laptops
|
||||
often have two ethernet connections named eth0 and
|
||||
wlan0; such laptops can also use this method. The command line
|
||||
is in the GRUB configuration file.
|
||||
See <xref linkend="grub-cfg"/>.</para>
|
||||
wlan0; such laptops can also use this method.</para>
|
||||
</sect3>
|
||||
|
||||
<sect3>
|
||||
|
@ -14,6 +14,5 @@
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="introduction.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="fstab.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="kernel.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="grub.xml"/>
|
||||
|
||||
</chapter>
|
||||
|
@ -1,218 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
|
||||
<!ENTITY % general-entities SYSTEM "../general.ent">
|
||||
%general-entities;
|
||||
]>
|
||||
|
||||
<sect1 id="ch-bootable-grub" role="wrap">
|
||||
<?dbhtml filename="grub.html"?>
|
||||
|
||||
<sect1info condition="script">
|
||||
<productname>grub</productname>
|
||||
<productnumber>&grub-version;</productnumber>
|
||||
<address>&grub-url;</address>
|
||||
</sect1info>
|
||||
|
||||
<title>Using GRUB to Set Up the Boot Process</title>
|
||||
|
||||
<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
|
||||
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>.
|
||||
</para>
|
||||
</note>
|
||||
|
||||
<sect2>
|
||||
<title>Introduction</title>
|
||||
|
||||
<warning><para>Configuring GRUB incorrectly can render your system
|
||||
inoperable without an alternate boot device such as a CD-ROM or bootable
|
||||
USB drive. 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>
|
||||
|
||||
</sect2>
|
||||
|
||||
<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 numbers start from zero, but the partition numbers
|
||||
start from one for normal partitions (from 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>
|
||||
|
||||
<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 200 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>Leaving <filename class="directory">/boot</filename> on
|
||||
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 <xref linkend="chapter-building-system"/>.
|
||||
If this is the case, add <option>--target i386-pc</option> to the
|
||||
command above.</para>
|
||||
</note>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2 id="grub-cfg">
|
||||
<title>Creating the GRUB Configuration File</title>
|
||||
|
||||
<para>Generate <filename>/boot/grub/grub.cfg</filename>:</para>
|
||||
|
||||
<screen><userinput>cat > /boot/grub/grub.cfg << "EOF"
|
||||
<literal># Begin /boot/grub/grub.cfg
|
||||
set default=0
|
||||
set timeout=5
|
||||
|
||||
insmod part_gpt
|
||||
insmod ext2
|
||||
set root=(hd0,2)
|
||||
|
||||
menuentry "GNU/Linux, Linux &linux-version;-lfs-&version;" {
|
||||
linux /boot/vmlinuz-&linux-version;-lfs-&version; root=/dev/sda2 ro
|
||||
}</literal>
|
||||
EOF</userinput></screen>
|
||||
|
||||
<para>
|
||||
The <command>insmod</command> commands load the
|
||||
<application>GRUB</application> modules named
|
||||
<filename>part_gpt</filename> and <filename>ext2</filename>.
|
||||
Despite the naming, <filename>ext2</filename> actually supports
|
||||
<systemitem class='filesystem'>ext2</systemitem>,
|
||||
<systemitem class='filesystem'>ext3</systemitem>, and
|
||||
<systemitem class='filesystem'>ext4</systemitem> filesystems.
|
||||
The <command>grub-install</command> command has embedded some modules
|
||||
into the main <application>GRUB</application> image (installed into
|
||||
the MBR or the GRUB BIOS partition) to access the other modules
|
||||
(in <filename class='directory'>/boot/grub/i386-pc</filename>) without
|
||||
a chicken-or-egg issue, so with a typical configuration these two
|
||||
modules are already embedded and those two <command>insmod</command>
|
||||
commands will do nothing. But they do no harm anyway, and they may
|
||||
be needed with some rare configurations.
|
||||
</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>
|
||||
|
||||
<note>
|
||||
<para>The GRUB designator for a partition may change if you added or
|
||||
removed some disks (including removable disks like USB thumb devices).
|
||||
The change may cause boot failure because
|
||||
<filename>grub.cfg</filename> refers to some <quote>old</quote>
|
||||
designators. If you wish to avoid such a problem, you may use
|
||||
the UUID of a partition and the UUID of a filesystem instead of a GRUB designator to
|
||||
specify a device.
|
||||
Run <command>lsblk -o UUID,PARTUUID,PATH,MOUNTPOINT</command> to show
|
||||
the UUIDs of your filesystems (in the <literal>UUID</literal> column) and
|
||||
partitions (in the <literal>PARTUUID</literal> column). Then replace
|
||||
<literal>set root=(hdx,y)</literal> with
|
||||
<literal>search --set=root --fs-uuid <replaceable><UUID of the filesystem
|
||||
where the kernel is installed></replaceable></literal>, and replace
|
||||
<literal>root=/dev/sda2</literal> with
|
||||
<literal>root=PARTUUID=<replaceable><UUID of the partition where LFS
|
||||
is built></replaceable></literal>.</para>
|
||||
<para>Note that the UUID of a partition is completely different from the
|
||||
UUID of the filesystem in this partition. Some online resources may
|
||||
instruct you to use
|
||||
<literal>root=UUID=<replaceable><filesystem UUID></replaceable></literal>
|
||||
instead of
|
||||
<literal>root=PARTUUID=<replaceable><partition UUID></replaceable></literal>,
|
||||
but doing so will require an initramfs, which is beyond the scope of
|
||||
LFS.</para>
|
||||
<para>The name of the device node for a partition in
|
||||
<filename class='directory'>/dev</filename> may also change (this is less
|
||||
likely than a GRUB designator change). You can also replace
|
||||
paths to device nodes like <literal>/dev/sda1</literal> with
|
||||
<literal>PARTUUID=<replaceable><partition UUID></replaceable></literal>,
|
||||
in <filename>/etc/fstab</filename>, to avoid a potential boot failure
|
||||
in case the device node name has changed.</para>
|
||||
</note>
|
||||
|
||||
<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>
|
||||
|
||||
<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>
|
||||
|
||||
</sect2>
|
||||
|
||||
</sect1>
|
@ -375,6 +375,14 @@
|
||||
|
||||
<screen><userinput remap="install">cp -iv .config /boot/config-&linux-version;</userinput></screen>
|
||||
|
||||
<important>
|
||||
<para>At this point, you should install and/or configure your
|
||||
bootloader to boot the LFS system with the kernel just installed.
|
||||
The firmware interface of MIPS systems is not standardized so the
|
||||
detailed process will be board-specific. You can reuse the bootloader
|
||||
from your host distro if possible.</para>
|
||||
</important>
|
||||
|
||||
<para>Install the documentation for the Linux kernel:</para>
|
||||
|
||||
<screen><userinput remap="install">cp -r Documentation -T /usr/share/doc/linux-&linux-version;</userinput></screen>
|
||||
|
Loading…
Reference in New Issue
Block a user