The Setup
Since I will never be interviewed for The Setup, I have interviewed myself.
Update Feb 2015: Okay, I was interviewed for The Setup.
Update Feb 2023: I have a What I Use page that I keep up to date with my current setup.
Since I will never be interviewed for The Setup, I have interviewed myself.
Update Feb 2015: Okay, I was interviewed for The Setup.
Update Feb 2023: I have a What I Use page that I keep up to date with my current setup.
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.
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.
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.
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?
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.
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.
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:
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 rt.fm 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…
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:
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.
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"
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.