Failing to install OpenBSD 7.1 on Oracle Cloud Infrastructure

Oracle Cloud Infrastructure (OCI)§

sigh

Every major (Internet) Company has something with "Cloud" in its portfolio nowadays. Oracle is - of course - no exception.

I've never heard of their OCI until recently and only because they offer FREE STUFF!!

Their [Free Tier] includes quite a bit of resources, of the current offering, the most relevant to me are the following:

  • Two AMD Compute VMs
    • 1/8th OCPU, 1 OCPU is "2 vCPU", so you'll get a quarter of a Thread? Whack.
    • 1GB RAM.
    • 0.48Gbit/s networking... ???
  • Arm-based Ampere A1 cores and 24 GB of memory usable as 1 VM or up to 4 VMs with 3,000 OCPU hours and 18,000 GB hours per month
    • tl;dr: that comes down to the following:
      • 1 VM with 4 A1 cores and 24GB RAM.
      • 2 VMs with 2 A1 cores and 12GB RAM.
      • 4 VMs with 1 A1 core and 6GB RAM.
  • 2x Virtual Cloud Networks
    • Basically switch/router combinations.
    • Site to Site VPNs with IPSec.

Not sure if that's gonna last, but it's interesting enough to not pass up.

Keep in mind that - for now - this experiment failed and it caused me suffering. Lots of it.

Attempted OpenBSD Installation on x86_64 Instances§

Right, so the lower spec x86_64 instances are still useful for a bunch of things. Small websites, maybe a mail server. Anyhow, I'm not keen on using Oracle Linux (but maybe Solaris...), so I attempted to get OpenBSD running on it instead.

Creating the Install Image§

I started with the following:

  • OpenBSD's install71.img
  • An OpenBSD machine with qemu package installed.
  1. Get the install71.img to the OpenBSD machine in a directory of your choice and cd to it.
  2. Set up vnd0 device with install71.img and mount its root partition.
vnconfig vnd0 install71.img
mount /dev/vnd0a /mnt
  1. Set up the serial port in boot(8)
printf "stty com0 115200\nset tty com0\n" >> /mnt/etc/boot.conf
  1. Unmount and detach vnd0 device.
umount /mnt
vnconfig -u vnd0
  1. Convert install71.img to qcow2 image with qemu-img.
qemu-img convert -O qcow2 install71.img install71.qcow2

Tada! You have an OpenBSD install image with serial connection enabled. Easy, right?

Creating a Custom Image on OCI§

And here the pain starts. But don't worry, you'll ease into it with this step.

  1. Create an Object Storage Bucket if you don't have one. I named mine OS. It's under Storage -> Buckets.
  2. Upload your created install71.qcow2, I prefixed it with amd64 for clarity.
  3. Go to Compute -> Custom Images and click Import Image. I named it OpenBSD 7.1 (amd64). Choose the object name for the install71.qcow2 you just uploaded, select QCOW2 and Paravirtualized Mode.
  4. Wait a long time. In my case it took a little over 10 Minutes. Get a coffee.

You're stuck with BIOS boot, by the way. Whatever.

Create a Virtual Cloud Network§

This is where the urge to burn it all down started to grow.

To save you some pain, I recommend first creating a VCN, because the creation of it during the instance creation just sucks. Why? You can't really choose the subnet. Or enable IPv6.

  1. Go to Networking -> Virtual Cloud Networks.
  2. Create a VCN. Name it. vcn-01 was my choice. Creative, I know.
  3. Pick a rather big IPv4 subnet, like a /16 as recommended in the example text. That'll let you change the second octet as compared to the instance creation wizard.
  4. Tick Assign an Oracle allocated IPv6 /56 prefix and confirm.
  5. Click on the newly created VCN.
  6. Click create Subnet, give it a name.
  7. Enter the smaller subnet contained within the earlier one. A /24 for example.
  8. Tick Assign an Oracle allocated IPv6 /64 prefix and confirm.
  9. Click on Internet Gateways and create one. You have to give it a name once again.
  10. Click on Route Tables and select the default.
  11. Add two Route rules, one IPv4 for 0.0.0.0/0 and one IPv6 for ::/0, both pointing to an Internet Gateway. Select the one you just created.

Honestly, this couldn't be more clumsy. In the end you end up with 1:1 NAT for your public V4. And V6 needs more steps, later.

Create an Instance§

Time to actually create the instance you wanted in the first place.

  1. Go to Compute -> Instances.
  2. Create a new Instance. Name? I named mine fux86-01.
  3. Click Edit on Image and Shape. Select Change Image.
  4. Change Image Source to Custom images. Select your custom image and confirm.
  5. Networking should automatically select the VCN and subnet you configured earlier. But who the fuck knows? Double check.
  6. Select No SSH keys because it does not know how to put it there, anyway.
  7. Under Advanced Options at the bottom, disable Oracle Cloud Agent because it doesn't work.
  8. Confirm and wait. Doesn't take that long, but get something alcoholic, perhaps?
  9. Click on Attached VNICs and select the only one.
  10. Click IPv6 Addresses and Assign IPv6 Address. It'll show you a weird form where you can complete a half typed V6 address, I entered :10. If you don't, you'll get something random.
  11. Get back to the instance and click Console Connection and Launch Cloud Shell because Oracle:
  • Didn't understand how Host Key Identification works, rotates keys "regularly" and tells users that if they get a Host key verification failed to just remove the offending key. Don't trust me? Making a Local Connection to the Serial Console. Idiots.
  • Launch Cloud Shell spins up more virtual machines and costs Oracle money.

You'll be greeted with the installer. You can run through it, hostname, networking, etc..

However, you'll end up at the point where you're supposed to select the disk.

There won't be one.

Failure§

I first tried the Paravirtualized Mode. Networking worked fine, but disk didn't. The scsibus0 at vioscsi0 should have the boot disk - which boot(8) successfully boots from by the way - but the kernel does not find it.

I attempted again with Emulated Mode, which gives me IDE instead. It, too, does not get found by OpenBSD.

No boot disk. No boot disk, no installation.

There is a Patch That Fixes The Missing Disk in Paravirtualized Mode, but it hasn't been applied and is over a year old by now. Yuck. I tried applying it anyway, it dnd't work. Updating it seems like a lot of work at least for me, given that I don't know my way around the scsi subsystem of OpenBSD.

Summary§

This failed. I couldn't get OpenBSD installed.

Honestly, the whole experience was very painful. The UX sucks.

I can't complain about the price of free. But I should send Oracle a bill for wasting my time.