source: chapter08/grub.xml@ fbe0187

10.0 10.0-rc1 10.1 10.1-rc1 11.0 11.0-rc1 11.0-rc2 11.0-rc3 11.1 11.1-rc1 11.2 11.2-rc1 11.3 11.3-rc1 12.0 12.0-rc1 12.1 12.1-rc1 6.5 6.6 6.7 6.8 7.0 7.1 7.2 7.3 7.4 7.5 7.5-systemd 7.6 7.6-systemd 7.7 7.7-systemd 7.8 7.8-systemd 7.9 7.9-systemd 8.0 8.1 8.2 8.3 8.4 9.0 9.1 arm bdubbs/gcc13 ml-11.0 multilib renodr/libudev-from-systemd s6-init trunk xry111/arm64 xry111/arm64-12.0 xry111/clfs-ng xry111/lfs-next xry111/loongarch xry111/loongarch-12.0 xry111/loongarch-12.1 xry111/mips64el xry111/pip3 xry111/rust-wip-20221008 xry111/update-glibc
Last change on this file since fbe0187 was fbe0187, checked in by Bruce Dubbs <bdubbs@…>, 15 years ago

Update grub make instruction to ensure all checks pass.

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@8938 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689

  • Property mode set to 100644
File size: 11.1 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../general.ent">
5 %general-entities;
6]>
7
8<sect1 id="ch-bootable-grub" role="wrap">
9 <?dbhtml filename="grub.html"?>
10
11 <sect1info condition="script">
12 <productname>grub</productname>
13 <productnumber>&grub-version;</productnumber>
14 <address>&grub-url;</address>
15 </sect1info>
16
17 <title>GRUB-&grub-version;</title>
18
19 <indexterm zone="ch-bootable-grub">
20 <primary sortas="a-Grub">GRUB</primary>
21 </indexterm>
22
23 <sect2 role="package">
24 <title/>
25
26 <para>The GRUB package contains the GRand Unified Bootloader.</para>
27
28 <segmentedlist>
29 <segtitle>&buildtime;</segtitle>
30 <segtitle>&diskspace;</segtitle>
31
32 <seglistitem>
33 <seg>&grub-ch6-sbu;</seg>
34 <seg>&grub-ch6-du;</seg>
35 </seglistitem>
36 </segmentedlist>
37
38 </sect2>
39
40 <sect2 role="installation">
41 <title>Installation of GRUB</title>
42
43 <para>Your shiny new LFS system is almost complete. One of the last
44 things to do is to ensure that the system can be properly booted.</para>
45
46 <caution>
47 <para>This package will only build for x86 and x86_64 architectures
48 containing 32-bit libs. If you chose to build on x86_64 without 32-bit
49 libraries (no multilib), then you must use LILO instead. Information on
50 <quote>boot loading</quote> for other architectures should be available in
51 the usual resource-specific locations for those architectures.</para>
52 </caution>
53
54 <para>This package is known to have issues when its default
55 optimization flags (including the <parameter>-march</parameter> and
56 <parameter>-mcpu</parameter> options) are changed. If any environment
57 variables that override default optimizations have been defined, such
58 as <envar>CFLAGS</envar> and <envar>CXXFLAGS</envar>,
59 unset them when building GRUB.</para>
60
61 <para>Start by applying the following patch to allow for better drive
62 detection, fix some GCC 4.x issues, and provide better SATA support
63 for some disk controllers:</para>
64
65<screen><userinput remap="pre">patch -Np1 -i ../&grub-geometry-patch;</userinput></screen>
66
67 <para>By default, GRUB doesn't support ext2 filesystems with 256-byte inodes.
68 Fix this by applying the following patch:</para>
69
70<screen><userinput remap="pre">patch -Np1 -i ../&grub-inode-patch;</userinput></screen>
71
72 <para>Prepare GRUB for compilation:</para>
73
74<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
75
76 <para>Compile the package, but use custom optimization flags to
77 prevent an error flagged in the test routines:</para>
78
79<screen><userinput remap="make">make CFLAGS="-march=i486 -mtune=native -Os"</userinput></screen>
80
81 <para>To test the results, issue:</para>
82
83<screen><userinput remap="test">make check</userinput></screen>
84
85 <para>Install the package:</para>
86
87<screen><userinput remap="install">make install
88mkdir -v /boot/grub
89cp -v /usr/lib/grub/i386-pc/stage{1,2} /boot/grub</userinput></screen>
90
91 <para>Replace <filename class="directory">i386-pc</filename> with whatever
92 directory is appropriate for the hardware in use.</para>
93
94 <para>The <filename class="directory">i386-pc</filename> directory
95 contains a number of <filename>*stage1_5</filename> files, different
96 ones for different file systems. Review the files available and copy
97 the appropriate ones to the <filename
98 class="directory">/boot/grub</filename> directory. Most users will
99 copy the <filename>e2fs_stage1_5</filename> and/or
100 <filename>reiserfs_stage1_5</filename> files.</para>
101
102 </sect2>
103
104 <sect2 role="configuration">
105 <title>Configuring GRUB</title>
106
107
108 <para>Boot loading can be a complex area, so a few cautionary
109 words are in order. Be familiar with the current boot loader and any other
110 operating systems present on the hard drive(s) that need to be
111 bootable. Make sure that an emergency boot disk is ready to
112 <quote>rescue</quote> the computer if the computer becomes
113 unusable (un-bootable).</para>
114
115 <para>The procedure involves writing some special GRUB files to specific
116 locations on the hard drive. We highly recommend creating a GRUB boot floppy
117 diskette as a backup. Insert a blank floppy diskette and run the following
118 commands:</para>
119
120<screen><userinput>dd if=/boot/grub/stage1 of=/dev/fd0 bs=512 count=1
121dd if=/boot/grub/stage2 of=/dev/fd0 bs=512 seek=1</userinput></screen>
122
123 <para>Remove the diskette and store it somewhere safe. Now, run the
124 <command>grub</command> shell:</para>
125
126<screen><userinput>grub</userinput></screen>
127
128 <para>GRUB uses its own naming structure for drives and partitions in
129 the form of <emphasis>(hdn,m)</emphasis>, where <emphasis>n</emphasis>
130 is the hard drive number and <emphasis>m</emphasis> is the partition
131 number, both starting from zero. For example, partition <filename
132 class="partition">hda1</filename> is <emphasis>(hd0,0)</emphasis> to
133 GRUB and <filename class="partition">hdb3</filename> is
134 <emphasis>(hd1,2)</emphasis>. In contrast to Linux, GRUB does not
135 consider CD-ROM drives to be hard drives. For example, if using a CD
136 on <filename class="partition">hdb</filename> and a second hard drive
137 on <filename class="partition">hdc</filename>, that second hard drive
138 would still be <emphasis>(hd1)</emphasis>.</para>
139
140 <para>Using the above information, determine the appropriate
141 designator for the root partition (or boot partition, if a separate
142 one is used). For the following example, it is assumed that the root
143 (or separate boot) partition is <filename
144 class="partition">hda4</filename>.</para>
145
146 <para>Tell GRUB where to search for its
147 <filename>stage{1,2}</filename> files. The Tab key can be used
148 everywhere to make GRUB show the alternatives:</para>
149
150<screen><userinput>root (hd0,3)</userinput></screen>
151
152 <warning>
153 <para>The following command will overwrite the current boot loader. Do not
154 run the command if this is not desired, for example, if using a third party
155 boot manager to manage the Master Boot Record (MBR). In this scenario, it
156 would make more sense to install GRUB into the <quote>boot sector</quote>
157 of the LFS partition. In this case, this next command would become
158 <userinput>setup (hd0,3)</userinput>.</para>
159 </warning>
160
161 <para>Tell GRUB to install itself into the MBR of
162 <filename class="partition">hda</filename>:</para>
163
164<screen><userinput>setup (hd0)</userinput></screen>
165
166 <para>If all went well, GRUB will have reported finding its files in
167 <filename class="directory">/boot/grub</filename>. That's all there is
168 to it. Quit the <command>grub</command> shell:</para>
169
170<screen><userinput>quit</userinput></screen>
171
172 <para>Create a <quote>menu list</quote> file defining GRUB's boot menu:</para>
173
174<screen><userinput>cat &gt; /boot/grub/menu.lst &lt;&lt; "EOF"
175<literal># Begin /boot/grub/menu.lst
176
177# By default boot the first menu entry.
178default 0
179
180# Allow 30 seconds before booting the default.
181timeout 30
182
183# Use prettier colors.
184color green/black light-green/black
185
186# The first entry is for LFS.
187title LFS &version;
188root (hd0,3)
189kernel /boot/lfskernel-&linux-version; root=/dev/hda4</literal>
190EOF</userinput></screen>
191
192 <para>Add an entry for the host distribution if desired. It might look
193 like this:</para>
194
195<screen><userinput>cat &gt;&gt; /boot/grub/menu.lst &lt;&lt; "EOF"
196<literal>title Red Hat
197root (hd0,2)
198kernel /boot/kernel-2.6.5 root=/dev/hda3
199initrd /boot/initrd-2.6.5</literal>
200EOF</userinput></screen>
201
202 <para>If dual-booting Windows, the following entry will allow
203 booting it:</para>
204
205<screen><userinput>cat &gt;&gt; /boot/grub/menu.lst &lt;&lt; "EOF"
206<literal>title Windows
207rootnoverify (hd0,0)
208chainloader +1</literal>
209EOF</userinput></screen>
210
211 <para>If <command>info grub</command> does not provide all necessary material,
212 additional information regarding GRUB is located on its website at:
213 <ulink url="http://www.gnu.org/software/grub/"/>.</para>
214
215 <para>The FHS stipulates that GRUB's <filename>menu.lst</filename> file should
216 be symlinked to <filename class="symlink">/etc/grub/menu.lst</filename>. To
217 satisfy this requirement, issue the following command:</para>
218
219<screen><userinput>mkdir -v /etc/grub
220ln -sv /boot/grub/menu.lst /etc/grub</userinput></screen>
221
222 </sect2>
223
224 <sect2 id="contents-gRUB" role="content">
225 <title>Contents of GRUB</title>
226
227 <segmentedlist>
228 <segtitle>Installed programs</segtitle>
229
230 <seglistitem>
231 <seg>grub, grub-install, grub-md5-crypt, grub-set-default,
232 grub-terminfo, and mbchk</seg>
233 </seglistitem>
234 </segmentedlist>
235
236 <variablelist>
237 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
238 <?dbfo list-presentation="list"?>
239 <?dbhtml list-presentation="table"?>
240
241 <varlistentry id="grub">
242 <term><command>grub</command></term>
243 <listitem>
244 <para>The Grand Unified Bootloader's command shell</para>
245 <indexterm zone="ch-bootable-grub grub">
246 <primary sortas="b-grub">grub</primary>
247 </indexterm>
248 </listitem>
249 </varlistentry>
250
251 <varlistentry id="grub-install">
252 <term><command>grub-install</command></term>
253 <listitem>
254 <para>Installs GRUB on the given device</para>
255 <indexterm zone="ch-bootable-grub grub-install">
256 <primary sortas="b-grub-install">grub-install</primary>
257 </indexterm>
258 </listitem>
259 </varlistentry>
260
261 <varlistentry id="grub-md5-crypt">
262 <term><command>grub-md5-crypt</command></term>
263 <listitem>
264 <para>Encrypts a password in MD5 format</para>
265 <indexterm zone="ch-bootable-grub grub-md5-crypt">
266 <primary sortas="b-grub-md5-crypt">grub-md5-crypt</primary>
267 </indexterm>
268 </listitem>
269 </varlistentry>
270
271 <varlistentry id="grub-set-default">
272 <term><command>grub-set-default</command></term>
273 <listitem>
274 <para>Sets the default boot entry for GRUB</para>
275 <indexterm zone="ch-bootable-grub grub-set-default">
276 <primary sortas="b-grub-set-default">grub-set-default</primary>
277 </indexterm>
278 </listitem>
279 </varlistentry>
280
281 <varlistentry id="grub-terminfo">
282 <term><command>grub-terminfo</command></term>
283 <listitem>
284 <para>Generates a terminfo command from a terminfo name; it can be
285 employed if an unknown terminal is being used</para>
286 <indexterm zone="ch-bootable-grub grub-terminfo">
287 <primary sortas="b-grub-terminfo">grub-terminfo</primary>
288 </indexterm>
289 </listitem>
290 </varlistentry>
291
292 <varlistentry id="mbchk">
293 <term><command>mbchk</command></term>
294 <listitem>
295 <para>Checks the format of a multi-boot kernel</para>
296 <indexterm zone="ch-bootable-grub mbchk">
297 <primary sortas="b-mbchk">mbchk</primary>
298 </indexterm>
299 </listitem>
300 </varlistentry>
301
302 </variablelist>
303
304 </sect2>
305
306</sect1>
Note: See TracBrowser for help on using the repository browser.