
On Sun, 14 Aug 2022 10:02:33 +1200, Peter Reutemann quoted:
'Version 9.3 of NetBSD is here ...'
Consider that there are less than a dozen BSD variants (even assuming there’s more than I can name), versus over 300 Linux distros -- that’s nearly two orders of magnitude difference. And yet all those Linux distros share a common kernel (which is where they get the name “Linux” from), with only minor variations, while the BSDs are quite different internally. I discovered this when reading about the WireGuard-on-FreeBSD saga <https://arstechnica.com/gadgets/2021/03/buffer-overruns-license-violations-and-bad-code-freebsd-13s-close-call/>. WireGuard had already been implemented on OpenBSD, but it appears you couldn’t just take that code and plunk it into FreeBSD--it had to be reworked again. I was also looking at filesystems. The BSDs use something called “UFS” <https://en.wikipedia.org/wiki/Unix_File_System>. But it appears there are different, incompatible variations on this common theme: In UFS2, Kirk McKusick and Poul-Henning Kamp extended the FreeBSD FFS and UFS layers to add 64-bit block pointers (allowing volumes to grow up to 8 zebibytes), variable-sized blocks (similar to extents), extended flag fields, additional 'birthtime' stamps, extended attribute support and POSIX1.e ACLs. UFS2 became the default UFS version starting with FreeBSD 5.0. FreeBSD also introduced soft updates and the ability to make file system snapshots for both UFS1 and UFS2. These have since been ported to NetBSD, but eventually soft updates (called soft dependencies in NetBSD) was removed from NetBSD 6.0 in favor of the less complex file system journaling mechanism called WAPBL (also referred as logging), which was added to FFS in NetBSD 5.0. OpenBSD has supported soft updates since version 2.9[5] and has had UFS2 (FFS2) support (no ACLs) since version 4.2.[6] OpenBSD has now made UFS2 the default UFS version and will be included with the 6.7 release.[7] Since FreeBSD 7.0, UFS also supports filesystem journaling using the gjournal GEOM provider. FreeBSD 9.0 adds support for lightweight journaling on top of soft updates (SU+J), which greatly reduces the need for background fsck, and NFSv4 ACLs. In other words, take a “UFS” volume from one BSD, and it probably won’t be readable on another.
'NetBSD supports eight "tier I" architectures: 32-bit and 64-bit x86 and Arm, plus MIPS, PowerPC, Sun UltraSPARC, and the Xen hypervisor. Alongside those, there are no less than 49 "tier II" supported architectures, which are not as complete and not everything works ...'
I thought Linux was the most widely ported OS ever, with support for about two dozen major processor architectures in the current source tree. If you look at the NetBSD list <https://wiki.netbsd.org/ports/>, it does seem impressive, except most of them are variations on common CPU architectures, the only real major one I can find that Linux does not currently support (as far as I’m aware) is VAX, and possibly Alpha. You can compare the (documented) Linux architecture list here <https://docs.kernel.org/arch.html>. Worth noting that NetBSD has added RISC-V to its list, but not (yet) LoongArch.