My history with OpenBSD

I received an e-mail asking me how I got started with OpenBSD, so I thought I'd write the answer here in case anyone else wanted to read it.

I started using OpenBSD in 1998 (version 2.3 or 2.4) to host a BBS that I was running. I chose OpenBSD because of its security record and because I was getting fed up with Linux (Slackware) at the time. I think the machine was a Pentium 75 or something, and OpenBSD worked quite well on it. During the course of building the BBS, I had to install some 3rd party software, so I got interested in OpenBSD's ports system to make installation of that software cleaner. I submitted some ports to the ports@ mailing list and got them committed by other developers. I tested others' ports and supplied feedback where I could. I hadn't done much unix development back then, so writing simple makefiles for ports was an easy way to get involved.

Continue reading 1,175 words...


I started working on an ACPI driver this evening to make my ThinkPad X61 work better under OpenBSD. I just finished it and so far it matches on the IBM0068 ACPI HID device, checks it for the appropriate version, enables the Bluetooth device (which is required before the hardware toggle switch can power it on and let the ubt0 device show up), and sets up a callback to run whenever a special button (e.g., Fn+F[1-9], brightness, ThinkLight, etc.) is pressed. I'm pretty sure it will work on most other ThinkPads but I haven't tried it on my X40 yet.

I mapped out all of the events that get generated, which on my X61 Tablet include the screen rotating around, the lid opening and closing, and even the pen being ejected from its little slot. When the brightness buttons (Fn+Home and Fn+End) are pressed, it sends a CMOS command through ACPI to actually adjust the screen brightness accordingly, so now it's working just like my X40 did on its own. Being able to turn the brightness down when on battery is the main reason I wrote this.

Continue reading 401 words...

November 24th, 2007

Friday afternoon I decided to install a package on one of my OpenBSD servers, but it was from a recent snapshot and the snapshot I was running on the server was too old to run it. No problem, I'll just upgrade the server. a usually quick task; just drop a new kernel into /, reboot, untar the new disk sets over /, run mergemaster and reboot again.

Remotely rebooting servers that are 350 miles away is always a nerve racking experience. You reboot it, your SSH connection drops, you start a ping waiting for it to reply as you visualize it booting up and thinking about how long each piece usually takes. Occasionally something takes longer than normal and you start to panic, but before you reach whoever you need to reach, it starts responding and suddenly a wave of relief comes over you and you resume your work.

Continue reading 1,638 words...

June 27th, 2007

I bought a Sharp Zaurus and put OpenBSD on it with the intention of making a lap timer for my car. I tried to use this timer on my Treo in my R32, but it's so buggy and would crash the phone all the time, and trying to reboot a phone while racing around a track is not something I'd recommend.

There are of course some commercial timers but they are expensive and usually require a laptop running windows to be able to see the gps-acquired data. What's the fun in that?

Continue reading 885 words...


We're coming out with a managed firewall product at work that is basically an OpenBSD machine running pf that supports VPNs and all the usual malarkey.

An issue we run into a lot with our hosted PBX service is that some customers have networks with firewalls that cause problems with TFTP, SIP, latency, etc. It makes diagnosing problems harder and often the customers think the problems are with our phone system when they're really with their firewall. So if they get our firewall, we know everything will work and we'll have the ability to change things if something doesn't work.

Continue reading 594 words...

October 3rd, 2004

Finally committed my nvram driver. I have my tpb port ready but since i made the /dev/nvram device owned by group kmem and mode 440, tpb has to run setgid kmem which might not fly so well. I looked at the code and I don't see any easy way to drop privileges since it has to open /dev/nvram, read it, and close it every time it polls. I'll post it to ports@ and see what people have to say.

tpb makes no mention of how the permissions should be handled and Linux's NVRAM driver is 640, owned by root.root. Maybe tpb needs privsep. Ugh.

June 6th, 2004

Since I've gotten my X40, I've been conversing with markus@ about OpenBSD support since he also owns one. I've since ported a driver for the TCPA/TPM security chip and one thing I always wanted to do was hook into the blue "Access IBM" button to run xautolock -locknow for one-touch locking. The tpb program can hook into this button on Linux, but all of the work is handled by an NVRAM driver in the Linux kernel. Apparently the X40's BIOS toggles various bits in the CMOS RAM (NVRAM) when certain buttons are pushed, like the volume buttons, ThinkLight, and of course, the blue "Access IBM" button.

Last night I started looking into making an NVRAM driver for OpenBSD, which turned out to be relatively easy, since the i386's clock code already has functions for reading and writing to the NVRAM. I put together a simple driver to provide user-land read-only access to the NVRAM through a /dev/nvram device:

Continue reading 322 words...

May 22nd, 2004

This morning, I woke up early and stumbled over to the computer. My VT510 was blank, which is never good. It either means I lost power or is down. I hit a key and see this scrolled over and over:

Which all stop at around 5:30. sd1 is the new /mirror drive which I just upgraded to a month or so ago. After a shower I went to DLS with the old /mirror drive to bring the server back up, but my keycard wouldn't open any of the doors at the NOC. Maybe i'm being fired…

Continue reading 342 words...

January 4th, 2004

I gave up on making the kernel emulate right-clicking from the keyboard since X11 already has all of this built in. Someone on the ppc@ list hinted at binding PointerButton2 and Pointer_Button3 with xmodmap.

This is basically what I'm using now, to have middle and right mouse buttons through the Apple/flower key and the square 'Enter' key, respectively:

Continue reading 89 words...

December 18th, 2003

Someone on the ppc@ list posted about a CVS tree containing drivers for a lot of macppc hardware that hasn't been committed to NetBSD yet. I took his snapper and i2s drivers and whacked them into shape to link into OpenBSD. The snapper0 and audio0 drivers attach, but the kernel panics in the DMA code when trying to play audio.

My iMic finally arrived, so I kind of stopped working on making the internal snapper work. With functioning sound, I've been able to boot into OpenBSD at work. konq-e sucks, though, but Mozilla doesn't work so I'm stuck with it for now.

December 7th, 2003

So now that X works on my PowerBook, I've been running OpenBSD when I get home from work to continue making other things work so I can eventually run OpenBSD all the time. The awacs audio driver seems to be for older chipsets and doesn't support the new "snapper" chip on my machine, so I'll need to port something from Linux or use an external USB audio system. Neither sound appealing.

While playing around in OpenBSD, I've found the keyboard to be very annoying. At random times a key will appear to be stuck and continue repeating until some other keys are mashed to get it to stop. I was rdesktop'd into a Windows machine when this happened with the Enter key, so after clicking on the Start Menu, it immediately selected "Shut down" and then hit Enter on the confirmation screen. Luckily the drop down was on "Reboot" and not "Shut down"

Continue reading 438 words...

December 1st, 2003

I finally got X working on my PowerBook!

After reviewing Linux kernel and XFree86 code for weeks, hacking the hell out of radeon_base.c adding random debugging everywhere, searching mailing lists for clues, and lots of guessing, I finally did the make && startx that resulted in a clean display coming up.

Continue reading 164 words...