OpenBSD on APU4

Today I got an APU.4B4

This is how I got OpenBSD installed on it.

0. Re-install

If there already is an OpenBSD running on the device, there is a shorter path
to do a re-install:

- Download a bsd.rd,
- Place it in the device's root file system,
- Connect a serial console (see below),
- Reboot
- In the boot prompt, type

  boot bsd.rd

Answer "yes" to change the default boot console.
Then continue at step 4. "Installation" below.

If there is no OpenBSD on the device yet, follow these steps:

1. Serial Console

Plug a USB-to-serial converter (Sub-D9 analog, not TTL) converter to my laptop,
plug a Null-modem cable from converter to APU.

  $ screen /dev/ttyUSB0 115200

Powering on the APU should then show something like

  PC Engines apu4
  coreboot build 20171130
  BIOS version v4.6.4
  4080 MB ECC DRAM

  SeaBIOS (version rel-

  Press F10 key now for boot menu

(There is a TTL Serial on the board at COM2 at J4, pin2=Tx,3=Rx,4=GND, but the
boot does not come up there.)

2. Installation medium

Write an install fs to a USB stick, from OpenBSD's Download page:

(on my debian laptop:)

  $ wget
  $ wget
  $ sudo apt-get install signify-openbsd signify-openbsd-keys
  $ signify-openbsd -Cp /usr/share/signify-openbsd-keys/ -x SHA256.sig install63.fs
  Signature Verified
  install63.fs: OK

  $ sudo dd if=install63.fs of=/dev/sdX bs=1M
  360+1 records in
  360+1 records out
  377978880 bytes (378 MB, 360 MiB) copied, 52.8627 s, 7.2 MB/s

(I have an mSATA hard disk in the APU, but no mSATA adapter towards my laptop
that would allow me to install a system ahead of time.)

3. Boot from the USB stick


- the Serial cable
- the USB stick
- ethernet cable to the first ethernet port (closest to the serial)

and power up the APU. In the serial console, hit F10 to enter the boot menu.
Pick the USB stick:

  Press F10 key now for boot menu

  Select boot device:

  1. USB MSC Drive OCZ RALLY2 0.00
  2. ata0-0: Samsung SSD 860 EVO mSATA 250GB ATA-11 Hard-Disk (232 GiBytes)
  3. Payload [memtest]
  4. Payload [setup]


  Booting from Hard Disk...
  Using drive 0, partition 3.
  probing: pc0 com0 com1 com2 com3 mem[639K 3326M 752M a20=on]
  disk: hd0+ hd1+*
  >> OpenBSD/amd64 BOOT 3.34
  boot> help

At this point I type 'help' to prevent automatic booting and give me some time
to set up the TTY.

By default, OpenBSD boots on the VGA device, and since there is none on the
APU, it will just fail and reboot. Hence setup the boot TTY. Set the correct
baud rate for the APU and then switch to com0:

  boot> stty com0 115200
  boot> set tty com0
  switching console to com>> OpenBSD/amd64 BOOT 3.34

Now just hit enter and it should boot.

  cannot open hd0a:/etc/random.seed: No such file or directory
  booting hd0a:/6.3/amd64/bsd.rd: 3418091+1467392+3891704+0+598016 [363465+90+433440+288010]=0x9fc160
  entry point at 0x1000158
  Copyright (c) 1982, 1986, 1989, 1991, 1993
          The Regents of the University of California.  All rights reserved.
  Copyright (c) 1995-2018 OpenBSD. All rights reserved.

  OpenBSD 6.3 (RAMDISK_CD) #98: Sat Mar 24 14:26:39 MDT 2018
  real mem = 4261007360 (4063MB)
  avail mem = 4128083968 (3936MB)
  mainbus0 at root
  bios0 at mainbus0: SMBIOS rev. 2.7 @ 0xcff9e020 (7 entries)
  bios0: vendor coreboot version "v4.6.4" date 20171130
  bios0: PC Engines PC Engines apu4
  acpi0 at bios0: rev 2
  acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
  cpu0 at mainbus0: apid 0 (boot processor)
  cpu0: AMD GX-412TC SOC, 998.24 MHz
  cpu0: 32KB 64b/line 2-way I-cache, 32KB 64b/line 8-way D-cache, 2MB 64b/line 16-way L2 cache
  cpu0: ITLB 32 4KB entries fully associative, 8 4MB entries fully associative
  cpu0: DTLB 40 4KB entries fully associative, 8 4MB entries fully associative
  cpu0: apic clock running at 99MHz
  cpu0: mwait min=64, max=64, IBE
  cpu at mainbus0: not configured
  cpu at mainbus0: not configured
  cpu at mainbus0: not configured
  ioapic0 at mainbus0: apid 4 pa 0xfec00000, version 21, 24 pins
  ioapic1 at mainbus0: apid 5 pa 0xfec20000, version 21, 32 pins
  , remapped to apid 5
  acpiprt0 at acpi0: bus 0 (PCI0)
  acpiprt1 at acpi0: bus 1 (PBR4)
  acpiprt2 at acpi0: bus 2 (PBR5)
  acpiprt3 at acpi0: bus 3 (PBR6)
  acpiprt4 at acpi0: bus 4 (PBR7)
  acpiprt5 at acpi0: bus -1 (PBR8)
  acpicpu at acpi0 not configured
  "PNP0C0C" at acpi0 not configured
  "BOOT0000" at acpi0 not configured
  pci0 at mainbus0 bus 0
  pchb0 at pci0 dev 0 function 0 "AMD AMD64 16h Root Complex" rev 0x00
  pchb1 at pci0 dev 2 function 0 "AMD AMD64 16h Host" rev 0x00
  ppb0 at pci0 dev 2 function 1 "AMD AMD64 16h PCIE" rev 0x00: msi
  pci1 at ppb0 bus 1
  em0 at pci1 dev 0 function 0 "Intel I211" rev 0x03: msi, address 00:0d:b9:4a:dc:20
  ppb1 at pci0 dev 2 function 2 "AMD AMD64 16h PCIE" rev 0x00: msi
  pci2 at ppb1 bus 2
  em1 at pci2 dev 0 function 0 "Intel I211" rev 0x03: msi, address 00:0d:b9:4a:dc:21
  ppb2 at pci0 dev 2 function 3 "AMD AMD64 16h PCIE" rev 0x00: msi
  pci3 at ppb2 bus 3
  em2 at pci3 dev 0 function 0 "Intel I211" rev 0x03: msi, address 00:0d:b9:4a:dc:22
  ppb3 at pci0 dev 2 function 4 "AMD AMD64 16h PCIE" rev 0x00: msi
  pci4 at ppb3 bus 4
  em3 at pci4 dev 0 function 0 "Intel I211" rev 0x03: msi, address 00:0d:b9:4a:dc:23
  "AMD CCP" rev 0x00 at pci0 dev 8 function 0 not configured
  xhci0 at pci0 dev 16 function 0 "AMD Bolton xHCI" rev 0x11: msi
  usb0 at xhci0: USB revision 3.0
  uhub0 at usb0 configuration 1 interface 0 "AMD xHCI root hub" rev 3.00/1.00 addr 1
  ahci0 at pci0 dev 17 function 0 "AMD Hudson-2 SATA" rev 0x39: msi, AHCI 1.3
  ahci0: port 0: 6.0Gb/s
  scsibus0 at ahci0: 32 targets
  sd0 at scsibus0 targ 0 lun 0:  SCSI3 0/direct fixed naa.5002538e402f3b91
  sd0: 238475MB, 512 bytes/sector, 488397168 sectors, thin
  ehci0 at pci0 dev 19 function 0 "AMD Hudson-2 USB2" rev 0x39: apic 4 int 18
  usb1 at ehci0: USB revision 2.0
  uhub1 at usb1 configuration 1 interface 0 "AMD EHCI root hub" rev 2.00/1.00 addr 1
  "AMD Hudson-2 SMBus" rev 0x42 at pci0 dev 20 function 0 not configured
  "AMD Hudson-2 LPC" rev 0x11 at pci0 dev 20 function 3 not configured
  sdhc0 at pci0 dev 20 function 7 "AMD Bolton SD/MMC" rev 0x01: apic 4 int 16
  sdhc0: SDHC 2.0, 63 MHz base clock
  sdmmc0 at sdhc0: 4-bit, sd high-speed, mmc high-speed, dma
  pchb2 at pci0 dev 24 function 0 "AMD AMD64 16h Link Cfg" rev 0x00
  pchb3 at pci0 dev 24 function 1 "AMD AMD64 16h Address Map" rev 0x00
  pchb4 at pci0 dev 24 function 2 "AMD AMD64 16h DRAM Cfg" rev 0x00
  pchb5 at pci0 dev 24 function 3 "AMD AMD64 16h Misc Cfg" rev 0x00
  pchb6 at pci0 dev 24 function 4 "AMD AMD64 16h CPU Power" rev 0x00
  pchb7 at pci0 dev 24 function 5 "AMD AMD64 16h Misc Cfg" rev 0x00
  isa0 at mainbus0
  com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
  com0: console
  com1 at isa0 port 0x2f8/8 irq 3: ns16550a, 16 byte fifo
  com2 at isa0 port 0x3e8/8 irq 5: ns16550a, 16 byte fifo
  umass0 at uhub0 port 4 configuration 1 interface 0 "ITE Technology USB Mass Storage Device" rev 2.00/1.00 addr 2
  umass0: using SCSI over Bulk-Only
  scsibus1 at umass0: 2 targets, initiator 0
  sd1 at scsibus1 targ 1 lun 0:  SCSI2 0/direct removable serial.048d1167000000000210
  sd1: 3853MB, 512 bytes/sector, 7892040 sectors
  uhub2 at uhub1 port 1 configuration 1 interface 0 "vendor 0x0438 product 0x7900" rev 2.00/0.18 addr 2
  softraid0 at root
  scsibus2 at softraid0: 256 targets
  root on rd0a swap on rd0b dump on rd0b
  erase ^?, werase ^W, kill ^U, intr ^C, status ^T

  Welcome to the OpenBSD/amd64 6.3 installation program.
  (I)nstall, (U)pgrade, (A)utoinstall or (S)hell?

Hit i to install.

4. Installation

Hit enter except for the various points listed below.

  System hostname? myhostname

Upon DHCP, for convenience note the IP address given:

  em0: bound to from (dc:53:12:34:56:78)


  Password for root account?
  Setup a user? myusername
  Password for user myusername?

I have an SSD mSATA in it, so I choose

  Which disk is the root disk? sd0
  Use (W)hole disk MBR, whole disk (G)PT, (O)penBSD area or (E)dit? w
  Use (A)uto layout, (E)dit auto layout, or create (C)ustom layout? c

I don't want a /tmp mountpoint: I am planning to have a ramdisk instead of
trashing the SSD with /tmp writes.

I don't want a /usr/X11R6 mountpoint: no graphics hence no X server.

In the end my layout looks like:

  > p g
  OpenBSD area: 64-488392065; size: 232.9G; free: 0.0G
  #                size           offset  fstype [fsize bsize   cpg]
    a:             1.0G               64  4.2BSD   2048 16384     1 # /
    b:             4.2G          2097216    swap
    c:           232.9G                0  unused
    d:            12.0G         10943808  4.2BSD   2048 16384     1 # /var
    e:             2.0G         36114112  4.2BSD   2048 16384     1 # /usr
    f:            10.0G         40307072  4.2BSD   2048 16384     1 # /usr/local
    g:             2.0G         61271904  4.2BSD   2048 16384     1 # /usr/src
    h:           195.0G         65464896  4.2BSD   4096 32768     1 # /home
    i:             6.7G        474399424  4.2BSD   2048 16384     1 # /usr/obj


  > w
  > x

Hit enter until

  HTTP Server?

Pick one from -- since I am in Berlin, I

  HTTP Server?

And deselect the X-server and games sets:

  Set name(s)? -x*
  Set name(s)? -game*
      [X] bsd           [X] base63.tgz    [ ] game63.tgz    [ ] xfont63.tgz
      [X]        [X] comp63.tgz    [ ] xbase63.tgz   [ ] xserv63.tgz
      [X] bsd.rd        [X] man63.tgz     [ ] xshare63.tgz

Some download is going on ... then:

  What timezone are you in? ('?' for list) [Canada/Mountain] Europe
  What sub-timezone of 'Europe' are you in? ('?' for list) Berlin

To add the temp-fs for /tmp, first look at the current fstab:

  Exit to (S)hell, (H)alt or (R)eboot? [reboot] s
  # cd mnt/etc
  # cat fstab
  585e0fccb0738bda.b none swap sw
  585e0fccb0738bda.a / ffs rw 1 1
  585e0fccb0738bda.h /home ffs rw,nodev,nosuid 1 2
  585e0fccb0738bda.e /usr ffs rw,nodev 1 2
  585e0fccb0738bda.f /usr/local ffs rw,wxallowed,nodev 1 2
  585e0fccb0738bda.i /usr/obj ffs rw,nodev,nosuid 1 2
  585e0fccb0738bda.g /usr/src ffs rw,nodev,nosuid 1 2
  585e0fccb0738bda.d /var ffs rw,nodev,nosuid 1 2

Append to the fstab by entering

  # cat >> fstab
  swap /tmp mfs rw,nodev,nosuid,-s=500M 0 0

and then hit ctrl-d to exit the 'cat'. Finally:

  # reboot

Now the APU should come up and open an sshd on the local network. Notably, root
login has been switched off by default:

  laptop$ ssh myusername@
  # su

My APU will be reachable by the public internet, I want to only permit ssh
public/private key login:

  # vi /etc/ssh/sshd_config
  PermitRootLogin no
  PubkeyAuthentication yes
  PasswordAuthentication no
  ChallengeResponseAuthentication no

Check that the tmpfs worked out:

  # mount
  sub# mount
  /dev/sd0a on / type ffs (local)
  /dev/sd0h on /home type ffs (local, nodev, nosuid)
  /dev/sd0e on /usr type ffs (local, nodev)
  /dev/sd0f on /usr/local type ffs (local, nodev, wxallowed)
  /dev/sd0i on /usr/obj type ffs (local, nodev, nosuid)
  /dev/sd0g on /usr/src type ffs (local, nodev, nosuid)
  /dev/sd0d on /var type ffs (local, nodev, nosuid)
  mfs:91979 on /tmp type mfs (asynchronous, local, nodev, nosuid, size=1024000 512-blocks)

Install full vim:

  # pkg_add vim
  Ambiguous: choose package for vim
  a       0: 
          1: vim-8.0.1589-gtk2
          2: vim-8.0.1589-gtk2-lua
          3: vim-8.0.1589-gtk2-perl-python-ruby
          4: vim-8.0.1589-gtk2-perl-python3-ruby
          5: vim-8.0.1589-no_x11
          6: vim-8.0.1589-no_x11-lua
          7: vim-8.0.1589-no_x11-perl-python-ruby
          8: vim-8.0.1589-no_x11-perl-python3-ruby
          9: vim-8.0.1589-no_x11-python
          10: vim-8.0.1589-no_x11-python3
          11: vim-8.0.1589-no_x11-ruby
  Your choice: 5
  vim-8.0.1589-no_x11:libiconv-1.14p3: ok
  vim-8.0.1589-no_x11:gettext- ok
  vim-8.0.1589-no_x11: ok

And the rest is an exercise for the reader...

Unfortunately I haven't found out yet how to enable the TTL serial console on
J4. If you know how, drop me a note. Thanks!
login 2020-01-14 18:50