Dave's OpenBSD Blog 1. Installation, disklabels

Created: 2022-08-02 Updated: 2022-08-12

Go back to my OpenBSD page for more entries.

Over the span of a week, I’ve read the first three chapters of Absolute OpenBSD, 2nd Edition (nostarch.com). Here’s a quick summary (in my words):

I’ve gotten through the first 50 pages of the book pretty quickly, but I’m sure my pace will slow way down once I hit more things to do and try.

Installation

I’d installed OpenBSD on my old 32-bit Compaq laptop before a couple years ago. The installer doesn’t seem to have changed much since then. A bunch of blue text scrolls by as it starts up and detects hardware. Then you’re in the installer.

OpenBSD’s installer is pretty hardcore. I love a good text interface and believe that brevity can be a virtue, but this is brutal. I don’t see any reason why there couldn’t be an additional option for each step to provide guidance and explain the options available. (The interface could remain unchanged for old pros.)

For example, when picking the location of the file sets (OpenBSD allows you to install only the parts you need), it’s not clear whether or not you need to mount the media or not. And I’ll be darned if I could figure out how to list available WiFi ESSIDs. Better hope you remember yours. Oh, and type it perfectly the first time or you’re gonna have to wait for a bit to get another go at it…​

Again, I love a fast text interface, but this is like trying to solve a puzzle in Colossal Cave Adventure:

YOU ARE STANDING IN A DEVICE NODE

east

THERE ARE SOME DRIVES HERE

look drives

SOME OF THEM APPEAR TO BE SCSI DRIVES. MAYBE YOU CAN MOUNT ONE?

mount a drive

YOU HAVE FALLEN INTO A PIT AND DIED.

Well, that’s what documentation is for, right? I just needed to RTFM. The thing is, here’s what the FAQ says:

Choose (I)nstall and follow the instructions.

I also discovered that there is more information for each platform. Here’s the i386 install instructions:

Which is better, but won’t exactly walk a newbie through finding the sets on a USB flash drive (which I assume is still the most popular option for OS installs in the preset era - I don’t miss "burning another coaster" to try out distros).

By contrast, Slackware’s installer treats finding the "software series" (counterpart to OpenBSD’s "file sets") on a USB flash drive a first-class option.

The "interesting" parts of the installation are:

  1. Setting up the network (well, Ethernet’s easy. WiFi is cumbersome.)

  2. Finding the installation media (file sets)

  3. Partitioning and labeling the disk

None of these things are really hard. They just take some experience and/or reading. In particular, the OpenBSD partition and label scheme will require some reading. OR you can just let the installer use the whole disk and go with the defaults, which seems like a perfectly valid thing to do unless you’re setting up a database server or other task-specific instance.

Disklabels

As mentioned above, OpenBSD’s handling of disks - particularly how it sets up default partitions is something you’ll need to learn about if you’re going to make any customizations. Or, as in my case, you’re just wanting to learn. The book goes into this in detail.

The book lead me to the disklabel(8) utility, and the accompanying man page really is excellent. For example, it has an explanation of the automatic disk allocation as performed during installation (unless you choose to customize it).

The man page also has an example that shows how to view the current allocation on a disk. Here’s the output on my laptop after the automatic disk allocation:

# disklabel -h wd0
# /dev/rwd0c:
type: ESDI
disk: ESDI/IDE disk
label: TOSHIBA MK8025GA
duid: 5eeb200ab13a8ea4
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
sectors/cylinder: 16065
cylinders: 9729
total sectors: 156301488 # total bytes: 74.5G
boundstart: 64
boundend: 156301488
drivedata: 0

16 partitions:
#                size           offset  fstype [fsize bsize   cpg]
  a:             1.0G               64  4.2BSD   2048 16384 12960 # /
  b:             2.1G          2097216    swap                    # none
  c:            74.5G                0  unused
  d:             4.0G          6549952  4.2BSD   2048 16384 12960 # /tmp
  e:             7.7G         14938528  4.2BSD   2048 16384 12960 # /var
  f:             6.0G         31184000  4.2BSD   2048 16384 12960 # /usr
  g:             1.0G         43766912  4.2BSD   2048 16384 12960 # /usr/X11R6
  h:            10.6G         45864064  4.2BSD   2048 16384 12960 # /usr/local
  i:             2.7G         68032736  4.2BSD   2048 16384 12960 # /usr/src
  j:             6.0G         73780928  4.2BSD   2048 16384 12960 # /usr/obj
  k:            33.3G         86363840  4.2BSD   2048 16384 12960 # /home

(By the way, I kept wondering why my laptop didn’t have an sd0. It’s because this ancient machine has an actual spinning IDE platter drive. So it’s wd0 as shown above.)

For comparison, here’s how my disk was partitioned on the Vultr VM instance:

openbsd$ doas disklabel -h sd0
# /dev/rsd0c:
type: SCSI
disk: SCSI disk
label: Block Device
duid: 3285349b17381d96
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
sectors/cylinder: 16065
cylinders: 3263
total sectors: 52428800 # total bytes: 25600.0M
boundstart: 64
boundend: 52428800
drivedata: 0

16 partitions:
#                size           offset  fstype [fsize bsize   cpg]
  a:         22679.5M               64  4.2BSD   2048 16384 38144 # /
  b:           256.0M         46447776    swap                    # none
  c:         25600.0M                0  unused
  d:          2664.4M         46972064  4.2BSD   2048 16384 12960 # /usr/local

So that’s a big win for the OpenBSD man pages so far.

The installer is not a joy to use, but I don’t think it would take a huge amount of additional effort to make it way more pleasant for newbies.

It looks like I’ve found the installer source. It’s in "miniroot" and the bulk of it is a 3k line ksh script called install.sub:

It would be really interesting to see how easy it might be to make improvements to this script. And equally interesting to see how amenable the OpenBSD folk would be to some big UX changes therein.