2024-12-31 11:37:15 Displayed 138 times

OpenBSD on SPARC64

We have three SPARC64 machines at kmx.io. One is a SUN Entreprise 5400, and we have two SUN Ultra 60 of which one is broken : the bios needs an update which is a pain in the ass, I have to remove the power supply to activate a jumper on the motherboard directly. Both machines run OpenBSD 7.6-current on RAID1.

To boot OpenBSD on a SPARC64 with RAID1, you need to follow special steps. You need to use disklabel to create a non-raid partition of 2Gb before a RAID partition of the rest of the disk.

# /dev/rsd0c:
type: SCSI
disk: SCSI disk
label: X
duid: X
flags: vendor
bytes/sector: 512
sectors/track: 127
tracks/cylinder: 16
sectors/cylinder: 2032
cylinders: 1907730
total sectors: 3907029168 # total bytes: 1863.0G
boundstart: 0
boundend: 3907029168

16 partitions:
#                size           offset  fstype [fsize bsize   cpg]
  a:             2.0G                0  4.2BSD   2048 16384 12960 # /sd0a
  b:             2.0G         20972272    swap                    
  c:          1863.0G                0  unused                    
  d:          1851.0G         25168352    RAID

The non-raid partitions (sd0a and sd1a) need to contain two files : ofwboot and bsd.

Create the RAID1 :

# bioctl -c 1 -l /dev/sd0d,/dev/sd1d softraid0
softraid0: raid level 1 attached as sd2

Inside the RAID partition you can call disklabel again to create more partitions. Here is my usual partition scheme for OpenBSD :

# disklabel -E sd2
a a
offset: [XXX]
size: [XXX] 2G
type: [4.2BSD]
mount point: /
a b
offset: [XXX]
size: [XXX] 2G
type: [swap]
a d
offset: [XXX]
size: [XXX] 10G
type: [4.2BSD]
mount point: /tmp
a e
offset: [XXX]
size: [XXX] 10G
type: [4.2BSD]
mount point: /var
a f
offset: [XXX]
size: [XXX] 10G
type: [4.2BSD]
mount point: /usr
a g
offset: [XXX]
size: [XXX] 2G
type: [4.2BSD]
mount point: /usr/X11R6
a h
offset: [XXX]
size: [XXX] 20G
type: [4.2BSD]
mount point: /usr/local
a j
offset: [XXX]
size: [XXX] 10G
type: [4.2BSD]
mount point: /usr/src
a k
offset: [XXX]
size: [XXX] 10G
type: [4.2BSD]
mount point: /usr/obj
a l
offset: [XXX]
size: [XXX] 10G
type: [4.2BSD]
mount point: /usr/ports
a m
offset: [XXX]
size: [XXX] 10G
type: [4.2BSD]
mount point: /usr/ports/pobj
a n
offset: [XXX]
size: [XXX] 10G
type: [4.2BSD]
mount point: /usr/xenocara
a o
offset: [XXX]
size: [XXX] 10G
type: [4.2BSD]
mount point: /usr/xobj
a p
offset: [XXX]
size: [XXX] *
type: [4.2BSD]
mount point: /home

Then run installboot :

# installroot -v sd2
Using / as root
installing bootstrap on /dev/rsd2c
using first-stage /usr/mdec/bootblk, second-stage /usr/mdec/ofwboot
boot block is 6888 bytes (14 blocks @ 512 bytes = 7168 bytes)
sd2: softraid volume with 2 disk(s)
sd2: installing boot loader on softraid volume
sd0d: installing boot blocks on /dev/rsd0c
copying /usr/mdec/ofwboot to //ofwboot
writing boot block to disk /dev/rsd0c
sd1d: installing boot blocks on /dev/rsd1c
copying /usr/mdec/ofwboot to //ofwboot
writing boot block to disk /dev/rsd1c

The non-raid partitions (sd0a and sd1a) need to contain two files : ofwboot and bsd. Mount the boot partitions and copy files :

# mount /dev/sd0a /mnt
# cp /ofwboot /bsd /mnt/
# umount /mnt
# mount /dev/sd1a /mnt
# cp /ofwboot /bsd /mnt/
# umount /mnt