NetBSD Explained: The Unix System That Can Run on Anything
makeuseof.com
makeuseof.com
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.
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.
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.
As a NetBSD developer, I don't recognize what you mean by this.
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.
“ 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.
> 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.
The Hurd is already using rumpkernel for some servers, e.g. for audio and work is underway for disks.
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.
Disclaimer: I haven't used or looked at NetBSD since 2006-2007 or so, but I think this is still accurate.
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.
How might one obtain it?
http://www.qnx.com/download/group.html?programid=29178
Download:
QNX Software Center
Register a free Non-Commercial/Academic License:
This would be weird. I believe 32-bit x86 still is widely used by the target audience.
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.
How did you figure out what to add?
Most of hardware use common devices and chipsets.
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.
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.
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 ^^
no an argmuent against anything just pointing out a consequence of manpower/popularity.
Hope the article was good!
Tracking isn't really legal without consent, though. If a page tracks visitors without explicit consent the site owner is breaking the GDPR.
It's not clear to me that tracking is unconditionally illegal in any of them.
I block them all and it massively improves the user experience of the web.
Now with 9.2 people is telling me is working really great as in the old days.
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?
https://www.netbsd.org/docs/guide/en/chap-build.html
EDIT: Slim down the kernel as much as you can.
Brilliant project delivering some good free spirited light heartedness to the OS world.
(Very possible I made some noob mistake)
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 handlingCheck around. I don't call a quarter of the world "few"