FreeBSD 12.0 is now available
lists.freebsd.org
lists.freebsd.org
I moved to BSD world when Debian adopted SystemD and I am happy that I did. It is often said that Linux is more stable then Windows, well BSD could be considered like Granite compared to Linux. I really love it. OpenBSD for the edge, and FreeBSD for internals and workstations.
The driver updates are very welcome too, getting my video card to work 4k@60Hz was a bit of a task finding the correct driver, but I see this update addresses that too.
Once again, thank-you to everybody who contributes.
FWIW:
~ man rm | tail -n1
BSD January 28, 1999 BSD
Not your quote, but I would add: ... and think of OpenBSD to FreeBSD as diamond to granite, 'rock solid' is understatement :)
"We have fixed many simple and obvious careless programming errors in code and only months later discovered that the problems were in fact exploitable." https://www.openbsd.org/security.html
The init system is lacking, service maintenance is basically absent. There are also no killer features over linux, beyond zfs and (doubtfully) jails. Even if you are a systemd hater (which is imho unreasonable), you could stick to linux without systemd and have a better hardware and software support.
{Open,net}bsd are another story, though.
The ones in base are fairly old, but the ones in ports are equivalent to Linux 4.16, so about six months old. Yes they're ported from Linux, I don't see why that's a problem.
The rest of your post can be summed up with "I like systemd." That's fine, other people disagree.
Is this matrix outdated?
https://wiki.freebsd.org/Graphics/AMD-GPU-Matrix
>The rest of your post can be summed up with "I like systemd."
It's not about systemd in particular, it's about modern service and system management in general
https://www.freebsdnews.com/2018/08/21/benno-rice-the-traged...
You also forget about software argument, why to use freebsd if you would use linux-layer all the way.
I would guess that it is reflecting the drivers in base, the page above that gives directions on using this driver in ports.
https://www.freshports.org/graphics/drm-fbsd12.0-kmod/
I'm sure improvements could be made to FreeBSD init, but all you're saying is you'd prefer one more like systemd. Then you're free to use something else.
>You also forget about software argument, why to use freebsd if you would use linux-layer all the way.
You aren't using a Linux layer all the way, you are for video card drivers. As for why, they're free software. Using the Linux ones makes more sense than building new ones from scratch.
I see. For 11.2 its 4.11, so it didn't support my vega card.
Upgrade to 12 leaded me to kernel panic on startup on my shitty laptop's cpu, this bug [1].
>You aren't using a Linux layer all the way, you are for video card drivers.
I was talking about lack of hardware and software support, so you need a compatibility layer for commercial linux software.
[1] https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=233534
The linuxkpi kernel API compatibility layer is for open source software (e.g., dual-licensed BSD/GPL Linux DRM drivers), not for commercial Linux software.
The linuxemul syscall ABI layer can be used to run commercial Linux software, but is an entirely different and unrelated component. It has nothing to do with hardware support. This is like claiming that because WINE exists, Linux uses Windows for hardware support.
FreeBSD dev here. This is a totally valid criticism of FreeBSD. Systemd has done a lot for Linux despite the controversial nature of way it has done it, as well as the continued scope creep that draws hostility. One thing it did from the very beginning was provide first-class service management and real on-demand service launch, in parallel. We could learn some lessons from systemd.
> drm drivers are very old and mostly backported from linux
They're completely backported from Linux; that's true. You can install drm-kmod from ports and automatically get an appropriate drm depending on your installed FreeBSD version: fbsd11.2 for 11.1, fbsd12.0 for 12.0, current for CURRENT (head).
fbsd11.2 is on Linux 4.11; the rest are on Linux 4.16. That's not super old (April 2018).
There is also the drm-legacy-kmod, which contains the ancient Linux ~3.8 drm drivers backport. It isn't suggested for most users and is mostly present for very old, insecure hardware that Linux no longer supports (e.g., mach64, mga, r128, savage, sis, tdfx, via) and proprietary ARM products (mmel@ wrote an angry screed to a private mailing list his TEGRA-based product absolutely depended on these obsolete Linux drivers) that have not yet updated to newer DRM versions.
> The init system is lacking, service maintenance is basically absent.
Totally agree.
> There are also no killer features over linux,
That isn't quite true, as you point out. ZFS and jails are significant features. Capsicum is a significant security feature.
There's no shortage of info or places to seek help about BSDs on the net, FreeBSD has an active forum at https://forums.freebsd.org
AUR and Gentoo Portage are very closely inspired by Ports though.
https://www.freebsd.org/doc/handbook/
This is the first and only resource you have to hit when the question is: "how do I do that in FreeBSD?"
Section 4. answers your second question.
There is no less information about BSD than "Linux", it is simply that BSD has no advertisement or companies behind pushing it...
Which is ironic since huge companies like netflix, sony, citrix, netapp and others make appliances based on FreeBSD and contribute a ton of code (Note, i am not at all disagreeing with your statement, i just find it ironic).
IX Systems does push behind it a lot and does advertise it: https://www.ixsystems.com
I have heard people complain because the handbook needs updating in some areas, but to be fair it is an open source handbook and people can make submissions to help make it better.
My point was simply aiming to underline that there is no analogue of RHEL or Centos in the BSD world. If you decide to endorse BSD you know you are on your own and you have to contribute to the project. The BSD license seems a bit more appealing to this huge giants than the GNU one. Fixing bugs and contributing to the code base is the reason why I love the project.
For purely educational reasons you can learn more in 5 minutes using BSD, than in 10 years with Ubuntu (what is it that one learns with Ubuntu actually?).
The handbook is just awesome. If people complain about it, it is just because they never looked at how documentation is written in the average in computer science (is software documented at all?).
Most major Linux distros have different package managers and you download binary updates. They supply their own kernel with backports and custom compiled to stay in sync with the rest of their userland. In FreeBSD the kernel and userland are in sync so you dont have this issue.
Linux has better driver support due to more exposure to hardware.
You can go one for quite a while about how different they are, so they are very different. But you are right it is user preference.
(I excluded systemd and init to avoid a holy war)
Well, this mantra is really getting old - because when people say "Linux" they almost never talk about Linux-the-kernel. Which is also why, for instance, nobody calls Android "Linux", but when referring to Ubuntu, Slackware, etc., they do.
Let's compare apples to apples: Ubuntu vs. FreeBSD.
In Ubuntu there is a kernel made by one group (the Linux project), a bunch of userland tools and C compiler made by another group (the GNU project), desktop environment made by the GNOME project, etc. etc.
Whereas FreeBSD is just FreeBSD. It is one project, in one source tree, maintained by one group of people. (The biggest exception to this is the C compiler -- it is a third-party project which gets imported into the main tree. But that's a minor thing compared to Ubuntu which does this for everything.)
I'd have probably gone with init daemons, ABIs and other core systems. Maybe mention how some of the base CLI tools differ (eg GNU has slightly different flags and rules for ordering them for `cp`, `find`, `ps`, etc).
FreeBSD is a bit of a gateway drug in that it's the most like GNU of all the BSDs. Had you use OpenBSD as your point of comparison then the differences would have been easier to describe. But ultimately you're always going to get some cross-pollination across all the POSIX platforms (eg GNU/Linux uses OpenBSD's OpenSSH; FreeBSD has a bunch of GNU tools; and all of the above platforms will run most DEs, Apache projects, etc). That's a good thing though - it was the point of POSIX.
I just wish there wasn't so many differences with syscalls - but that's moan about a very specific problem I'm having on a current hobby project.
Or any desktop environment, for that matter, or much of everything else of any importance for the end user.
It is, on the other hand, fully supported. Bugs in the C compiler are considered bugs in the OS and will be fixed.
I don't need a desktop environment or care about having one, so it not being part of the core OS doesn't bother me.
I'll copy-and-paste my thoughts on why I like FreeBSD from an earlier comment I made:
"Every one I have used installs the source code to the entire OS in /usr/src and make it very easy to change and recompile the system. On the BSDs I mentioned, if you don't understand how something works or you want to fix some bug, it's usually pretty easy to go find the source code, read it and learn how it works, and fix it. On most Linux-based OSs you would have to go figure out which random organization makes the component that has a bug (Linux project for the kernel, GNU for a lot of utilities, zillions of others for everything else), figure out how to download and build the source and install it into your distro (which is probably totally unsupported since your distro will expect to be using RPMs or DEBs rather than random stuff installed from tarballs...)
This is the most salient feature of the modern pc BSDs to me. It's impossible to describe how different it feels to be truly in control of your system and understand/change it however you want."
The reason I brought the DE into the equation was simply because it was being compared against Ubuntu. I don’t really think Ubuntu is the best case study there either to be honest but I’m just following on from the post that preceded me.
This is true for the base system, but not necessarily true for ports / pkg. You can end up with an inconsistent pkg collection, unfortunately.
rm -Rf /var/db/pkg/* /usr/local/* /usr/ports/distfiles/*
reboot the system and all the non OS packages (installed via ports and packages) are gone and you can start over (reboot is probably optional).
In FreeBSD at least there is a real, fully-featured, usable OS out of the box, all consistent, in one source tree at /usr/src which is quite easy to read, change, and build. Unlike most GNU/Linux distros where each random thing like "grep" is its own package developed by its own separate group of people.
Linux distros avoid this problem by separating the process of committing to an individual port/source package; building that individual package, and possibly rebuilding dependencies; and pushing out updates, which are atomic and can contain an updated library and all of its dependencies. My experience is that Linux package managers (dnf/rpm anyway) are better at catching operations that would introduce broken ABIs, as well.
In contrast, the FreeBSD ports model is to invoke poudriere periodically and rebuild all ports at once, then push the entire set out to mirrors. There is no automation that checks for ABI changes in libraries, and pkg(1) does not do a great job of confirming that a library upgrade does not break installed programs (or other libraries) via SONAME bump; much less symbol changes not reflected in SONAME.
No way.
The important thing is however that even though there might be less info it is much more consistent! It is even so old fashioned that you can work without Internet how-to's - it is all there in the "man" pages.
1) yes it does, both as source and as binaries (and the same for the base system itself) 2) not sure what you mean, but... (see next answer) 3) https://www.freebsd.org/doc/handbook/ and the man pages. Back in 2000s, the FreeBSD handbook was the best documentation for unix based systems. I could bet a fiver this is still the case.
A.k.a. your “customers.”
Anecdotally, the first Linux experience that I was able to install and operate myself, after a handful of prior failed attempts, was Ubuntu (2005). And a big part of that was that it was friendly to absolute beginners like myself.
Now I am a FreeBSD developer and have patches in a plethora of open source projects, including Linux. Everybody starts somewhere!
I'd rather Linux look different. I'm not saying it has to look alien nor hard to use either. But different enough that when people choose to use it, they come to it with a mindset that they can't just treat it like a Windows clone.
> Well, MacOS behaves “completely differently,” too, so what?
...so when people come to use OS X they don't expect it to work like Windows and thus are more tolerant to having to alter their workflow accordingly.
Which is the point I'm making about how Linux harms itself when it tried to emulate Windows too closely.
> (By the way, Windows has been behaving completely differently from itself over the past few versions.)
Yes, and people complain frequently about it. I don't see how that contradicts the point I was making.
It's been ~10 years since I used PC-BSD, but it was certainly a nice distro.
Also I'm interested in whats been going on with concurrencykit[1]? I saw it got imported into the kernel a couple years ago[2]. What's the progress on incorporating concurrencykit?
ConcurrencyKit is imported and used for efficient read-mostly datastructures in FreeBSD 12, mostly in networking applications such as IP routing and link-level address caching (i.e., ARP in IPv4 Ethernet). It's also used in network interface drivers, HWPMC, TCP, and the linuxkpi emulation layer (to emulate RCU).
You might be interested in this blog post: http://scalebsd.org/blog/2018/06/16/UDP-and-epoch-for-livene... and https://www.freebsd.org/releases/12.0R/relnotes.html .
Sure; I agree. I tried to address that under "It isn't really obvious how it would be cleaned up to be general enough to import, and it would be a ton of work with little payoff."
After all, you have to integrate with OpenSSL (or whatever) on the userspace side somehow too. And OpenSSL is contrib code, so we can't just hack it willy-nilly.
https://github.com/openssl/openssl/blob/d6c3c1896cf3c0d69bc2...
https://www.phoronix.com/scan.php?page=news_item&px=FreeBSD-...
A while back, I took a snapshot of /root and installed Gnome 3. It was too big for my laptop. I rolled back. The snapshot and rollback were amazingly fast.
I find FreeBSD more cohesive. I have not tried it on modern devices, but my experience with it on my decade old laptop and VMs is extremely positive.
A similar cohesiveness is achieved only when I handcraft my Arch. Maybe, it is just the feeling.
I'm a BSD noob.
Also interesting:
> The dtrace(1) utility has been updated to support if and else statements.
I believe that it's only a change in the front-end parser and that logic of this sort is still implemented via the old predicate/multiple clauses trick, but some syntactic sugar is still welcome.
Correct.
I would like to help with the lack of wifi drivers situation, I'm solid programing in C, but writing network drivers seems intimidating.
The actual work to be done was fairly straightforward; the difficulty was collecting all the different undocumented hardware APIs and figuring out how to use them. :P
I guess I will upgrade my trusty home server over the holidays, and I am looking forward to it. ;-)
You don't have to do anything. As with other software, FreeBSD supports multiple releases. 11.2 is still a supported version, and 11.x will be supported until the year 2021.
See this page for more info: https://www.freebsd.org/security/
> Fortunately, upgrading FreeBSD is a lot more convenient these days than it used to be.
Agreed. freebsd-update has made life so much easier.
Kind of an odd use-case here but I have a NVMe SSD that I'm using as a scratch drive and it might be nice to have ports on that drive rather than my main drive. Is there a way to move just the ports and symlink it back into /usr, or do I have to move the whole /usr directory and alter fstab?
1) Your workstation is a desktop as opposed to a laptop,
2) You have an NVidia graphics card (or use your motherboard default graphics card), and
3) You do not need CUDA
then FreeBSD is pretty likely to work out of the box with your hardware.
The biggest practical advantage for me is that the source code to the entire OS is installed in /usr/src and is very easy to read, modify, learn from, and build/install. So if you need to know how some obscure OS tool works, instead of browsing weird forums all day you can just read the source.
If that's relevant to you, it also doesn't use systemd (I don't mind it because I learned how to use it properly, but I'd certainly love a break from troubleshooting it...)
Really great job guys and thank you! Can't wait to upgrade!
The installation is very quick and then it just work on my t470. Documentation is excellent. Try it.
However my box doesn't feel as snappy as a lean Debian 9 install with xfce4. You have to decide if that's a dealbreaker :)
Granted, I do not have the habit of playing games or using large, unsupported software (say, Photoshop and friends). My daily applications consist of Emacs and Firefox, so my feedback may be limited in scope.
I'm not sure what the status is, but last I checked Electron did not work on FreeBSD. If you use something Electron-based, you might want to take a look at it.
I also am unable to access my iPhone filesystem and to watch Netflix movies. But for both cases, I blame the vendor and not FreeBSD. A VM on bhyve quickly solves the problem.
Guest overhead will vary by workload. I know for example that virtio-net performance lags Linux, because virtio-net was designed for Linux skb's and doesn't align well with FreeBSD's mbufs. Give it a shot and see how it compares, I guess.
From a philosophy perspective, OpenBSD seems to prefer sane defaults and a complete base system. For the laptop, I needed to install no packages to get a fully functioning system (minus a web browser; that was the first and only thing I installed). I had to do more “basic” configuration on Free than on Open, but I ended up doing quite a bit on both.
OpenBSD has a somewhat strange update system, where patches to stable packages are not provided, requiring you to either build updated packages yourself, follow —current, or use a third party (M:Tier, for instance).
My recommendation is to try both and see which works better on your hardware and which philosophy makes more sense to you. They’re both great operating systems.
While rough around the edges, it can be comfortable enough that I forget about it most of the time.
All the BSDs are better if you're not using the shiniest of hardware, they do eventually get hardware support for things, but not always at day zero.
I have been using FreeBSD since 3.x in 1999 and have only been bitten by source updates when I failed to follow procedure and read the UPDATING file. Anyway source update from 11.2 to 12 worked for me fine.
I've never seen an OS updater that is happy to jump 3 major versions at once, especially since the old one has fallen off of even legacy support.
I've switched from Linux to FreeBSD in 1999 because I was fed up with chunky/broken binary updates. One used to be able to compile 3 versions ahead on a running system and boot into a working, clean setup. I am lazy, of course I tried (and succeeded most of the time).
But since 8 even the standard practice of migrating one major version at a time as well as updates from latest n.x to m.0 was broken for people who did not drink the "pkg and freebsd-update!" kool-aid. My allergies to that are raid controllers not supported by GENERIC kernel and a general preference to include into software only what I need - make.conf makes that really easy and maintenance is a breeze simply because we're not hit by as many security issues.
The canonical path is something like(this is documented somewhere):
8.0 > 8.4 > 9.0 > 9.3 > 10.0 > 10.4 > 11.0 > 11.2
Although I've had decent luck jumping straight from X-STABLE branches.
Yes, something like this. For 11.x I had to go to a specific patch level first (IIRC due to LLVM version bump).
Very welcome suprise! I was excited about pNFS four years ago, but couldn't find any open source system to play with. Finally it is time for some mirrored pNFS testing.
BBR is a very fast recovery algorithm. Its not always very "fair" to other forms of TCP. BSD and Linux both have kernels which allow selection of different methods of backoff. BSD has cubic, and some other choices, at this point only Linux appears to have the BBR method integrated. It is in test in the BSD stack (I believe)
If you have sole use of a host, and want to do long-distance file transfer, with loss, BBR can sometimes get you things faster. If you're in a Data Center (DC) BBR can cope really well with dumb switch packetloss, getting you significantly faster recovery.
The RACK stack is in 12.0 and provides many wanted benefits outside of BBR's proficiency against channel loss. I can blog or something about how to build and use it if interested.
I run a clutch of Dells, on FB and they're moving to Debian for other reasons, where I get BBR. I would have fought harder to retain them on BSD if we'd had signs the network stack was getting the same amount of attention.
When VJ moved to coding against Linux instead of BSD, I think the writing was on the wall. When Grenvilles team in Melbourne disintegrated, and that source of TCP energy dissipated, the writing pushed the wall over. (I think they moved to netflix)
There is a competent team working on TCP at Netflix, led by Randall Stewart. They collaborate regularly with VJ and his Google team and the IETF tsvwg.
We run the BSD core because we're a three person research activity run by dinosaurs who had BSD systems in the eighties and stuck to them all the time since.
Now we are exposed to things like iscsi and ceph and Hadoop and elk stack.. and it's just too bloody hard to survive in ports on freebsd for this stuff. It's become corner case.
BBR is a case in point. Data fetch to the home nodes on bsd from Asia, Europe and the USA (we're in oz) was two to three times slower than via a Debian node because of it.
* OpenSSL has been updated to version 1.1.1a (LTS).
* Unbound has been updated to version 1.8.1, and DANE-TA has been
enabled by default.
* OpenSSH has been updated to version 7.8p1.
* Additonal capsicum(4) support has been added to sshd(8).
* Clang, LLVM, LLD, LLDB, compiler-rt and libc++ has been updated to
version 6.0.1.
* The vt(4) Terminus BSD Console font has been update to version 4.46.
* The bsdinstall(8) utility now supports UEFI+GELI as an installation
option.
* The VIMAGE kernel configuration option has been enabled by default.
* The NUMA option has been enabled by default in the amd64 GENERIC and
MINIMAL kernel configurations.
* The netdump(4) driver has been added, providing a facility through
which kernel crash dumps can be transmitted to a remote host after a
system panic.
* The vt(4) driver has been updated with performance improvements,
drawing text at rates ranging from 2- to 6-times faster.
* Various improvements to graphics support for current generation
hardware.
* Support for capsicum(4) has been enabled on armv6 and armv7 by
default.
* The UFS/FFS filesystem has been updated to consolidate
TRIM/BIO_DELETE commands, reducing read/write requests due to fewer
TRIM messages being sent simultaneously.
* The NFS version 4.1 server has been updated to include pNFS server
support.
* The pf(4) packet filter is now usable within a jail(8) using vnet(9).
* The bhyve(8) utility has been updated to add NVMe device emulation.
* The bhyve(8) utility is now able to be run withing a jail(8).
* Various Lua loader(8) improvements.
* KDE has been updated to version 5.12.5.(drum roll)
64-bit inodes!!
I would be concerned about the ability to fsck a UFS2 filesystem with enough inodes in it to require 64-bit inodes... As late as 2010/2011 fsck would fail to allocate enough memory to successfully repair a filesystem with <200M inodes ...
I have it on good authority (the author of UFS) that there is no reason to use UFS instead of ZFS unless you are severely memory constrained.
Perhaps I misunderstand the new feature you are highlighting ?
No, it's a kernel ABI change such that all of the stat(2), getdirents(2), etc, ABIs take and pass a 64-bit value instead of a 32-bit one. This enables:
(1) 64-bit NFS fileservers
(2) Direct-pointer "inode" numbers for FUSE filesystems or cd9660/UDF
(3) Probably other uses I'm forgetting
Additionally, other ABI enhancements were committed as part of the ino64 work: https://svnweb.freebsd.org/base?view=revision&revision=31873...
In particular, I'd point you at d_namlen bumping to 16 bits, MNAMELEN to 1024 bytes (from the anemic 88), and nlink_t from 16 bits to 64 bits. None of these are necessarily used in any particular filesystem, yet, but the generic ABI support is now present.
> there is no reason to use UFS instead of ZFS unless you are severely memory constrained.
Eh, that's an oversimplification. Here a few reasons:
(1) Addressing the "severely" in the above: ZFS memory usage is astronomical, and it is sort of designed to be a filer — it thinks all of the RAM is for its use. It eats all of memory for cache (which is fine, that's what any filesystem cache does) but is slow to release memory under pressure. Also, it requires significantly larger caches than most other filesystems to perform acceptably.
(2) Database and similar workload performance — ZFS is a CoW filesystem. That has all of the same problems for databases and similar workloads as any other CoW filesystem. Namely, overwritten blocks will be reallocated to a completely different part of disk and you lose any physical contiguity you might have had. This matters on spinning media and is a factor in why ZFS requires large caches to perform acceptably.
(3) Journaling. ZFS intent log essentially duplicates the number of bytes written to media. This definitely has benefits (powerfail consistency) but also is an obvious cost.
(Also, that same UFS author continues to work on adding UFS features, because Netflix pays him to. Netflix isn't a charity; they've pretty clearly determined that UFS provides better value to them than ZFS. And they have a phenomenal engineering organization, so I'd tend to trust them on that. YMMV, of course; unless you run a CDN, your workload likely isn't anything like Netflix's.)