Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
NetBSD Explained: The Unix System That Can Run on Anything (makeuseof.com)
141 points by jayp1418 on Aug 18, 2021 | hide | past | favorite | 71 comments


Linux user here, not NetBSD. My exposure to NetBSD is infinitesimal. But ...

I saw a video on "rump" kernels awhile back. I also heard that Andrew Tanenbaum ported/is porting Minix to NetBSD. NetBSD has an "anykernel" approach which separates the kernel for the drivers. So you can impose your own flavour of kernel on a bunch of pre-written drivers.

This struck me as a potentially mind-blowing win for NetBSD. Why isn't every RTOS, embedded system OS, toy OS,experimental OS etc. based on NetBSD? I don't know the reason for this. Maybe it's part NIH, part open secret that nobody's heard about, and a large part to do with getting over the hump of integration.


Yeah, rump kernel tech seems like it should be taking the world by storm - in particular, it looks to me like NetBSD should be a "universal donor" of drivers to other systems. So for instance, as I understand it, with minimal shims, you should be able to use NetBSD hardware drivers on Linux and Illumos and HURD and Redox and [your hobby project here]. It'd be worse than "native" drivers, but especially for smaller projects it'd save a ton of work.

> I also heard that Andrew Tanenbaum ported/is porting Minix to NetBSD

Kernel, or userspace? Last I paid attention, MINIX 3 used pkgsrc for packages and I think base/coreutils in userspace, but I hadn't heard anything about kernel space. Though, as I mentioned above, it does seem like the obvious way to get drivers for a lot of hardware cheaply, especially if you're already a microkernel.


> with minimal shims, you should be able to use NetBSD hardware drivers on [...] HURD

The Hurd is already using rumpkernel for some servers, e.g. for audio and work is underway for disks.


Not NetBSD, but iirc a lot of the network drivers in Haiku were taken from FreeBSD.


Public release of RUMP predated Docker by at least two years, maybe it was more. I just remember when all the Docker hype began I was thinking "WTF, this is not even half as good." But that's what's different about NetBSD. No hype. To answer the question of why it isn't more widely used, IMO, besides absence of hype, it's lack of hardware support, and comfort among those who use it with notions like DIY and minimalism. Often you have to put in some effort to get some hardware feature to work.1 With Linux, chances are someone else has done that work for you.

1 First time I ever tried NetBSD, the audio did not work on the laptop I was using. I added a couple of lines in a kernel header file, recompiled and voila, I had audio. That simplicity made me want to keep using it.


> I added a couple of lines in a kernel header file, recompiled and voila, I had audio

How did you figure out what to add?


IIRC, dmesg. It was probably pure luck that it worked.


Close to my change to the BTTV drivers for a Conceptronic TV card.

Most of hardware use common devices and chipsets.


> NetBSD has an "anykernel" approach which separates the kernel for the drivers. So you can impose your own flavour of kernel on a bunch of pre-written drivers.

As a NetBSD developer, I don't recognize what you mean by this.


Maybe read this whitepaper:

https://www.netbsd.org/gallery/presentations/justin/2015_Asi...

“ The rump kernel has been used as a way to supply device drivers in other new operating systems, which do not yet have a full set of device drivers. For example, Genode[4] is a framework for building microkernel operating sys- tems using the L4 family of microkernels. Genode uses the rump kernel to provide file system support, so that it does not have to develop its own file systems.”

Here’s a 362 page dissertation on rump kernels which has a netbsd focus:

http://lib.tkk.fi/Diss/2012/isbn9789526049175/isbn9789526049...

There’s also the Wikipedia entry.

https://en.m.wikipedia.org/wiki/Rump_kernel


That isn't how device drivers are used in NetBSD though, it is a different way of compiling them for other targets.


From the white paper published on netbsd.org:

“ An implementation that does this ships with NetBSD, allowing the NetBSD drivers to be run in NetBSD userspace… The first major PCI driver developed was the In- tel Centrino 7260 driver developed for NetBSD and OpenBSD by Antti Kantee. The commit message said “This is probably the world’s first Canadian cross device driver: it was created for OpenBSD by writing and port- ing a NetBSD driver which was developed in a rump ker- nel in Linux userspace.”[13]

