OpenBSD Archive

Compiling an OpenBSD kernel 50% faster

This is approximately as wise as taking off from Mars in a ragtop rocket, but don’t worry, the math all checks out. My theory is that compiling less code will be faster than compiling more code, but first we must find the code so we know not to compile it. This is vital information to know in your day-to-day computing life.

OpenBSD 7.1 released

OpenBSD 7.1 has been released. The biggest improvement in this point release is support for Apple Silicon, which is now ready for general use. Of course, there’s a lot more in this new release, so head on over to the changelog to get all the details.

OpenBSD 7.0 released

OpenBSD 7.0 has been released, and it seems a big focus for this release was improving ARM64 support, and adding support for RISC-V. There’s a long list or other improvements and fixes, too, of course. Downloads are where they always are.

Recent and not so recent changes in OpenBSD that make life better

Known to be “functional, free and secure by default”, the OpenBSD operating system has played an important role in open source for more than a quarter century. It has also been fairly central to what I have done for the last two decades and some. What follows is my personal view of what life with OpenBSD has been like, with an emphasis on moments and developments that I feel made life, or at least my life, better. Good article about an operating system that seems to just do its thing, and do it well.

The state of toolchains in OpenBSD

For most of the 2010s, the OpenBSD base system has been stuck with GCC 4.2.1. It was released in July 2007, imported into the OpenBSD source tree in October 2009, and became the default compiler on the amd64, i386, hppa, sparc64, socppc and macppc platforms in OpenBSD 4.8, released in November 2010. As specified in the commit message during import, this is the last version released under the GPLv2 license. OpenBSD was not the only operating system sticking to GCC 4.2.1 for licensing reasons, FreeBSD did the same, and Mac OS X as well. As a general rule, and this is not OpenBSD specific, being stuck with old compilers is problematic for several reasons. It seems most platforms OpenBSD supports now come with modern, up-to-date toolchains.

OpenBSD 6.9 released

OpenBSD 6.9 has been released. This release focuses a lot on improving support for certain platforms, such as powerpc64 – mainly for modern POWER9 systems such as the Blackbird (which we reviewed late last year) and Talos II (which I have here now for review), arm64, and preliminary support for Apple’s ARM M1 architecture. There is way, way more in this release, of course, so feel free to peruse the release notes. On a related note, I recently bought an HP Visualize C3750 PA-RISC workstation, and it’s been pretty much impossible to get my hands on a proper copy of HP-UX 11i v1 that works on the machine. As such, in the interim, I installed OpenBSD on it, and it’s been working like a charm. I still need to set up and try X, but other than that, it’s been a very pleasant experience. Effortless installation, good documentation, and user friendlier than I expected.

OpenBSD 6.8 released

OpenBSD has marked its 25th birthday with a brand new release – OpenBSD 6.8. One of the major new features is support for 64bit PowerPC processors – POWER8 and POWER9 specifically, and the Raptor Computing Systems Talos II and Blackbird platforms in particular.

Rethinking OpenBSD security

OpenBSD aims to be a secure operating system. In the past few months there were quite a few security errata, however. That’s not too unusual, but some of the recent ones were a bit special. One might even say bad. The OpenBSD approach to security has a few aspects, two of which might be avoiding errors and minimizing the risk of mistakes. Other people have other ideas about how to build secure systems. I think it’s worth examining whether the OpenBSD approach works, or if this is evidence that it’s doomed to failure. I picked a few errata, not all of them, that were interesting and happened to suit my narrative.

OpenBSD system-call-origin verification

A new mechanism to help thwart return-oriented programming (ROP) and similar attacks has recently been added to the OpenBSD kernel. It will block system calls that are not made via the C library (libc) system-call wrappers. Instead of being able to string together some “gadgets” that make a system call directly, an attacker would need to be able to call the wrapper, which is normally at a randomized location. I understood some of these words.

OpenBSD 6.6 released

Theo de Raadt announced the release of OpenBSD 6.6 on October 17, 2019. Marquee features include a new system upgrade tool, an AMD GPU driver, upgrades to core systems daemons ntpd and smtpd, and other platform improvements.

OpenBSD is now my workstation

Why OpenBSD? Simply because it is the best tool for the job for me for my new-to-me Lenovo Thinkpad T420. Additionally, I do care about security and non-bloat in my personal operating systems (business needs can have different priorities, to be clear). I will try to detail what my reasons are for going with OpenBSD (instead of GNU/Linux, NetBSD, or FreeBSD of which I’m comfortable using without issue), challenges and frustrations I’ve encountered, and what my opinions are along the way. I’ve never managed to really get into the BSDs, as Linux has always served my needs for a UNIX-like operating system quite well. I feel like the BSDs are more pure and less messy than Linux, but is that actually true, or just my perception?

OpenBSD on a laptop

You won't find nearly as many online resources about setting up OpenBSD, because honestly, you really don't need any. Unlike much of Linux and FreeBSD, the included manuals are high quality, coherent, and filled with practical examples. You also need very little third party software to do basic tasks - almost everything you need is well-integrated into the base system.

You'll notice that many features that require toil to achieve on FreeBSD, such as suspend on lid close, working volume buttons, and decent battery life, work out of the box on OpenBSD. You can tell the developers actually use this thing on their personal devices.

And while the official OpenBSD FAQ has all you need to get an installation up and running, it takes a bit of grinding to massage the base installation into a seamless laptop experience. So, I wrote this guide to give you a jump start. Things should just work as long as you have a non-bleeding-edge, semi-mainstream laptop, but ThinkPads are your best bet. Enjoy!

OpenBSD’s unveil()

One of the key aspects of hardening the user-space side of an operating system is to provide mechanisms for restricting which parts of the filesystem hierarchy a given process can access. Linux has a number of mechanisms of varying capability and complexity for this purpose, but other kernels have taken a different approach. Over the last few months, OpenBSD has inaugurated a new system call named unveil() for this type of hardening that differs significantly from the mechanisms found in Linux.

OpenBSD on the Microsoft Surface Go

For some reason I like small laptops and the constraints they place on me (as long as they're still usable). I used a Dell Mini 9 for a long time back in the netbook days and was recently using an 11" MacBook Air as my primary development machine for many years. Recently Microsoft announced a smaller, cheaper version of its Surface tablets called Surface Go which piqued my interest.

Quite a few things don't yet work on OpenBSD, but these first few people who try things like OpenBSD on new Surface devices pave the way for support to improve.

Towards secure system graphics: Arcan and OpenBSD

Let me preface this by saying that this is a (very) long and medium-rare technical article about the security considerations and minutiae of porting (most of) the Arcan ecosystem to work under OpenBSD. The main point of this article is not so much flirting with the OpenBSD crowd or adding further noise to software engineering topics, but to go through the special considerations that had to be taken, as notes to anyone else that decides to go down this overgrown and lonesome trail, or are curious about some less than obvious differences between how these things "work" on Linux vs. other parts of the world.

You know you're getting something good with a preface like this.

New OpenBSD kernel security feature

Theo de Raadt unveiled and described an interesting new kernel security feature: Kernel Address Randomized Link.

Over the last three weeks I've been working on a new randomization feature which will protect the kernel.

The situation today is that many people install a kernel binary from OpenBSD, and then run that same kernel binary for 6 months or more. We have substantial randomization for the memory allocations made by the kernel, and for userland also of course.

However that kernel is always in the same physical memory, at the same virtual address space (we call it KVA).

Improving this situation takes a few steps.