source: chapter08/grub.xml@ 6541b70

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.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 6541b70 was 6541b70, checked in by Bruce Dubbs <bdubbs@…>, 14 years ago

Update to util-linix-ng-2.18

Exapand and reformat notes concerning grub.cfg

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

  • Property mode set to 100644
File size: 10.6 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>Using GRUB to Set Up the Boot Process</title>
18
19 <sect2>
20 <title>Introduction</title>
21
22 <para>Boot loading can be a complex area, so a few cautionary
23 words are in order. Be familiar with the current boot loader and any other
24 operating systems present on the hard drive(s) that need to be
25 bootable. Make sure that an emergency boot disk is ready to
26 <quote>rescue</quote> the computer if the computer becomes
27 unusable (un-bootable).</para>
28
29 <para>The procedure involves writing some special GRUB files to specific
30 locations on the hard drive. We highly recommend creating a GRUB boot
31 floppy diskette as a backup. Insert a blank floppy diskette and run the
32 following commands:</para>
33
34<screen role="nodump"><userinput>cd /tmp
35grub-mkrescue --image-type=floppy floppy.img
36dd if=floppy.img of=/dev/fd0 bs=1440 count=1</userinput></screen>
37
38 <para>GRUB uses its own naming structure for drives and partitions in
39 the form of <emphasis>(hdn,m)</emphasis>, where <emphasis>n</emphasis>
40 is the hard drive number and <emphasis>m</emphasis> is the partition
41 number. The hard drive number starts from zero, but the partition number
42 starts from one for normal partitions and five for extended partitions.
43 Note that this is different from earlier versions where
44 both numbers started from zero. For example, partition <filename
45 class="partition">sda1</filename> is <emphasis>(hd0,1)</emphasis> to
46 GRUB and <filename class="partition">sdb3</filename> is
47 <emphasis>(hd1,3)</emphasis>. In contrast to Linux, GRUB does not
48 consider CD-ROM drives to be hard drives. For example, if using a CD
49 on <filename class="partition">hdb</filename> and a second hard drive
50 on <filename class="partition">hdc</filename>, that second hard drive
51 would still be <emphasis>(hd1)</emphasis>.</para>
52
53 <para>You can determine what GRUB thinks your disk devices are by running:</para>
54
55<screen role="nodump"><userinput>grub-mkdevicemap --device-map=device.map
56cat device.map</userinput></screen>
57
58 <para>The location of the boot partition is a choice of the user that
59 affects the configuration. One recommendation is to have a separate small
60 (suggested size is 100 MB) partition just for boot information. That way
61 each build, whether LFS or some commercial distro, can access the same boot
62 files and access can be made from any booted system. If you choose to do
63 this, you will need to mount the separate partition, move all files in the
64 current <filename class="directory">/boot</filename> directory (e.g. the
65 linux kernel you just built in the previous section) to the new partition.
66 You will then need to unmount the partition and remount it as <filename
67 class="directory">/boot</filename>. If you do this, be sure to update
68 <filename>/etc/fstab</filename>.</para>
69
70 <para>Using the current lfs partition will also work, but configuration
71 for multiple systems is more difficult.</para>
72 </sect2>
73
74 <sect2>
75 <title>Setting Up the Configuration</title>
76
77 <para>Using the above information, determine the appropriate
78 designator for the root partition (or boot partition, if a separate
79 one is used). For the following example, it is assumed that the root
80 (or separate boot) partition is <filename
81 class="partition">sda2</filename>.</para>
82
83 <para>Install the GRUB files into <filename
84 class="directory">/boot/grub</filename>:</para>
85
86<screen role="nodump"><userinput>grub-install --grub-setup=/bin/true /dev/sda</userinput></screen>
87
88 <para>We use --grub-setup=/bin/true for now to prevent updating the
89 Master Boot Record (MBR). In this way, we can test our installation
90 before committing to a change that is hard to revert.</para>
91
92 <para>Generate <filename>/boot/grub/grub.cfg</filename>:</para>
93
94<screen role="nodump"><userinput>grub-mkconfig -o /boot/grub/grub.cfg</userinput></screen>
95
96 <para>Here <command>grub-mkconfig</command> uses the files in <filename
97 class="directory">/etc/grub.d/</filename> to determine the contents
98 of this file. The configuration file will look something like:</para>
99<screen><computeroutput>#
100# DO NOT EDIT THIS FILE
101#
102# It is automatically generated by /usr/sbin/grub-mkconfig using templates
103# from /etc/grub.d and settings from /etc/default/grub
104#
105
106### BEGIN /etc/grub.d/00_header ###
107set default=0
108set timeout=5
109### END /etc/grub.d/00_header ###
110
111### BEGIN /etc/grub.d/10_linux ###
112menuentry "GNU/Linux, Linux 2.6.34-lfs" {
113 insmod ext2
114 set root=(hd0,2)
115 search --no-floppy --fs-uuid --set 915852a7-859e-45a6-9ff0-d3ebfdb5cea2
116 linux /boot/vmlinux-&linux-version;-lfs-&version; root=/dev/sda2 ro
117}
118menuentry "GNU/Linux, Linux 2.6.30.2-lfs65 (recovery mode)" {
119 insmod ext2
120 set root=(hd0,2)
121 search --no-floppy --fs-uuid --set 915852a7-859e-45a6-9ff0-d3ebfdb5cea2
122 linux /boot/vmlinux-&linux-version;-lfs-&version; root=/dev/sda2 ro single
123}
124menuentry "GNU/Linux, Linux 2.6.28-11-server" {
125 insmod ext2
126 set root=(hd0,2)
127 search --no-floppy --fs-uuid --set 6b4c0339-5501-4a85-8351-e398e5252be8
128 linux /boot/vmlinuz-2.6.28-11-server root=UUID=6b4c0339-5501-4a85-8351-e398e5252be8 ro
129 initrd /boot/initrd.img-2.6.28-11-server
130}
131menuentry "GNU/Linux, Linux 2.6.28-11-server (recovery mode)" {
132 insmod ext2
133 set root=(hd0,2)
134 search --no-floppy --fs-uuid --set 6b4c0339-5501-4a85-8351-e398e5252be8
135 linux /boot/vmlinuz-2.6.28-11-server root=UUID=6b4c0339-5501-4a85-8351-e398e5252be8 ro single
136 initrd /boot/initrd.img-2.6.28-11-server
137}
138### END /etc/grub.d/10_linux ###
139
140### BEGIN /etc/grub.d/30_os-prober ###
141### END /etc/grub.d/30_os-prober ###
142
143### BEGIN /etc/grub.d/40_custom ###
144# This file provides an easy way to add custom menu entries. Simply type the
145# menu entries you want to add after this comment. Be careful not to change
146# the 'exec tail' line above.
147### END /etc/grub.d/40_custom ###
148</computeroutput></screen>
149
150 <note>
151 <itemizedlist>
152 <listitem><para>Even though there is a warning not to edit the file, you
153 can do so as long as you do not re-run
154 <command>grub-mkconfig</command>.</para></listitem>
155
156 <listitem><para>The <emphasis>search</emphasis> lines are generally not
157 useful for LFS systems as that command only sets an internal GRUB
158 variable used to find the kernel image. The <emphasis>set root</emphasis>
159 command provides the same capability without the overhead of
160 searching.</para></listitem>
161
162 <listitem><para>The <emphasis>set root</emphasis> and
163 <emphasis>insmod ext2</emphasis> commands can be moved out of the
164 <emphasis>menuentry</emphasis> sections to apply to all sections of the file.
165 This leads to a simple section like:</para></listitem>
166
167 </itemizedlist>
168<screen><computeroutput>menuentry "Linux &linux-version;-lfs-&version;" {
169linux /boot/vmlinux-&linux-version;-lfs-&version; root=/dev/sda2 ro
170}
171</computeroutput></screen>
172
173 <itemizedlist>
174
175 <listitem><para>Passing a UUID to the kernel requires an initial ram disk
176 (initrd) not built by LFS.</para></listitem>
177
178 <listitem><para>If the <filename>/boot</filename> partition is installed
179 on a separate partition, the linux and initrd lines should not have the
180 string <emphasis>/boot</emphasis> prefixed to the file
181 names.</para></listitem>
182
183 <listitem><para>In this example the kernel files for a Ubuntu
184 installation are also found in <filename
185 class="directory">/boot</filename>.</para></listitem>
186
187 </itemizedlist>
188 </note>
189
190 </sect2>
191
192 <sect2>
193 <title>Testing the Configuration</title>
194
195 <para>The core image of GRUB is also a Multiboot kernel, so if you already
196 have GRUB Legacy loaded you can load GRUB-&grub-version; through your old
197 boot loader. To accomplish this, you will need to exit the
198 <command>chroot</command> environment and re-enter it to finish the
199 few remaining portions of the book.</para>
200
201<screen role="nodump"><userinput>/sbin/reboot
202...
203grub> root (hd0,1)
204grub> kernel /boot/grub/core.img
205grub> boot</userinput></screen>
206
207 <para>Note that the GRUB commands above are assumed to be GRUB Legacy.
208 At this point the GRUB prompt will appear (very similar to GRUB Legacy) and
209 you can explore the interface or boot to one of the systems in the grub.cfg
210 file.</para>
211
212 </sect2>
213
214 <sect2>
215 <title>Updating the Master Boot Record</title>
216
217 <para>If you tested the GRUB configuration as specified above, re-enter
218 the <command>chroot</command> environment.</para>
219
220 <warning>
221 <para>The following command will overwrite the current boot loader. Do not
222 run the command if this is not desired, for example, if using a third party
223 boot manager to manage the Master Boot Record (MBR).</para>
224 </warning>
225
226 <para>Update the MBR with:</para>
227
228<screen role="nodump"><userinput>grub-setup '&lt;DEVICE&gt;'</userinput></screen>
229
230 <para>Change the DEVICE above to your boot disk, normally '(hd0)' or /dev/sda.
231 If using (hd0) be sure to escape the parentheses with backslashes or single
232 quotes to prevent the shell from interpreting them as a sub-shell.</para>
233
234 <para>This program uses the following defaults and are correct if you did not
235 deviate from the instructions above:</para>
236
237 <itemizedlist>
238 <listitem><para>boot image - boot.img </para></listitem>
239 <listitem><para>core image - core.img </para></listitem>
240 <listitem><para>directory - /boot/grub</para></listitem>
241 <listitem><para>device map - device.map</para></listitem>
242 <listitem><para>default root setting - guessed</para></listitem>
243 </itemizedlist>
244
245 <note><para>The root setting is the default value if a 'set root'
246 instruction is not found in grub.cfg. This is the partition that is
247 searched for the kernel and other supporting files. It is different from
248 the 'root=' parameter on the 'linux' line in the configuration line. The
249 latter is the partition the kernel mounts as '/'. In the example grub.cfg
250 above, both values point to /dev/sda2, but if there is a separate boot
251 partition, they will be different.</para></note>
252
253 </sect2>
254
255</sect1>
Note: See TracBrowser for help on using the repository browser.