NetBSD 10 proves old tech can still kick apps and take names three decades later
Proper old-school Unix, not like those lazy, decadent Linux types
FOSDEM 2024 NetBSD 10 marks a new level of maturity for this venerable open source Unix system, which somehow manages to be both modern and retro at the same time.
By our reckoning, including the minor point releases, NetBSD 10.0 is the 71st release of the NetBSD operating system. By the project's own measures, NetBSD 10 is the 18th major release. In other words, this is a significant release of a mature OS.
Among the highlights are improved SMP performance, faster virtual memory, an improved scheduler, which is aware of performance and efficiency cores, much improved cryptography and security including WireGuard VPN support and support for ARMv8-A security features, and wide-ranging improvements to the system's code sanitizers, testing, and QA.
NetBSD 10's default graphical environment is the very retro Ctwm, but it's quick and it works – click to enlarge
In a modest way, the team has been celebrating, including a talk at this year's FOSDEM conference in Brussels, which The Reg FOSS Desk attended – NetBSD 10: Thirty years, still going strong! – complete with a Google Slides deck. In the talk, NetBSD developer Benny Siegert made several points, including that although NetBSD 0.8 came out in April 1993, work on BSD itself started in 1974, making the project as a whole 50 years old.
NetBSD is the oldest of the BSD projects, and in some ways sticks closest to the original. It supports a remarkable number of active "ports." This is NetBSD's term for the different types of computer it can run on: eight "tier 1" first-class supported platforms, plus another 47, which are also at version 10. One of the project's mottos is "Of course it runs NetBSD!" and that's fair – there's no other OS in the world that runs on so many different architectures and platforms.
Siegert's talk addressed many of NetBSD's strengths and weaknesses compared to Linux, and for an overview, we recommend at least reading the slides. We were struck, though, by how one question caught him without a ready answer: "Why choose NetBSD instead of FreeBSD?" He hesitated before suggesting that the community of NetBSD users and developers was smaller and friendlier, and thus more welcoming than the larger FreeBSD community. He clarified to The Reg that what counts is:
the amount of contribution opportunity. In a smaller project and community, it is easier to find stuff to contribute to, and to find a place in the community as a contributor. By contrast, if the community is like a well-oiled machine, it may be hard to even find an angle where your contribution could be helpful.
We also spoke with kernel developer and release engineer Martin Husemann, who noted a fringe benefit of the extended release process for version 10:
As a bonus we (mostly by accident and because it was simple) got support for the Nintendo Wii added to the evbppc
port.
His take on the inter-BSD comparison surprised us. When we suggested that one comparison was wider hardware support than FreeBSD but comparable to OpenBSD, he said:
The waters get blurry there – it used to be a much simpler thing, but nowadays, FreeBSD is a lot more portable than it used to be (probably mostly thanks to the OS X and related work by Apple), and OpenBSD has changed a lot too (and is diverging from NetBSD further). We at NetBSD of course do not believe the OpenBSD tale about their security focus and consider NetBSD at least as secure (with less voodoo) – but that is hard to demonstrate or verify on a technical level.
Taking it for a spin
The last time we looked at NetBSD, we checked out version 9.3 by installing it in VirtualBox. Emboldened by the familiarity gained in this experience, we decided to try the new version on bare metal. We thought it would be a fair comparison to use the same testbed as we did for OpenBSD 7.5 last week, a venerable Thinkpad W500, a fairly fast Core 2 Duo machine with an ATI Mobility FireGL V5700 GPU, maxed out with 8 GB of RAM and a 256 GB SSD. This isn't a powerhouse anymore, but we hoped that its older hardware would be well supported, and previously it's proved surprisingly responsive with Haiku beta 4 and Alpine Linux 3.18.
It's more than four years since NetBSD 9.0 appeared, and indeed we were pleased to find that some of our niggles we experienced in the preceding release have gone away. The cursor keys worked as we expected, including on the text console. NetBSD fails to boot from a Ventoy USB key, but written to a key of its own it worked fine. The installer brought up Wi-Fi perfectly first time – more than OpenBSD could until it could fetch the firmware over Ethernet.
The installer continues to be cumbersome. It's aimed at lowest-common-denominator hardware so it's mostly controlled by pressing letters and numbers (we guess because not all terminals have cursor keys). We couldn't work out how to reformat the empty 32 GB FAT32 primary partition that we'd left ready, although OpenBSD did that no problem. We couldn't even find a way to just delete it. In the end, we rebooted into Linux and deleted it from there.
NetBSD happily created a partition for itself in the resultant gap, although it insisted on asking us about cylinders, heads, and tracks, none of which our SSD possesses. The installer created its own sub-partitions in its new primary partition, and installed itself into those.
We only tripped over one thing. We didn't want to put the NetBSD bootloader in the MBR. As well as OpenBSD, this machine already has Windows XP64, Q4OS, and Bodhi Linux on it. Trying to avoid overwriting GRUB meant that we got no NetBSD bootloader at all. There was no obvious option to put it into the root partition, as in OpenBSD. We rebooted, did an in-place upgrade (meaning from 10.0 to 10.0, with all package sets turned off), and this time accepted the default bootloader option. It worked fine, and installed NetBSD's own bootloader to the root partition as we wanted. If you are dual-booting with Linux, then just as with OpenBSD on the same machine, you need to chainload
the NetBSD bootloader from GRUB – for example, here's how to do it from Ubuntu.
This time around, we knew that after the install, we had to remain in the sysinst
program a little longer and complete some more steps, which meant that by our first reboot, we had a working package manager, configured with online repositories, a hostname, and so on. The experience was much smoother, and on our first boot, we got a graphical login screen and a "lightweight and fairly minimal window manager." We experimentally installed a couple of small tools such as htop and neofetch. Everything just worked so we went for something bigger:
pkgin -y install firefox
- After delay due to xz, Ubuntu 24.04 'Noble Numbat' belatedly hits beta
- OpenBSD 7.5 locks down with improved disk encryption support and syscall limitations
- GCC 14 dropping IA64 support is final nail in the coffin for Itanium architecture
- PumpkinOS carves out a FOSS PalmOS-compatible runtime environment
That worked too, albeit not quite as we expected. We got a nightly build, rather than the latest release 124, and it pulled in some unexpected dependencies such as Python 3 and Wayland – although NetBSD doesn't support Wayland. These things seem unrelated to Firefox, and we're strongly reminded of Poul-Henning Kamp's classic essay, A Generation Lost in the Bazaar.
Adding other relatively substantial packages, such as Abiword, Gnumeric, VLC, or even the MATE system monitor, worked much the same. We also installed Xfce, using the same outdated guide we used for NetBSD 9.3. Everything we tried worked fine, and Xfce gave us a more familiar, flexible environment, with luxuries such as adjustable font sizes.
NetBSD 10 is a fascinating contrast with modern Linux. It works well. For instance, our Thinkpad's sound chip and ATI GPU were detected, and the radeon
driver was installed automatically. Some of the rough edges we saw in 2022, such as cursor keys and packaging tools, seem to have been smoothed out.
It's somewhat smaller than a lightweight Linux, but not massively so. While the default install only took a few gigabytes, with Xfce, Firefox, and a few apps, it took 7.1 GB. In a Ctwm window, only 189 MB of RAM were in use, which is pretty good – but in an Xfce terminal window, that went up to 433 MB. We didn't attempt to benchmark it, but under Xfce, it feels comparably responsive to the lightweight Linux distros on the machine.
NetBSD is more of a traditional Unix-style experience than modern Linux. By default, even with a modern Linux desktop like Xfce installed, there are no graphical tools for things like network connections, sound settings, or package management. Although NetBSD does have its own hypervisor, NVMM, you won't find modern features like containers in the standard repositories.
NetBSD is bigger and arguably more complete than OpenBSD. Although both OSes offer a CD-sized installation ISO, NetBSD also has a USB installation image, which is 2.62 GB in size – but includes things like Wi-Fi firmware. This also means a quicker installation as packages are local so it pulls less from the internet.
The package selection in OpenBSD is noticeably more rigorous, but there's a price to pay for being so selective. For instance, NetBSD supports Bluetooth, while OpenBSD doesn't. We suspect that many people would consider that an acceptable price for seeing some possibly extraneous stuff in package dependencies. NetBSD also offers optional support for ZFS, although an older version than in FreeBSD, but including somewhat preliminary support for root on ZFS.
There are various reasons to try NetBSD. It's a shoo-in for old but still capable hardware that's no longer supported by its vendor or by modern Linux, such as older RISC computers (PowerMacs or SPARC machines, say). And, remember, soon this will include 32-bit x86 hardware as well.
It's also a good choice if you want to improve or broaden your Unix skills. Linux is mainstream now, but a lot of older Unix machines still lurk inside big businesses; others hold the internet together. If you want to learn how low-level operating systems internals work – or how to work in a community-driven development project – then nothing beats getting a command-line-driven OS running on bare metal. VMs are no substitute.
In the BSD world, there's a spectrum. FreeBSD is relatively mainstream, feature-rich, and mainly supports modern or recent hardware, with containers, virtual machines, and close integration with ZFS. Dragonfly BSD is experimental and x86-64 only. OpenBSD is almost extremist, with a ruthless approach to clean code and secure design, even if that means dropping entire areas of functionality such as Bluetooth.
NetBSD sits in the middle. It is a relatively small, clean, and simple OS. Smaller than FreeBSD, but more feature-complete and less rigorous than OpenBSD. Even so, all of them are modern OSes, with modern browsers and so on. All of them are smaller, cleaner, and simpler than modern Linux. Even so, and despite a bias towards server stuff, all are able to be used as full desktop OSes. They're not as experimental and restrictive as Redox OS or 9Front. As Linux continues to drown in code, it's good to know there is still a safe refuge. ®