- Timestamp:
- 06/20/2011 10:58:34 PM (13 years ago)
- Branches:
- 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, 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
- Children:
- e436213
- Parents:
- 0d0a212
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
chapter08/grub.xml
r0d0a212 r483838e 20 20 <title>Introduction</title> 21 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 22 <warning><para>Configuring GRUB incorrectly can render your system 23 inoperable without an alternate boot device such as a CD-ROM. This 24 section is not required to boot your LFS system. You may just 25 want to modify your current boot loader, e.g. Grub-Legacy, GRUB2, or 26 LILO.</para></warning> 27 28 29 <para> Ensure that an emergency boot disk is ready to 26 30 <quote>rescue</quote> the computer if the computer becomes 27 unusable (un-bootable).</para> 31 unusable (un-bootable). If you do not already have a boot device, 32 you can create one. In order for the procedure below to work, 33 you need to jump ahead to BLFS and install <ulink 34 url="http://www.linuxfromscratch.org/blfs/view/svn/multimedia/xorriso.html"> 35 xorriso</ulink>.</para> 28 36 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> 37 <screen role="nodump"><userinput>cd /tmp && 38 grub-mkrescue --output=grub-img.iso && 39 xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso</userinput></screen> 33 40 34 <screen role="nodump"><userinput>cd /tmp 35 grub-mkrescue --output=grub-img.iso 36 dd if=grub-img.iso of=/dev/fd0 bs=1440 count=1</userinput></screen> 41 </sect2> 37 42 38 <para>Alternatively, a boot CD can be created by using your host system's 39 CD burning tools to burn the <filename>grub-img.iso</filename> on to a 40 blank CD.</para> 43 <sect2> 44 <title>GRUB Naming Conventions</title> 41 45 42 46 <para>GRUB uses its own naming structure for drives and partitions in … … 60 64 cat device.map</userinput></screen> 61 65 66 </sect2> 67 68 <sect2> 69 <title>Setting Up the Configuration</title> 70 71 <para>GRUB works by writing data to the first physical track of the 72 hard disk. This area is not part of any file system. The programs 73 there access GRUB modules in the boot partition. The default location 74 is /boot/grub/.</para> 75 62 76 <para>The location of the boot partition is a choice of the user that 63 77 affects the configuration. One recommendation is to have a separate small … … 74 88 <para>Using the current lfs partition will also work, but configuration 75 89 for multiple systems is more difficult.</para> 76 </sect2>77 78 <sect2>79 <title>Setting Up the Configuration</title>80 90 81 91 <para>Using the above information, determine the appropriate … … 86 96 87 97 <para>Install the GRUB files into <filename 88 class="directory">/boot/grub</filename>:</para> 89 90 <screen role="nodump"><userinput>grub-install --grub-setup=/bin/true /dev/sda</userinput></screen> 91 92 <para>We use --grub-setup=/bin/true for now to prevent updating the 93 Master Boot Record (MBR). In this way, we can test our installation 94 before committing to a change that is hard to revert.</para> 95 96 <para>Generate <filename>/boot/grub/grub.cfg</filename>:</para> 97 98 <screen role="nodump"><userinput>grub-mkconfig -o /boot/grub/grub.cfg</userinput></screen> 99 100 <para>Here <command>grub-mkconfig</command> uses the files in <filename 101 class="directory">/etc/grub.d/</filename> to determine the contents 102 of this file. The configuration file will look something like:</para> 103 <screen><computeroutput># 104 # DO NOT EDIT THIS FILE 105 # 106 # It is automatically generated by /usr/sbin/grub-mkconfig using templates 107 # from /etc/grub.d and settings from /etc/default/grub 108 # 109 110 ### BEGIN /etc/grub.d/00_header ### 111 set default=0 112 set timeout=5 113 ### END /etc/grub.d/00_header ### 114 115 ### BEGIN /etc/grub.d/10_linux ### 116 menuentry "GNU/Linux, Linux &linux-version;-lfs-&version;" { 117 insmod ext2 118 set root=(hd0,2) 119 search --no-floppy --fs-uuid --set 915852a7-859e-45a6-9ff0-d3ebfdb5cea2 120 linux /boot/vmlinux-&linux-version;-lfs-&version; root=/dev/sda2 ro 121 } 122 menuentry "GNU/Linux, Linux &linux-version;-lfs-&version;" (recovery mode)" { 123 insmod ext2 124 set root=(hd0,2) 125 search --no-floppy --fs-uuid --set 915852a7-859e-45a6-9ff0-d3ebfdb5cea2 126 linux /boot/vmlinux-&linux-version;-lfs-&version; root=/dev/sda2 ro single 127 } 128 menuentry "GNU/Linux, Linux 2.6.28-11-server" { 129 insmod ext2 130 set root=(hd0,2) 131 search --no-floppy --fs-uuid --set 6b4c0339-5501-4a85-8351-e398e5252be8 132 linux /boot/vmlinuz-2.6.28-11-server root=UUID=6b4c0339-5501-4a85-8351-e398e5252be8 ro 133 initrd /boot/initrd.img-2.6.28-11-server 134 } 135 menuentry "GNU/Linux, Linux 2.6.28-11-server (recovery mode)" { 136 insmod ext2 137 set root=(hd0,2) 138 search --no-floppy --fs-uuid --set 6b4c0339-5501-4a85-8351-e398e5252be8 139 linux /boot/vmlinuz-2.6.28-11-server root=UUID=6b4c0339-5501-4a85-8351-e398e5252be8 ro single 140 initrd /boot/initrd.img-2.6.28-11-server 141 } 142 ### END /etc/grub.d/10_linux ### 143 144 ### BEGIN /etc/grub.d/30_os-prober ### 145 ### END /etc/grub.d/30_os-prober ### 146 147 ### BEGIN /etc/grub.d/40_custom ### 148 # This file provides an easy way to add custom menu entries. Simply type the 149 # menu entries you want to add after this comment. Be careful not to change 150 # the 'exec tail' line above. 151 ### END /etc/grub.d/40_custom ### 152 </computeroutput></screen> 153 154 <note> 155 <itemizedlist> 156 <listitem><para>Even though there is a warning not to edit the file, you 157 can do so as long as you do not re-run 158 <command>grub-mkconfig</command>.</para></listitem> 159 160 <listitem><para>The <emphasis>search</emphasis> lines are generally not 161 useful for LFS systems as that command only sets an internal GRUB 162 variable used to find the kernel image. The <emphasis>set root</emphasis> 163 command provides the same capability without the overhead of 164 searching.</para></listitem> 165 166 <listitem><para>The <emphasis>set root</emphasis> and 167 <emphasis>insmod ext2</emphasis> commands can be moved out of the 168 <emphasis>menuentry</emphasis> sections to apply to all sections of the file. 169 This leads to a simple section like:</para></listitem> 170 171 </itemizedlist> 172 <screen><computeroutput>menuentry "Linux &linux-version;-lfs-&version;" { 173 linux /boot/vmlinux-&linux-version;-lfs-&version; root=/dev/sda2 ro 174 } 175 </computeroutput></screen> 176 177 <itemizedlist> 178 179 <listitem><para>Passing a UUID to the kernel requires an initial ram disk 180 (initrd) not built by LFS.</para></listitem> 181 182 <listitem><para>If the <filename>/boot</filename> partition is installed 183 on a separate partition, the linux and initrd lines should not have the 184 string <emphasis>/boot</emphasis> prefixed to the file 185 names.</para></listitem> 186 187 <listitem><para>In this example the kernel files for a Ubuntu 188 installation are also found in <filename 189 class="directory">/boot</filename>.</para></listitem> 190 191 </itemizedlist> 192 </note> 193 194 </sect2> 195 196 <sect2> 197 <title>Testing the Configuration</title> 198 199 <para>The core image of GRUB is also a Multiboot kernel, so if you already 200 have <emphasis>GRUB Legacy</emphasis> loaded you can load 201 GRUB-&grub-version; through your old boot loader. To accomplish this, you 202 will need to exit the <command>chroot</command> environment now and 203 re-enter it in the next section to finish the few remaining portions of 204 the book.</para> 205 206 <screen role="nodump"><userinput>/sbin/reboot 207 ... 208 grub> root (hd0,1) 209 grub> kernel /boot/grub/core.img 210 grub> boot</userinput></screen> 211 212 <para>Note that the GRUB commands above are assumed to be GRUB Legacy. 213 At this point the GRUB prompt will appear (very similar to GRUB Legacy) and 214 you can explore the interface or boot to one of the systems in the grub.cfg 215 file.</para> 216 217 </sect2> 218 219 <sect2> 220 <title>Updating the Master Boot Record</title> 221 222 <para>If you tested the GRUB configuration as specified above, re-enter 223 the <command>chroot</command> environment.</para> 98 class="directory">/boot/grub</filename> and set up the boot track:</para> 224 99 225 100 <warning> … … 229 104 </warning> 230 105 231 <para>Update the MBR with:</para>106 <screen role="nodump"><userinput>grub-install /dev/sda</userinput></screen> 232 107 233 <screen role="nodump"><userinput>grub-setup '<DEVICE>'</userinput></screen> 108 <note><para><application>grub-install</application> is a script and calls another 109 program, grub-probe, that may fail with a message "cannot stat `/dev/root'". 110 If so, create a temporary symbolic link from your root partition to /dev/root:</para> 234 111 235 <para>Change the DEVICE above to your boot disk, normally '(hd0)' or /dev/sda. 236 If using (hd0) be sure to escape the parentheses with backslashes or single 237 quotes to prevent the shell from interpreting them as a sub-shell.</para> 112 <screen role="nodump"><userinput>ln -sv /dev/sda2 /dev/root</userinput></screen> 238 113 239 <para>This program uses the following defaults and are correct if you did not 240 deviate from the instructions above:</para> 114 <para>The symbolic link will only be present until the system is rebooted. 115 The link is only needed for the installation procedure. 116 </para></note> 241 117 242 <itemizedlist> 243 <listitem><para>boot image - boot.img </para></listitem> 244 <listitem><para>core image - core.img </para></listitem> 245 <listitem><para>directory - /boot/grub</para></listitem> 246 <listitem><para>device map - device.map</para></listitem> 247 <listitem><para>default root setting - guessed</para></listitem> 248 </itemizedlist> 118 </sect2> 249 119 250 <note><para>The root setting is the default value if a 'set root' 251 instruction is not found in grub.cfg. This is the partition that is 252 searched for the kernel and other supporting files. It is different from 253 the 'root=' parameter on the 'linux' line in the configuration line. The 254 latter is the partition the kernel mounts as '/'. In the example grub.cfg 255 above, both values point to /dev/sda2, but if there is a separate boot 256 partition, they will be different.</para></note> 120 <sect2> 121 <title>Creating the Configuration File</title> 122 123 <para>Generate <filename>/boot/grub/grub.cfg</filename>:</para> 124 125 <screen><userinput>cat > /boot/grub/grub.cfg << "EOF" 126 <literal># Begin /boot/grub/grub.cfg 127 set default=0 128 set timeout=5 129 130 insmod ext2 131 set root=(hd0,2) 132 133 menuentry "GNU/Linux, Linux &linux-version;-lfs-&version;" { 134 linux /boot/vmlinux-&linux-version;-lfs-&version; root=/dev/sda2 ro 135 }</literal> 136 EOF</userinput></screen> 137 138 <para>GRUB is an extremely powerful program and it provides a tremendous 139 number of options for booting from a wide variety of devices, operating 140 systems, and partition types. There are also many options for customization 141 such as graphical splash screens, playing sounds, mouse input, etc. The 142 details of these options are beyond the scope of this introduction.</para> 143 144 <note><para>There is a command, <application>grub-mkconfig</application> that 145 can write a configuration file automatically. It uses a set of scripts in 146 /etc/grub.d/ and will destroy any customizations that you make. These scripts 147 are designed primarily for non-source distributions and are not recommended for 148 LFS. If you install a commercial Linux distribution, there is a good chance 149 that this program will be run. Be sure to back up your grub.cfg file.</para></note> 257 150 258 151 </sect2>
Note:
See TracChangeset
for help on using the changeset viewer.