Subject: Re: booting off RAIDframe mirror with i386 -current
To: None <port-i386@netbsd.org>
From: Simon Burge <simonb@wasabisystems.com>
List: port-i386
Date: 07/02/2003 14:55:33
David Laight wrote:
> On Wed, Jul 02, 2003 at 12:03:57AM +1000, Simon Burge wrote:
> > With the following ugly diff I was able to boot successfully off a disk
> > that had the raid0 set at the start of the disk and without the need
> > for mucking about with boot partitions or wierd offsets for the 'a'
> > partition.
> >
> > The "64" should at least be
> >
> > #define RF_PROTECTED_SECTORS 64 /* XXX refer to <.../rf_optnames.h> */
> >
> > and I don't know (read - "this works and that's all I needed") if
> > there's a better way of doing this.
> >
> > Anyone more savvy with the i386 bootblocks care to comment?
>
> I had a feeleng that my 'new' bootcode should make this easy!
> However I think the 64 should be added on at a different point
> - based on some property of the filesystem.
>
> I don't know the actual layout of the raid0 system, but I recall there
> is code somewhere that adds in 64 - does that code work?
Very roughly here is the layout (for i386):
block 0 start of real "a" partition
block 1 disklabel for real disk
block 0-16 space for "bootxx_*" first stage
block 32 (maybe?) raid label
block 64 start of raid space
block 65 disklabel for raid space
block 80 (64+16) start of FFS (or other) filesystem
> Is that in the code that loads the kernel?
This is in the bootxx_* code that loads /boot. /boot itself is fine (it
uses .../lib/biosdisk.c which deals with adding 64 if the partition type
in the disk label is RAID) but bootxx_* needs to know whether or not to
add 64 as well, but currently the code doesn't look at the disklabel
(space constraints I guess). So I just took the approach of "if the
open fails, try adding 64 to all read offsets and try again."
Simon.
--
Simon Burge <simonb@wasabisystems.com>
NetBSD Support and Service: http://www.wasabisystems.com/