Port-i386 archive

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

GPT and raidframe aware bootstrap


After some frustration booting off raidframe based filesystem larger
than 2 TB [1], I worked on x86 bootstrap to make it fully GPT and
raidframe aware. The goal is to be able to boot off partitions defined
by a GPT inside a RAID1 raidframe set. 

While there I added the ability to use raidframe device names and GPT
label names in the bootstrap; with the idea that it helps making
boot.cfg files that are stable when disks are added or removed.

Here is the patch for review and feedback:

Here are a examples of dev command output on a few testing setups:

1) A raidframe with a GPT inside. raid9 appears in the available
devices, and the GPT partition in contains appear with their label. One
can boot NAME=root@raid8:/netbsd 
> dev
disk hd0 size 1024 MB
  hd0a(4.2BSD) hd0e(RAID)
disk fd0
disk fd1
raidframe raid9 serial 20190807 in hd0e size 535 MB
  NAME=root@raid8(NetBSD FFS) NAME=scratch@raid8(NetBSD FFS, bootme)
default hd0e

2) A raidframe with a disklabel (no GPT), We support raid9a:/netbsd
> dev
disk hd0 size 1024 MB
disk fd0
disk fd1
raidframe raid9 serial 20190918 in hd0e size 1023 MB
  raid9a(4.2BSD) raid9b(swap) raid9e(4.2BSD)
default hd0e

3) EFI boot with a GPT that has a raidframe partition and a GPT inside
the raidframe. Here we can use boot NAME=root@qemu:/netbsd 
> dev
disk hd0 mediaId 0 size 1024 MB
  NAME=efi@qemu(EFI System) NAME=ffs@qemu(NetBSD FFS)
  NAME=raid9@qemu(NetBSD RAID)
raidframe raid9 serial 20190730 in NAME=raid9@qemu size 383 MB
  NAME=root@qemu(NetBSD FFS) NAME=scratch@qemu(NetBSD FFS, bootme)

In the three examples, booting the RAID device itself is possible (boot
hd0e or  NAME=raid9@qemu in last example). This will use the first
partition in the RAID, or the partition that has the bootme attribute.

[1] http://mail-index.netbsd.org/netbsd-users/2019/07/25/msg023215.html

Emmanuel Dreyfus

Home | Main Index | Thread Index | Old Index