Changeset 483838e for chapter08


Ignore:
Timestamp:
06/20/2011 10:58:34 PM (13 years ago)
Author:
Bruce Dubbs <bdubbs@…>
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
Message:

Update to GRUB-1.99

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • chapter08/grub.xml

    r0d0a212 r483838e  
    2020    <title>Introduction</title>
    2121
    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
    2630    <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>
    2836
    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 &amp;&amp;
     38grub-mkrescue --output=grub-img.iso &amp;&amp;
     39xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso</userinput></screen>
    3340
    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>
    3742
    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>
    4145
    4246    <para>GRUB uses its own naming structure for drives and partitions in
     
    6064cat device.map</userinput></screen>
    6165
     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
    6276    <para>The location of the boot partition is a choice of the user that
    6377    affects the configuration.  One recommendation is to have a separate small
     
    7488    <para>Using the current lfs partition will also work, but configuration
    7589    for multiple systems is more difficult.</para>
    76   </sect2>
    77 
    78   <sect2>
    79     <title>Setting Up the Configuration</title>
    8090
    8191    <para>Using the above information, determine the appropriate
     
    8696
    8797    <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>
    22499
    225100    <warning>
     
    229104    </warning>
    230105
    231     <para>Update the MBR with:</para>
     106<screen role="nodump"><userinput>grub-install /dev/sda</userinput></screen>
    232107
    233 <screen role="nodump"><userinput>grub-setup '&lt;DEVICE&gt;'</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>
    234111
    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>
    238113
    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>
    241117
    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>
    249119
    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 &gt; /boot/grub/grub.cfg &lt;&lt; "EOF"
     126<literal># Begin /boot/grub/grub.cfg
     127set default=0
     128set timeout=5
     129
     130insmod ext2
     131set root=(hd0,2)
     132
     133menuentry "GNU/Linux, Linux &linux-version;-lfs-&version;" {
     134        linux   /boot/vmlinux-&linux-version;-lfs-&version; root=/dev/sda2 ro
     135}</literal>
     136EOF</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>
    257150
    258151   </sect2>
Note: See TracChangeset for help on using the changeset viewer.