Ok, I did an installboot -mFf on both disks again (-v is not available for installboot)

$ sudo installboot -mFf /boot/pmbr /boot/gptzfsboot /dev/rdsk/c9t5000CCA04103E0B5d0s0 bootblock written for /dev/rdsk/c9t5000CCA04103E0B5d0s0, 223 sectors starting at 1024 (abs 33154)
stage1 written to slice 1 sector 0 (abs 16065)
stage1 written to master boot sector

$ sudo installboot -mFf /boot/pmbr /boot/gptzfsboot /dev/rdsk/c10t5000CCA04103E095d0s0 bootblock written for /dev/rdsk/c10t5000CCA04103E095d0s0, 223 sectors starting at 1024 (abs 33154)
stage1 written to slice 1 sector 0 (abs 16065)
stage1 written to master boot sector

checked the version:

$ installboot -i /boot/gptzfsboot
Extended version string: 1.1-2017.4.23.2
MD5 hash: 766b5059c45796f049bb38b80e1a1c4d

and compared it to the version of both disks:

$ sudo installboot -i /dev/rdsk/c9t5000CCA04103E0B5d0s0
Extended version string: 1.1-2017.4.23.2
MD5 hash: 766b5059c45796f049bb38b80e1a1c4d

$ sudo installboot -i /dev/rdsk/c10t5000CCA04103E095d0s0
Extended version string: 1.1-2017.4.23.2
MD5 hash: 766b5059c45796f049bb38b80e1a1c4d


everything matches, but still the system boots only from one disk and not the other. Since it is not the latest version you mentioned I'll just wait until it is updated I guess. I can at least boot from one disk so I am not too worried about it at the moment. Still I would prefer to be able to boot from both.

On 05/16/2017 03:18 PM, Toomas Soome wrote:

On 16. mai 2017, at 15:58, Dominik Hassler <hassl...@gmx.li> wrote:

Toomas,

using a (forced) installboot on both rpool mirror devices did the trick. Loader 
is now being used.

However there is another problem. I can boot w/o problems from the first 
device. But booting fails from the second device w/ the following message:

Can't find /boot/zfsloader

illumos/x86 boot
Default: disk-1:/boot/zfsloader

Somehow the MBR on second disk is not properly updated and I think it has wrong 
size recorded for stage2.

The initial installboot was implemented based on installgrub source and we 
record the LBA with gptzfsboot start sector, and size (in sectors) into MBR.

Now the copy of the MBR (the /boot/pmbr file) is also installed into partition 
start sector 0), and when the beadm activate is run, the boot blocks are 
updates, but with same logic, that with MBR+VTOC case, the MBR itself is not 
updated (to keep multi boot setups safe), and only partition sector 0 and stage 
2 are updated. The oversight is that the MBR is loading stage2 directly, and if 
the gptzfsboot size was changed, the result is that not the entire gptzfsboot 
is read into the memory and resulting with just the output as you can see.

later we did create the fix for installboot - the fixed installboot will only 
record the location and size (1 sector) of the partition boot recors (partition 
relative sector 0), and after that the MBR code will read in the partition 
block, the partition block will read the stage2, and so the MBR+VTOC case is 
not an issue any more.

to fix this, run installboot -mFfv against that second disk to ensure the MBR 
block is properly updated - note the -v again, so you can confirm the MBR and 
partition block and stage2 are all updated.

With installgrub we actually have the same issue, except, the grub stage2 size 
virtually did not change and thats why the problem was never revealed.

note, if your installboot command does allow to read the version from 
/boot/gptzfsboot like that:

$ installboot -i /boot/gptzfsboot
Extended version string: 1.1-2017.5.6.2
MD5 hash: 2907581de9ca6bd4d2c12695a32cb749

then it has the bug fixed, and after installing MBR with such binary, the MBR 
is always reading the sector 0 from partition start, and the future updates are 
ok.

also note that MBR is always updated with GPT, and hence there the issue does 
not appear (which why it took some time to notice it - my own test systems were 
all using GPT:)