Further, just another example, from page 149 in the dissertation is an extended many page discussion of how the rump kernel was used to provide usb support in netbsd.

http://lib.tkk.fi/Diss/2012/isbn9789526049175/isbn9789526049...

“ We implemented a host controller called ugenhc. When the kernel’s device autocon- figuration subsystem calls the ugenhc driver to probe the device, the ugenhc driver tries to open /dev/ugen on the host. If the open is successful, the host kernel has attached a device to the respective ugen instance and ugenhc can return a successful match. Next, the ugenhc driver is attached in the rump kernel, along with a USB bus and a USB root hub. The root hub driver explores the bus to see which devices are connected to it, causing the probes to be delivered first to ugenhc and through /dev/ugen to the host kernel and finally to the actual hardware. Figure 3.24 con- tains a “dmesg” of a server with four ugenhc devices configured and one USB mass media attached.”

¯\_(ツ)_/¯


> ¯\_(ツ)_/¯

UTSL.

The author used rump to develop the drivers, it isn't used to run them in a production NetBSD kernel.


But running on other targets is exactly what people are excited about?


QNX RTOS uses netbsd userspace applications, actually. And a lot of the drivers in QNX are from NetBSD. It’s more properly a “microkernel” which means the drivers run as userspace applications with a defined interface to the kernel for memory maps to underlying hardware.


Are new versions of QNX available on X86?


yes. (newest one might just be x86_64, not 100% sure on that)


> newest one might just be x86_64

This would be weird. I believe 32-bit x86 still is widely used by the target audience.


Some subset, but even there it's waning, especially for new designs. QNX is seems to be not mentioning it explicitly anymore, and I don't remember seeing it in the options last time I looked, but it's very possible that it is still available if necessary.


That's cool, I can emulate 32 if necessary :)

How might one obtain it?


Go there:

http://www.qnx.com/download/group.html?programid=29178

Download:

QNX Software Center

Register a free Non-Commercial/Academic License:

http://www.qnx.com/download/feature.html?programid=51624


I'm guessing, call blackberry and prepare to break your piggybank?


Annnnd please let us know how many limbs you had to sell. I'm actually interested in ballpark numbers for this, as I have very fond memories of QNX as the OS where my 100us timers did fire even under heavy IO, threading churn, etc. I miss that.


> This struck me as a potentially mind-blowing win for NetBSD. Why isn't every RTOS, embedded system OS, toy OS,experimental OS etc. based on NetBSD?

I think it is used a lot as a starting point for porting other OS, but it doesn't necessarily persist.

Supposedly Apple started with NetBSD when porting OS X to x86, not that x86 is exactly esoteric, but NetBSD lends itself to being a starting point. From what I read nothing remains of NetBSD in OSX, the current BSD userland is from FreeBSD but is pretty old still.


Apple Base Station and related firmwares (e.g. Extreme) ran NetBSD.

BSD-based products are more common than believed, but because of the liberal licensing they seem to mostly fly under the radar, not unlike various proprietary options like VxWorks and TRON.


Just to be clear vxworks is not bsd based that I could tell from Wikipedia. I work with Schneider electric plcs and sometimes vxworks errors bubble up.


I think they meant to say that BSD-based stuff is common but unknown to most, and that the same goes for VxWorks and TRON, in that both open source BSD and proprietary solutions have licenses that make their inclusion in other software products not noticed by many people.


Same for Minix3... until someone dug it out of IntelME no one knew it was one of the most ubiquitous deployed OS.


That is super interesting. I will say the package manager (pkgsrc) seems to be very portable as well. It’s default on netbsd, smartos/illumos, and minix, but also available for macOS, Linux, and other operating systems. I use it routinely on smartos and it’s a breeze.


IMO: NetBSD might be superior but the lack of GPL means less work on it is published. The net effect is that everyone puts up with Linux because it actually runs on everything.


>Linux because it actually runs on everything.

Good joke. Linux barely runs on some legacy arches, having to use really old kernels and making a lot of current software useless.

NetBSD just /runs/ new releases on older hardware such as m68k machines with no crazy tweaks.

