mirror of
https://github.com/Zeckmathederg/glfs.git
synced 2025-02-07 09:37:17 +08:00
aebcd92ce0
Add "| cut -f 1" to efibootmgr command for checking the configuration, so long boring paths will not show up. Update unifont version, and kernel version (in example) by the way.
270 lines
8.3 KiB
XML
270 lines
8.3 KiB
XML
<?xml version="1.0" encoding="ISO-8859-1"?>
|
|
<!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;
|
|
|
|
<!ENTITY grub-efi-download-http "https://ftp.gnu.org/gnu/grub/grub-&grub-version;.tar.xz">
|
|
<!ENTITY grub-efi-download-ftp " ">
|
|
<!ENTITY grub-efi-md5sum "cf0fd928b1e5479c8108ee52cb114363">
|
|
<!ENTITY grub-efi-size "6.3 MB">
|
|
<!ENTITY grub-efi-buildsize "137 MB">
|
|
<!ENTITY grub-efi-time "1.0 SBU (on 64-bit LFS)">
|
|
|
|
<!ENTITY unifont-download-http "https://unifoundry.com/pub/unifont/unifont-&unifont-version;/font-builds/unifont-&unifont-version;.pcf.gz">
|
|
<!ENTITY unifont-md5sum "428aa81e2433db172bbf7f4136cee6c5">
|
|
<!ENTITY unifont-size "1.3 MB">
|
|
|
|
<!ENTITY gcc-download-http "&gnu-http;/gcc/gcc-&gcc-version;/gcc-&gcc-version;.tar.xz">
|
|
<!ENTITY gcc-md5sum "ed45b55ee859ada4b25a1e76e0c4d966">
|
|
<!ENTITY gcc-size "79 MB">
|
|
]>
|
|
|
|
<sect1 id="grub-efi" xreflabel="GRUB-&grub-version; for EFI">
|
|
<?dbhtml filename="grub-efi.html"?>
|
|
|
|
<sect1info>
|
|
<date>$Date$</date>
|
|
</sect1info>
|
|
|
|
<title>GRUB-&grub-version; for EFI</title>
|
|
|
|
<indexterm zone="grub-efi">
|
|
<primary sortas="a-grub-efi">grub-efi</primary>
|
|
</indexterm>
|
|
|
|
<sect2 role="package">
|
|
<title>Introduction to GRUB</title>
|
|
|
|
<para>
|
|
The <application>GRUB</application> package provides GRand Unified
|
|
Bootloader. In this page it will be built with UEFI support, which
|
|
is not enabled for GRUB built in LFS.
|
|
</para>
|
|
|
|
&lfs111_checked;
|
|
|
|
<bridgehead renderas="sect3">Package Information</bridgehead>
|
|
<itemizedlist spacing="compact">
|
|
<listitem>
|
|
<para>
|
|
Download (HTTP): <ulink url="&grub-efi-download-http;"/>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Download (FTP): <ulink url="&grub-efi-download-ftp;"/>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Download MD5 sum: &grub-efi-md5sum;
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Download size: &grub-efi-size;
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Estimated disk space required: &grub-efi-buildsize;
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Estimated build time: &grub-efi-time;
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<bridgehead renderas="sect3">Additional Downloads</bridgehead>
|
|
|
|
<itemizedlist spacing="compact">
|
|
<title>Unicode font data used to display GRUB menu</title>
|
|
<listitem>
|
|
<para>
|
|
Download (HTTP): <ulink url="&unifont-download-http;"/>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Download MD5 sum: &unifont-md5sum;
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Download size: &unifont-size;
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<itemizedlist spacing="compact">
|
|
<title>GCC (only needed if building on 32-bit LFS)</title>
|
|
<listitem>
|
|
<para>
|
|
Download (HTTP): <ulink url="&gcc-download-http;"/>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Download MD5 sum: &gcc-md5sum;
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Download size: &gcc-size;
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<bridgehead renderas="sect3">GRUB Dependencies</bridgehead>
|
|
|
|
<bridgehead renderas="sect4">Required (runtime)</bridgehead>
|
|
<para role="runtime">
|
|
<xref linkend="efibootmgr"/>
|
|
</para>
|
|
|
|
<bridgehead renderas="sect4">Recommended</bridgehead>
|
|
<para role="recommended">
|
|
<xref linkend="freetype2"/>
|
|
</para>
|
|
|
|
<bridgehead renderas="sect4">Optional</bridgehead>
|
|
<para role="optional">
|
|
<xref linkend="lvm2"/>
|
|
</para>
|
|
|
|
<para condition="html" role="usernotes">User Notes:
|
|
<ulink url="&blfs-wiki;/grub-efi"/></para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 role="installation">
|
|
<title>Installation of GRUB</title>
|
|
|
|
<para>
|
|
First, install font data as the
|
|
<systemitem class="username">root</systemitem> user:
|
|
</para>
|
|
|
|
<screen role="root"><userinput>mkdir -pv /usr/share/fonts/unifont &&
|
|
gunzip -c ../unifont-&unifont-version;.pcf.gz > /usr/share/fonts/unifont/unifont.pcf</userinput></screen>
|
|
|
|
<warning>
|
|
<para>Unset any environment variables which may affect the build:</para>
|
|
|
|
<screen><userinput>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, with low-level
|
|
operations in the source code which is likely to be broken by some
|
|
aggressive optimizations.</para>
|
|
</warning>
|
|
|
|
<para>If you are running a 32-bit LFS, prepare a 64-bit compiler:</para>
|
|
|
|
<!-- 'literal' is used deliberately to show this is only for 32-bit LFS -->
|
|
<screen><userinput>case $(uname -m) in i?86 )
|
|
<literal>tar xf ../gcc-&gcc-version;.tar.xz
|
|
mkdir gcc-&gcc-version;/build
|
|
pushd gcc-&gcc-version;/build
|
|
../configure --prefix=$PWD/../../x86_64-gcc \
|
|
--target=x86_64-linux-gnu \
|
|
--with-system-zlib \
|
|
--enable-languages=c,c++ \
|
|
--with-ld=/usr/bin/ld
|
|
make all-gcc
|
|
make install-gcc
|
|
popd
|
|
export TARGET_CC=$PWD/x86_64-gcc/bin/x86_64-linux-gnu-gcc</literal>
|
|
esac</userinput></screen>
|
|
|
|
<para>
|
|
Build <application>GRUB</application> with the following commands:
|
|
</para>
|
|
|
|
<screen><userinput>./configure --prefix=/usr \
|
|
--sysconfdir=/etc \
|
|
--disable-efiemu \
|
|
--enable-grub-mkfont \
|
|
--with-platform=efi \
|
|
--target=x86_64 \
|
|
--disable-werror &&
|
|
unset TARGET_CC &&
|
|
make</userinput></screen>
|
|
|
|
<para>
|
|
This package does not have a test suite providing meaningful results.
|
|
</para>
|
|
|
|
<para>
|
|
Now, as the <systemitem class="username">root</systemitem> user:
|
|
</para>
|
|
|
|
<screen role="root"><userinput>make install &&
|
|
mv -v /etc/bash_completion.d/grub /usr/share/bash-completion/completions</userinput></screen>
|
|
|
|
</sect2>
|
|
|
|
<sect2 role="commands">
|
|
<title>Command Explanations</title>
|
|
|
|
<para>
|
|
<parameter>--enable-grub-mkfont</parameter>: Build the tool named
|
|
<command>grub-mkfont</command> to generate the font file for the boot
|
|
loader from the font data we've installed.
|
|
</para>
|
|
|
|
<warning>
|
|
<para>If the recommended dependency <xref linkend="freetype2"/> is not
|
|
installed, it is possible to omit this option and build GRUB. However,
|
|
if <command>grub-mkfont</command> is not built, or the unicode font
|
|
data is not available at the time GRUB is built, GRUB won't install
|
|
any font for the boot loader. The GRUB boot menu will be displayed
|
|
using a coarse font and the early stage of kernel initialization will be
|
|
in <quote>blind mode</quote> — you can't see any kernel messages before
|
|
the graphics card driver is initialized. It will be very difficult to
|
|
diagnose some boot issues, especially if the graphics driver is
|
|
built as module.</para>
|
|
</warning>
|
|
|
|
<para>
|
|
<parameter>--with-platform=efi</parameter>: Ensures building GRUB with
|
|
EFI enabled.
|
|
</para>
|
|
|
|
<para>
|
|
<parameter>--target=x86_64</parameter>: Ensures building GRUB for
|
|
x86_64 even if building on a 32-bit LFS system. Most EFI firmwares
|
|
on x86_64 does not support 32-bit bootloaders.
|
|
</para>
|
|
|
|
<para>
|
|
<option>--target=i386</option>: A few 32-bit x86 platforms have EFI
|
|
support. And, some x86_64 platforms have a 32-bit EFI implementation,
|
|
but they are very old and rare. Use this instead of
|
|
<parameter>--target=x86_64</parameter> if you are
|
|
<emphasis role='bold'>absolutely sure</emphasis> that LFS is running
|
|
on such a system.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Configuring GRUB</title>
|
|
|
|
<para>
|
|
Using GRUB to make the LFS system bootable on UEFI platform will be
|
|
discussed in <xref linkend="grub-setup"/>.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 role="content">
|
|
<title>Contents</title>
|
|
|
|
<para>See the page for GRUB in LFS book.</para>
|
|
</sect2>
|
|
|
|
</sect1>
|