Date: Mon, 6 Apr 2020 14:56:03 +0300 From: Artem Kuchin <artem@artem.ru> To: Miroslav Lachman <000.fbsd@quip.cz>, freebsd-fs@freebsd.org Subject: Re: gpart bootcode Operation not permitted Message-ID: <07de3b0c-cf60-f061-f2dd-33597ff576fd@artem.ru> In-Reply-To: <159cf2f5-1898-019e-9f02-29750ff7fa7e@quip.cz> References: <27955efa-01f2-88f6-6a28-d9d8a62dfa2a@artem.ru> <a4a5e7dc-3234-add9-4c2e-8c55a38d6e83@quip.cz> <c1856b2c-8f0e-ab1c-9ec7-d62a10b696b2@artem.ru> <48ba23fa-13dc-4a74-579c-2028479f302a@quip.cz> <1605a04a-ad2c-5b2c-445f-fb8ccd7211d6@artem.ru> <159cf2f5-1898-019e-9f02-29750ff7fa7e@quip.cz>
next in thread | previous in thread | raw e-mail | index | archive | help
03.04.2020 22:44, Miroslav Lachman пишет: > 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 Hmm. tried what you wrote but it went a little different, failed to clear and needed to use destroy anyway # gmirror stop -v boot Done. # gmirror status Name Status Components mirror/swap COMPLETE ada0p2 (ACTIVE) ada1p2 (ACTIVE) mirror/root COMPLETE ada0p3 (ACTIVE) ada1p3 (ACTIVE) mirror/boot COMPLETE gpt/boot1 (ACTIVE) gpt/boot0 (ACTIVE) # gmirror clear ada0p1 Can't clear metadata on ada0p1: Operation not permitted. gmirror: Not fully done. # gmirror clear ada1p1 Can't clear metadata on ada1p1: Operation not permitted. gmirror: Not fully done. # gmirror destroy -v boot Done. # gmirror status Name Status Components mirror/swap COMPLETE ada0p2 (ACTIVE) ada1p2 (ACTIVE) mirror/root COMPLETE ada0p3 (ACTIVE) ada1p3 (ACTIVE) # gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada0 partcode written to ada0p1 bootcode written to ada0 # gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada1 partcode written to ada1p1 bootcode written to ada1 Now it can boot from any disk. Thank you. Artem
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?07de3b0c-cf60-f061-f2dd-33597ff576fd>