> On Jan 24, 2021, at 4:50 PM, Robert Elz <k...@munnari.oz.au> wrote:
> 
>    Date:        Sun, 24 Jan 2021 14:12:20 -0800
>    From:        John Nemeth <jnem...@cue.bc.ca>
>    Message-ID:  <202101242212.10omckhx022...@server.cornerstoneservice.ca>
> 
>  |      The tools won't replicate this, nor should they, as it is a
>  | seriously broken setup.  To fix this setup, delete MBR parition 0.
> 
> Actually, it would take more than that...  The PMBR should cover the
> entire drive, the one shown only accounted for the (unused except for
> the partitioning headers) section before the start of the windows
> partition.
> 
> This is even worse than when I looked at it before.   If this works
> for anything at all (except perhaps ignoring the GPT partitions
> entirely, and simply allowing access via the MBR to the windows
> partition) then I suspect that indicates a bug somewhere.  It shouldn't.

The drive I am trying to replicate manually is from an evbmips (octeon) system 
that is working fine and was (more or less) created by NetBSD tools for a 
release.  The only difference from the original disk image created by the 
NetBSD release is that I replaced a single ffs partition with two.  Now I am 
trying to create a similar drive layout manually rather than going through the 
dance I did before: dd the image, boot to resize the root partition, boot 
diskless, delete root partition, make new partitions, repopulate filesystems.

As far as I can tell, the NetBSD releases use the code included below to create 
the disk image that I started with and am trying to replicate.  See 
src/distrib/utils/embedded/mkimage, the relevant portion of which is copied 
below; in this case $gpt and $gpt_hybrid are both true.  (One thing I still 
don’t understand in this code is that ${image} does not occur as the last 
argument to gpt.)

I’ll let others comment further on the wisdom of a hybrid GPT/MBR scheme or the 
layout of the MBR, but the -H option was added post-9, presumably to support 
applications like this.  Further, this is the layout actually created by NetBSD 
tools for working systems.  If there is a better layout, I would like to know.

Thanks.

Cheers,
Brook

if $gpt; then
        if $gpt_hybrid; then
                gpt_flags="-H"
        fi
        initsecs=$((${init} * 1024))
        bootsecs=$((${boot} * 1024))
        ffsstart="$(getsectors ${ffsoffset})"

        echo ${bar} Clearing existing partitions ${bar}
        ${GPT} ${gpt_flags} ${image} destroy || true

        echo ${bar} Creating partitions ${bar}
        ${GPT} ${gpt_flags} ${image} create ${gpt_create_flags}
        ${GPT} ${gpt_flags} ${image} add -b ${initsecs} -s ${bootsecs} -l 
${gpt_label_boot:-EFI} -t ${gpt_boot_type:-efi}
        ${GPT} ${gpt_flags} ${image} set -a required -i 1
        ${GPT} ${gpt_flags} ${image} add -a 4m -b ${ffsstart} -l 
${gpt_label_ffs:-netbsd-root} -t ffs
        ${GPT} ${gpt_flags} ${image} show
        if $gpt_hybrid; then
                echo ${bar} Creating hybrid MBR ${bar}
                ${FDISK} -f -g -u -0 -a -s ${msdosid}/${initsecs}/${bootsecs} 
-F ${image}
                ${FDISK} -f -g -u -3 -s 238/1/$((${initsecs} - 1)) -F ${image}
                ${FDISK} -F ${image}
        fi
else
…
fi

Reply via email to