>but the lack of GPL means less work on it is published.

You realize a lot of the components on the graphics substack on Linux are non-GPL, right? Not just X, but the backends on the kernel.

Also Linux is full of propietary drivers and blobs. Check Linux-Libre's changelog if you don't believe me.


There was a time when NetBSD's portability was impressive. A handful of open source operating systems supported a handful of architectures, then there was NetBSD (and OpenBSD). Then Linux started to look beyond the x86 and started gathering steam on other architectures. NetBSD couldn't really compete for developers and it began stagnating. It probably didn't help that a lot of the "Unix" userspace also became more tightly coupled to Linux.

Don't get me wrong: I was enormously enthusiastic about NetBSD in the mid-1990's and I still prefer the idea of a unified core OS. The thing is, it's a lot easier to deal with one operating system than multiple. If you're developing under Linux, it's going to be easier to develop code for an Arm based system under Linux because it defines your expectations.


Linux probably supports more platforms these days. But it often requires vendor-specific kernel forks, specific distributions, etc. NetBSD is impressive because it can be (cross-)compiled for many systems using the stock distribution without much effort (build.sh script).

Disclaimer: I haven't used or looked at NetBSD since 2006-2007 or so, but I think this is still accurate.


This. Linux under ARM is a nightmare, NetBSD for ARM it's just a single distribution per subarch.


Linux doesn't even properly work on legacy non-x86 devices. NetBSD for m68k runs much better than GNU/Linux.

EDIT: Downvote me if you want, but the reality is that hard.

You have to use specific distros and hard patches to get things running well. For example under PPC32 there's no support for common distros.

Don't let me start on Mips, Sparc or Alpha, where NetBSD runs on it just fine.


Linux is just a Kernel NetBSD is a System.


There are BSD clones for smallish (small memory or even no real memory management unit) systems - RetroBSD and LiteBSD: http://retrobsd.org/wiki/doku.php , https://github.com/sergev/LiteBSD/wiki .


I always read about NetBSD fantastic portability. I wonder though, in practice, is there any hardware that NetBSD supports that Linux doesn't?


VAX

https://en.m.wikipedia.org/wiki/VAX

In fact I’m pretty certain NetBSD is the only modern OS that still has an active VaX port. OpenBSD used to I believe, but no longer. Not even newer OpenVMS runs on the platform.


Indeed! Linux on VAX effort seems to only have traces on the internet until 2001 (which is apparently one year after VAX was discontinued by its maker).

I'm now curious to know where those 20+ year old computers can be found? I guess at least the NetBSD VAX port people must have some working hardware? Unless they work on emulators for hardware that doesn't exist anymore, just for the beauty of it? Are there still productions systems running it? If there are, I'm assuming they are not the kind of production system where you would update de OS anyway ^^


they have real hardware and defend it


in practice, there are probably more platforms that linux supports that netbsd doesn't.

no an argmuent against anything just pointing out a consequence of manpower/popularity.


Literally got bored of scanning through the hundreds of cookies to find the ones that have "legitimate interest" to individually turn off.

Hope the article was good!


Get an adblocker to block the consent modal. The Internet will be a much nicer place.


consent modals are important, you should get an adblocker to block tracking where the choice is not given


I strongly disagree, they're little more than pointless nagware designed as a fig leaf over the gaping privacy issues on the modern web. While I get the intention, it was clearly designed by people who didn't grasp the concept of alarm fatigue and they're usually full of truly obnoxious dark patterns which have nothing to do with informed consent.

I block them all and it massively improves the user experience of the web.


You can implement a consent modal with dozen of dark patterns, but that is not a problem of the consent modal.


I don't consent to tracking, like, ever. So the proper way to deal with this is to auto-deny and not show up the popup.


Hopefully in the future website will be able to read our minds and know when not to show modals/banners, I hope the NeuroWeb standard comes soon /s


I block both.

Tracking isn't really legal without consent, though. If a page tracks visitors without explicit consent the site owner is breaking the GDPR.


That's not true. There are multiple bases for data processing in the GDPR that are not dependent on consent: https://ico.org.uk/for-organisations/guide-to-data-protectio...

It's not clear to me that tracking is unconditionally illegal in any of them.


