The BSD Desktop: Better late than never
About the interruption in the CFT schedule: His name is Oliver, he is just over 20 months old and he is delightful.
As for happiness... I have had some time to think about this.
Just under twenty-four years in fact. That's how long it's been since I sat down at my first 4.3BSD system in college, January of 1991. Latvia was not free yet. Neither FreeBSD, NetBSD nor OpenBSD existed yet. Nor Linux, nor the Web. Things were simple though: Workstation and PC hardware was slow and expensive and there were few Unix options at any price. Coherent Unix from the Mark Williams Company was perhaps the closest thing to what anyone wanted on PC hardware at a reasonable price and I was delighted to hear that Bradley Kuhn of the Software Freedom Conservancy also ran it "back in the day". I knew things could be better but I had no idea how. I knew Unix was the "native" computer operating system but had zero grasp of software freedom or the completeness and elegance of the Unix Philosophy (Gancarz, 1994).
So I wandered. I paid too much for UnixWare with the SDK. I bought a Sun 386i. I lusted after NeXTStep. I tried Linux. I avoided learning vi. I waited and above all, I gradually learned to shut up and listen because while each Unix camp was right about something, they generally got quite a few other things wrong. If I had my way, I would have booted all of the available OSs on a single computer simultaneously so I could make an informed choice after careful comparison. Crazy talk!
Little did I know at the time, all I wanted was BSD Unix, Packet Filter, OpenZFS and bhyve. Today's it's OpenBSD on the WAN and FreeBSD on the LAN plus "other" for fun or profit. While that's easy to say, it's actually quite easy to achieve and here's how:
Server-side, OpenBSD does just about everything I want using built-in daemons. Freedom from GMail will take more time but I suspect that the answer lies in OpenSMTPD, spamd and Dovecot.
Client-side, Lenovo had a brief moment of enlightenment when it produced the Sandy Bridge-based *2* series: The T420, T520 and X220. They have traditional giant-ESC-key-for-vi keyboards and support EPT for bhyve and up to 16GB of RAM. I opted for a T420 with Nvidia graphics for equal amounts of Intel graphics support and FreeBSD-friendly Nvidia support which allows for suspend and resume. The T-series includes the wonderful UltraBay expansion bay and WOAH, coreboot support is beginning to arrive on these models. The T410, T510 and X201 predecessors may fill the same niche but I have yet to confirm this. The one annoyance with the T420 is that it needs a small hack to support GPT partitions on FreeBSD but I have learned to perform it from memory. That all said...
I like to joke that every bug in FreeBSD is "fixed in HEAD" and to some degree this is true. Running FreeBSD HEAD was traditionally only for the daring but my bhyve work has forced me to find a strategy for doing it. I have been spoiled by PC-BSD but really need to test vmrc on the FreeBSD 10.1 pre-releases. Fortunately, the wise people at the FreeBSD Foundation have decided that having a paid release engineer is a good thing and benefits of this decision are really starting to show.
To begin with, things happen on time. The default schedule of open source is "when we get around to it" but some things are really nice when kept on track. OpenBSD set this standard and I can't think of any commercial vendor that can compete with their track record. Another benefit of FreeBSD's paid release engineer is completeness: snapshots include packages and there are now virtual machine images for popular hypervisors including bhyve. Together, these factors have turned my "fresh" system configuration to a matter of minutes. Specifically:
The ThinkPad UltraBay allows me to have two internal hard drives at any given time. At the moment, one of these runs a recent FreeBSD 11-CURRENT snapshot and the other a 10.1 pre-release. I install each respective OS with a
memstick image and mount the other, active drive to copy over my data and configuration files, all of which are backed-up on a FreeNAS box:
zpool import -f -o altroot=/mnt freebsd10
With the "other" OS mounted, I copy over my home directory, my
/usr/local/vmrc/ and drop a few configuration files into place:
/etc/rc.conf – for the "hald" and "dbus" settings
/boot/loader.conf – for the Nvidia load setting
/etc/X11/xorg.conf – for my Xorg configuration and
~/.xinitrc – to launch XFCE correctly with
To this I add the packages I need:
nvidia-driver plus whatever I need for the project I am working on.
Now for the happy part: with a reboot, this will come up with a terminal until I type
startx . From there, XFCE will do some simple but delightful things:
Much of what I do involves the bhyve and iSCSI kernel modules and when these go south, they go south hard. Kernel panics are never fun but with ZFS taking care of file system integrity and XFCE keeping track of my desktop session, the occasional reboot is simply a great reason to get up and take a short break.
This all took time but this makes me very, very happy and productive.
A handful of developers stand out for making this all work so smoothly:
Copyright © 2011 – 2014 Michael Dexter unless specified otherwise. Feedback and corrections welcome.