gpart bootcode Operation not permitted

Miroslav Lachman 000.fbsd at quip.cz
Fri Apr 3 19:54:23 UTC 2020


Artem Kuchin wrote on 2020/04/03 21:23:
> 03.04.2020 17:42, Miroslav Lachman пишет:
>>
>> I think you can use "gmirror stop" on boot partition, then "gmirror 
>> clear" and then update both individual boot partitions by gpart.
>>
>>
> 
> I am afraid to do it. Gmirror stops mirroring, okay. What what gmirror 
> clear does? What metadata is cleared and what it is used for?
> 
> How to restart mirroring after that and how to make sure that mirror is 
> 100% complete?
> 
> Is it possible to exclude only boot partition from mirroring?

Of course that's what I am suggesting - just split up mirroring of boot 
partition and keep mirroring on swap and root!

Gmirror clear deletes the very last sector on the given partition where 
metadata of gmirror are stored. It does not touch the data on the 
partitions. You don't need to worry.

You have 3 mirrors. They are visible in /dev/mirror or by command 
"gmirror status":
boot
swap
root

As the "man gmirror" shows:
      gmirror stop [-fv] name ...

You can run: gmirror stop -v boot

It stops only the "boot" mirror. swap and root are still mirrored.

Then you can clear metadata on each provider:

gmirror clear ada0p1
gmirror clear ada1p1

Or you can use "gmirror destroy -v boot" istead of 3 command above. It 
should stop the "boot" mirror and then clear metadata on both providers.

The you will have / your system will use 2 independent boot partitions: 
ada0p1 and ada1p1.
The machine should be able to boot from any of those 2 disks because 
each of them has valid boot partitions / boot code.

Gpart bootcode should work for them on each system upgrade.

gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada0
gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada1

Kind regards
Miroslav Lachman


More information about the freebsd-fs mailing list