Agreed, although websites now full of legitimate interest toggles, when the ICO's wording is not about anything optional, are annoying


There's some precedent for the idea that abusing the legitimate interest provision to encompass tracking cookies, is not permitted under the GDPR. In Norway at least, there's a chance could end up fined for doing so.

https://news.ycombinator.com/item?id=27060609


If you use an extension that auto-approves, it's on you. I'm not familiar with adblock that blocks consent dialog or auto uncheckes all possible and clicks "ok"


Same. That was insulting. I managed to read it through Safari’ Reader mode.


OpenBSD and Void user here. NetBSD was good under the 5.x/6.x era on the desktop, then the quality plummeted, a lot of ports segfaulted.

Now with 9.2 people is telling me is working really great as in the old days.


I have some not great memories of trying to use it through 5.x back when there was no binary package manager. A lot of stuff wouldn't compile easily or segfaulted easily even on x86, but it was a long time ago and I was a noob at unix let alone fixing compilation issues, so I never really knew if it was my incompetence or NetBSD. Either way it was definitely harder back then without binary packages... I remember thinking at the time: what's the point on being able to run on old hardware if it takes a month to compile the stuff you need.


Yah... I ran NetBSD-1.1 and then followed current for awhile from source on little machines-- first a 486, then a Pentium and a SPARC 1+. It was clean and wonderful.

I just dug the Pentium of my late childhood out of the closet and figured I'd play DOS games and install recent NetBSD. But GENERIC is too big even with the reasonable maximum 64MB of RAM (most Pentiums cannot cache more than 64MB) to do anything but crawl, and compiling a kernel takes about 15 hours on a Pentium 120... and sure, I could build on another machine, but is it even Unix anymore if it's not self-hosting?


Cross-compile the kernel, sets and pkgs on a newer machine. NetBSD makes it really easy to do so.

https://www.netbsd.org/docs/guide/en/chap-build.html

EDIT: Slim down the kernel as much as you can.


Sure.... my whole comment is about slimming down the kernel and cross-compiling not feeling authentic. If you can't really self-host, what's the point?


iirc there was the possibility to use binary pkg's from some french guys since around 3.99


I have great memories sat in the labs at college with peculiar hardware just seeing what we could run netbsd on. Aside from education it had no practical utility to us at the time, but it was good fun :)

Brilliant project delivering some good free spirited light heartedness to the OS world.


Also if anyone interested in testing out new GPU code check this : https://www.unitedbsd.com/d/563-56-gpu-drivers-update


It couldn't run on my "bring your own ISO" VPS provider. which did manage to run OpenBSD and FreeBSD.

(Very possible I made some noob mistake)


...and has gaping flaws in its ipv6 implementation


https://www.netbsd.org/support/security/advisory.html

  NetBSD-SA2021-001 Predictable ID disclosures in IPv4 and IPv6
  NetBSD-SA2020-002 Specific ICMPv6 error message packet can crash the system
  NetBSD-SA2019-004 IPv6 neighbor cache leak on expiration
  NetBSD-SA2018-004 Remote Memory Corruption in IPv6
  NetBSD-SA2018-003 Remote DoS in IPsec (IPv6)
  NetBSD-SA2008-015 ICMPv6 Packet Too Big messages
  NetBSD-SA2008-013 IPv6 Neighbor Discovery Protocol
  NetBSD-SA2008-011 ICMPv6 MLD query
  NetBSD-SA2008-003 IPsec in IPv6 Denial of Service
  NetBSD-SA2007-005 IPv6 Type 0 Routing Header
  NetBSD-SA2006-016 IPv6 socket options can crash the system
  NetBSD-SA2004-002 Inconsistent IPv6 path MTU discovery handling


That's important point, yes. Are you one of the few ipv6 users?


Few? World is on 27%. South Asia on 60%, North Americq is 47% , Europe on 43%

Check around. I don't call a quarter of the world "few"


mostly phones thou


Lotta phones. But a lotta fibre and hfc is dualstack. The aussie NBN, Vietnam FPT, Comcast, sky UK...


FIOS is one of the only decent ISPs in the US still on IPv4 only.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: