On 08/06/2015 02:19 PM, Chris Murphy wrote:
stage 1 cannot point to another drive at all. It's sole purpose is to
find stage 2, which must be on the same drive. Stage 1.5 is optional,
and I've never seen it get used on Linux, mainly because in the time
of GRUB legacy, I never encountered an installer that supported XFS
for /boot.

Grub's documentation is slightly unclear about that. Here's a system where /boot is part of a RAID1 set on /dev/vdc1 and /dev/vdd1:

   [root@localhost ~]# cat /boot/grub/device.map
   # this device map was generated by anaconda
   (hd0)     /dev/vda
   (hd2)     /dev/vdc
   (hd3)     /dev/vdd
   [root@localhost ~]# grub
   Probing devices to guess BIOS drives. This may take a long time.


        GNU GRUB  version 0.97  (640K lower / 3072K upper memory)

     [ Minimal BASH-like line editing is supported.  For the first
   word, TAB
       lists possible command completions.  Anywhere else TAB lists the
   possible
       completions of a device/filename.]
   grub> root (hd2,0)
   root (hd2,0)
     Filesystem type is ext2fs, partition type 0xfd
   grub> setup (hd0)
   setup (hd0)
     Checking if "/boot/grub/stage1" exists... no
     Checking if "/grub/stage1" exists... yes
     Checking if "/grub/stage2" exists... yes
     Checking if "/grub/e2fs_stage1_5" exists... yes
     Running "embed /grub/e2fs_stage1_5 (hd0)"...  27 sectors are embedded.
   succeeded
     Running "install /grub/stage1 d (hd0) (hd0)1+27 p
   (hd2,0)/grub/stage2 /grub/grub.conf"... succeeded
   Done.
   grub>


I believe the final line can be interpreted as:

0: install: the install command
1: /grub/stage1: path to the stage1 file, relative to the root
2: d: grub will look for stage2_file at the address specified in arg 4
3: (hd0): grub will be written to the first block of (hd0), currently mapped to /dev/vda 4: (hd0)1+27: stage1_5 has been embedded to this location. It is being used as "stage2_file" 5: p: the first block of stage2 will be modified with the value of the partition where stage2_file is found
6: (hd2,0)/grub/stage2:
7: /grub/grub.conf: because this arg is present and #4 is really a stage 1.5, the stage2 config file is patched with this configuration file name.

If I specify "root (hd3,0)" in the grub shell, the boot loader will differ at 0002032, where it will refer to BIOS device 3 instead of BIOS device 2 for the location of /grub/stage2.

--- vda.2    2015-08-06 16:05:32.039999919 -0700
+++ vda.3    2015-08-06 16:05:59.441999927 -0700
@@ -53,7 +53,7 @@
 *
 0001760  \0  \0  \0  \0  \0  \0  \0  \0 002  \0  \0  \0 032  \0 002
 0002000 352   p   "  \0  \0  \0 003 002 377 377 377  \0  \0  \0 \0  \0
-0002020 002  \0   0   .   9   7  \0 377 377  \0 202   /   g   r u   b
+0002020 002  \0   0   .   9   7  \0 377 377  \0 203   /   g   r u   b
 0002040   /   s   t   a   g   e   2       /   g   r   u   b   / g   r
 0002060   u   b   .   c   o   n   f  \0  \0  \0  \0  \0  \0  \0 \0  \0
 0002100  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0 \0  \0

...unless I'm mistaken.  :)

_______________________________________________
CentOS mailing list
CentOS@centos.org
http://lists.centos.org/mailman/listinfo/centos

Reply via email to