rgds,
toomas

boot:


Debug info below:

$ sudo installboot -i /dev/rdsk/c10t5000CCA04103E095d0s0
Extended version string: 1.1-2017.4.23.2
MD5 hash: 766b5059c45796f049bb38b80e1a1c4d

same on both devices


$ sudo format -> select disk -> fdisk
            Total disk size is 36481 cylinders
            Cylinder size is 16065 (512 byte) blocks

                                              Cylinders
     Partition   Status    Type          Start   End   Length    %
     =========   ======    ============  =====   ===   ======   ===
         1       Active    Solaris2          1  36480    36480    100

same on both devices


$ sudo prtvtoc /dev/rdsk/c10t5000CCA04103E095d0s2
* /dev/rdsk/c10t5000CCA04103E095d0s2 partition map
*
* Dimensions:
*     512 bytes/sector
*      63 sectors/track
*     255 tracks/cylinder
*   16065 sectors/cylinder
*   36480 cylinders
*   36478 accessible cylinders
*
* Flags:
*   1: unmountable
*  10: read-only
*
* Unallocated space:
*       First     Sector    Last
*       Sector     Count    Sector
*           0     16065     16064
*
*                          First     Sector    Last
* Partition  Tag  Flags    Sector     Count    Sector  Mount Directory
      0      2    00      16065 586003005 586019069
      2      5    01          0 586051200 586051199
      8      1    01          0     16065     16064


same on both devices


boot: status
Default: disk-1:/boot/zfsloader
boot: statusdisk devices:
   disk0:   BIOS drive C ...
     disk0a: root
     disk0i: boot
   disk1:   BIOS drive D ...
     disk1s1: Solaris 2
       disk1s1a: root
       disk1s1i: boot
....
zfs devices:
 pool: rpool
bootfs: rpool/ROOT/omnios-r151022
config:

   NAME STATE
   rpool DEGRADED
     mirror DEGRADED
       c9t5000CCA04103E0B5d0s2 ONLINE
       c10t5000CCA04103E095d0s0 OFFLINE

illumos/x86 boot
Default: disk-1:/boot/zfsloader
boot:


Any hints on how to get the system boot from both rpool devices are highly 
appreciated.


Kind regards,
Dominik

On 05/15/2017 08:40 PM, Toomas Soome wrote:

On 15. mai 2017, at 21:06, Dan McDonald <dan...@omniti.com> wrote:


On May 15, 2017, at 12:49 PM, Dominik Hassler <hassl...@gmx.li> wrote:

Hey,

after the upgrade, the boot loader is still GRUB.

I did the upgrade according to the upgrade notes. Rebooted once, did a:

$ sudo beadm activate omnios-r151022
WARNING: menu.lst file /rpool/boot/menu.lst does not exist,
      generating a new menu.lst file
Activated successfully

checked for a /etc/default/be file. there is none. Still the boot loader is 
GRUB instead of loader.

Are you on a mirrored root pool?  It's possible the libbe code that installs 
loader doesn't do it to all disks in a mirrored pool...

Worst-case scenario is to explicitly install it:

        foreach (drive)
                installboot -m /boot/pmbr /boot/gptzfsboot /dev/rdsk/<drive>

Dan


The problem you have is that beadm activate does not enforce MBR update in case 
of MBR+VTOC partitioning; you need to either run bootadm install-bootloader 
-Mfv or installboot -mv.

Note that installboot and bootadm install-bootloader have slightly different 
flags; -v is good to have there, so you will see if the MBR was updated or not.

The beadm activate and bootadm use the same mechanism to update the bootblocks 
on all pool member disks, bootadm does have extra flag to allow MBR update. 
installboot does only update specified disk.

rgds,
toomas


_______________________________________________
OmniOS-discuss mailing list
OmniOS-discuss@lists.omniti.com
http://lists.omniti.com/mailman/listinfo/omnios-discuss

Reply via email to