In this article I will explain, step by step, how to install NetBSD on a RAID-1 root disk.

Contents

  1. Foreword
  2. Requirements
  3. Booting from the CD
  4. fdisk
  5. fdisk -0ua wd0
  6. disklabel
  7. disklabel -i -I wd0
  8. raid0.conf and raidctl
  9. installboot
  10. Returning to sysinst

Foreword

So, you just got yourself a pair of shiny new SCSI or SATA disks? You care about your data and you think backup is as important as having redundant data? You are disappointed because the netbsd raid1-root guide at 1 looks rather complicated? You want to setup a raid1 mirror during installation? This guide is losely based on the netbsd.org guide above, so check that out as well to get a better understanding of what's happening here.

Requirements

NetBSD 5.0 and 2 free harddisks :-)

Booting from the CD

Boot the NetBSD 5.0 CD and, after selecting your language and keyboard layout, navigate to

e: Utility menu

and then

a: Run /bin/sh

Now make sure you know your disk names, you can either see them during boot (you can get those messages again by typing dmesg at the shell prompt you just opened) or use something like sysctl hw.disknames. I'll use wd0 and wd01 (both as whole disk) in this guide.

fdisk

Let's interactively setup the first partition on both disks with fdisk and mark the active partition as well (bold text is what you should enter, otherwise just accept the default by pressing return):

fdisk -0ua wd0


fdisk: primary partition table invalid, no magic in sector 0
Disk: /dev/rwd0d
NetBSD disklabel disk geometry:
cylinders: 16645, heads: 16, sectors/track: 63 (1008 sectors/cylinder)
total sectors: 16778160

BIOS disk geometry:
cylinders: 1024, heads: 255, sectors/track: 63 (16065 sectors/cylinder)
total sectors: 16778160

Do you want to change our idea of what the BIOS thinks? [n]

Partition 0:

The data for partition 0 is:

sysid: [0..255 default: 169]
start: [0..1044cyl default: 63, 0cyl, 0MB]
size: [0..144cyl default: 16778097, 1044cyl, 8192MB]
bootmenu: []
Do you want to change the active partition? [n] y
Choosing 4 will make no partition active.
active partition: [0..4 default: 0]
Are you happy with this choice? [n] y

We haven't written the MBR back to disk yet. This is your last chance.
Partition table:
0: NetBSD (sysid 169)
start 63, size 33555249 (16384 MB, Cyls 0-2088/183/63), Active
1:
2:
3:
Bootselector disabled.
First active partition: 0
Should we write new partition table? [n] y

Do the same for wd1:

# fdisk -0ua wd1

... see above

disklabel

Now we need to edit the disklabel, it's easy, we just need to change one thing:

disklabel -i -I wd0

partition> P
...
e: 33555312 63 4.2BSD ...
partition> e
Filesystem type [?] [4.2BSD]: RAID
Start offset ('x' to start after partition 'x') [0.0625c, 63s, 0.0307617M]:
Partition size ('$' for all remaining) [16644.9c, 16778097s, 8192.43M]:
partition> W
Label disk [n]?y
Label written
partition> Q

Note that the letter e is only an example; you need to identify your root partition

Do the same with wd1

# disklabel -i -I wd1

...

You may save typing by copying the configuration:

# disklabel wd0 >/tmp/wd0.inf
# disklabel -R wd1 /tmp/wd0.inf

raid0.conf and raidctl

Next we'll configure RAIDframe (again, check the guide above, and the raidctl(8) manpage, what all this is about):


# cat > /tmp/raid0.conf
START array
1 2 0

START disks
/dev/wd0e
/dev/wd1e

START layout
128 1 1 1

START queue
fifo 100
^D
# raidctl -v -C /tmp/raid0.conf raid0
raid0: Component /dev/wd0e being configured at col: 0
         Column: 0 Num Columns: 0
         Version: 0 Serial Number: 0 Mod Counter: 0
         Clean: No Status: 0
Number of columns do not match for /dev/wd0e
/dev/wd0e is not clean!
raid0: Component /dev/wd1e being configured at col: 1
         Column: 0 Num Columns: 0
         Version: 0 Serial Number: 0 Mod Counter: 0
         Clean: No Status: 0
Number of columns do not match for /dev/wd1e
/dev/wd1e is not clean!
raid0: There were fatal errors
raid0: Fatal errors being ignored.
raid0: RAID Level 1
raid0: Components: /dev/wd0e /dev/wd1e
raid0: Total Sectors 16777984 (8192 MB)
# raidctl -v -I 2009072201 raid0
# raidctl -v -i raid0
Initiating re-write of parity
Parity Re-write status:
 98% |***************************************| ETA:    00:01 -
# raidctl -v -A root raid0
raid0: New autoconfig value is: 1
raid0: New rootpartition value is: 1
raid0: Autoconfigure: Yes
raid0: Root: Yes

installboot

One last thing, we need to make both disks bootable:

# installboot -o timeout=30 -v /dev/rwd0e /usr/mdec/bootxx_ffsv1
File system:        /dev/rwd0e
Primary bootstrap:  /usr/mdec/bootxx_ffsv1
Ignoring PBR with invalid magic in sector 0 of '/dev/rwd0e'
Boot options:       timeout 30, flags 0, speed 9600, ioaddr 0, console pc
# installboot -o timeout=30 -v /dev/rwd1e /usr/mdec/bootxx_ffsv1
...

Returning to sysinst

And that's it, return to sysinst and continue the installation of NetBSD, just select raid0 as the disk you want to install NetBSD to (and, of course, make sure you can boot from both disks after that):

# exit