NetBSD-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: gptmbr.bin vs RAIDframe



In article <Pine.NEB.4.64.1506171043190.534%ugly.internal.precedence.co.uk@localhost>,
Stephen Borrill  <netbsd%precedence.co.uk@localhost> wrote:
>On Tue, 16 Jun 2015, David Brownlee wrote:
>> OK, I've identified the problem (if not the solution :)
>>
>> I'm trying to setup
>> - gpt with a wedge (at offset +64) that covers the entire disk, containing:
>>  - a raid1 partition, which offsets its context by +64, containing:
>>    - gpt with a wedge (at offset +64) that contains the root filesystem
>>
>> By my count thats means /boot will be in a filesystem at 64+64+64 =
>> 192, while bootxx_ will only try for filesystems at the partition
>> start, plus another attempt at +64 (so 64 and 128). If I manually add
>> another attempt at an additional +64 bootxx will find /boot. At which
>> point /boot will fail to find /netbsd (as I haven't mangled it as
>> well)
>>
>> The first +64 comes from the initial gpt partition, so thats fine - if
>> the initial gpt had a wedge starting at 2048 then the gpt biosboot
>> would plug things in appropriately.
>>
>> The second +64 is looking for the the fixed offset of raidframe which
>> is also ~fine (its either there or not, and if its there, its 64).
>>
>> The final +64 is a kludge which just happens to match my 'gpt-on-raid'
>> layout, and is clearly not a solution.
>>
>> The problem is there not being enough space in the bootxx blocks to
>> parse the disk layout for the gpt-on raid.
>>
>> As I see it my options are
>>
>> 1) Separate boot partition, simple but not elegant
>>
>> 2) An initial 'root' wedge which has a RAID1 with a disklabel for
>> booting, then another wedge for everything else. Also simple, no less
>> inelegant, and avoids the annoying extra boot partition(s), but means
>> you cannot have root on a named wedge (minor point)
>
>2) is what I ended up doing, so instead of dk -> raid -> dk it was just 
>dk -> raid (just remember the installboot step from my earlier mail). Even 
>with a separate boot partition (or with a fixed bootloader), dk -> raid -> dk
>doesn't allow you to set -A root on the RAID (well it sets it, but it 
>doesn't work), so there's still a missing piece of the puzzle. Yes, you 
>need to know the device name for root in your fstab, perhaps the name 
>lookup code could learn to recognise %ROOT% or such like to mean
>/dev/<kern.root_device><'a'+kern.root_partition>


As the comment hints, it should probably be done using an attribute...

        /*
         * XXX: The following code assumes that the root raid
         * is the first ('a') partition. This is about the best
         * we can do with a BSD disklabel, but we might be able
         * to do better with a GPT label, by setting a specified
         * attribute to indicate the root partition. We can then
         * stash the partition number in the r->root_partition
         * high bits (the bottom 2 bits are already used). For
         * now we just set booted_partition to 0 when we override
         * root.
         */

It is pretty simple to implement.

christos



Home | Main Index | Thread Index | Old Index