Migrate from Linux to FreeBSD
klarasystems.com
klarasystems.com
This is uncontexualized hype clearly written by someone with no real world experience, hoping to gaslight users into thinking their current system is insecure. Then I scroll up and noticed the article is written by a company who sell presumably consulting services in unix. Go figure.
Failing that, there’s limited reasons to use BSD systems instead of Linux unless you have highly specialised requirements. Under many cases I’d imagine it would be more expensive in terms of effort required to hire/train skilled staff.
I'd expect you'd need more training for Linux, since it changes more often.
During this time frame we've also migrated our last FreeBSD servers to Ubuntu
From my perspective, it's not changed much too - I was using apt-get install nginx - I keep using it. Was using systemctl - keep using it. Cannot say I've adjusted my habits during that moves.
Ah, home dirs are property secured now.
Ubuntu's documentation, and lots of third party documentation targeting ubuntu, is like 10 years out of date for lots of things anyways, and even when it _works_ often gives bad advice that either was never true or hasn't been true for years.
Except for the giant, buggy change in the auto-install process in 20.04:
* https://utcc.utoronto.ca/~cks/space/blog/linux/Ubuntu2004Aut...
You know, I actually set this comment aside because I was curious about how HN would engage with it. So far, it seems like folks are pointing out that there indeed have been changes in certain aspects of the OS, as well as probably the introduction of the whole snap mechanism.
Regardless, to me Ubuntu LTS seems like one of the better OS distros out there, both for desktop and server use. It's not ideal, but it's good enough in most respects, to the point where it's hard to recommend anything else.
Previously I recall many looking in the direction of CentOS as something to install on servers and have it serve them for a long time with security updates and pretty good stability, but I guess now one would have to count on Rocky Linux and Alma Linux for that. Additionally, I have to admit that some of the choices that RPM distros make can be a bit odd and the software support isn't where I'd like it to be, things like Docker were admittedly broken (DNS resolution, firewall masquerades and other oddness with SELinux) for a while. It feels like they have their own enterprise-focused way of doing everything, OpenShift being an example of this.
On the other hand, there's Debian and Ubuntu. Personally, I might even like Debian better, but Ubuntu's LTS lifecycle is far more worry free. You might not get 10 years of support, but setting up something and running it for 5 years (with security and other updates) is pretty freeing, especially when you're primarily interested in just keeping things running in a stable manner and don't always need the latest packages. There are changes, of course, there are packages that change names, that break or are deprecated, sometimes you get other growing pains that all of the OSes out there need to deal with.
But Ubuntu LTS to me feels like it's good enough for both server use in both development/testing/prod, as well as personal use, as a daily driver.
I actually will stand by that statement, recently I moved to building all of my container images on Ubuntu as a base: https://blog.kronis.dev/articles/using-ubuntu-as-the-base-fo...
I also experimented with running an offshoot of it, Linux Mint, on the desktop (because their XFCE spin is great): https://blog.kronis.dev/articles/a-week-of-linux-instead-of-...
And nowadays I'm considering migrating my Debian servers after the EOL to Ubuntu, my new ones already running it.
I will say that every distro has its place and in certain domains there are better options than Ubuntu, of course, and OSes like the *BSDs have consistency and engineering that Linux cannot quite match (due to the "engineered vs grown" approach to building them), but sometimes you just want something that is simple to run, has ample tutorials and resources, and won't make you chase down odd issues.
I've been using NetBSD for about the same amount of time, and it hasn't changed all that much either.
First there's networking configuration. On Debian and Ubuntu the interfaces(5) used to be nice and simple, but dog knows what to use on any particular system nowadays since there are like three ways to do things: interface, netplan, system-networkd, other?
Plus there's resolv.conf(5) being fiddled with a myriad of ways and you have to figure out which system to use there as well.
ifconfig kind of works and kind of doesn't for some things.
How may firewall system changes have there been in the last 27 years? Are we supposed to be using iptables or nftables in 2022?
And is being replaced with 'ip'
Every single one of them had the dashboard controls in slightly different places, with slightly different options. Some had four-speed gearboxes, some five-speed, some automatic with three-, four-, five-, or in one case 18-speed gearboxes.
Every single one of them was basically just a car, and drove me to the same places in the same way.
Linux wins in terms of market share which makes it appear easier (eg more software support, bore install guides, etc). But if you look at the base OS itself, FreeBSD is a lot more consistent to manage.
I think it’s a great pity FreeBSD doesn’t get more traction to be honest with you. I have no major qualms with Linux on the whole but FreeBSD is a really nice platform to work on too.
I'd prefer it if there was one favored one that all the effort went into to make it really good, just like with everything else FreeBSD. This is not arch where you have to handpick each component :)
The pf firewall is a fork of the OpenBSD firewall. It is the normal choice for someone already familiar with using OpenBSD firewalls. Otherwise, a new user should choose between ipfw and pf the one whose configuration seems easier to understand.
I happen to prefer ipfw, because writing a configuration file for ipfw is exactly like writing a program in a programming language (a language very much like BASIC), which examines the incoming or outgoing packets, by executing instructions sequentially. Others find the syntax used by pf more pleasant, but I find it more difficult to reason about which is the matching rule that will be selected by pf for execution for a certain packet.
The third firewall, ipfilter, is also provided mainly for the former users of it on other operating systems. I am not aware of any particular advantage for it.
I was first considering pf because I used it on Mac before, but the problem is the freebsd version was forked quite a long time ago and has different features than the openbsd version as a result.
I went for ipfw mainly because it seems to see the most active development.
But really, I wish FreeBSD would just pick one as standard and keep the others around for compatibility reasons if needed. One of the reasons I like FreeBSD is that you don't have to make such choices. Things have well chosen defaults.
Contrast this with arch which I mentioned, that even lets you decide which mechanism to use for network management (e.g. net manager, connman, systemd-networkd, netctl). It describes this choice really well in its excellent wiki, but when I tried arch it meant I had to do this kind of decision for pretty much every part of the OS :) What I like for FreeBSD is that they keep things simple.
But where they do give a choice, I'd love it if they describe the pros and cons as well as Arch do: https://wiki.archlinux.org/title/Network_configuration#Netwo...
I think Arch and FreeBSD have a lot in common, they're both intended for users that don't expect to click through everything and just dump you on a command prompt where you can set up stuff the way you want, instead focusing on excellent documentation.
I use FreeBSD on my daily driver PC now as I thought Arch was too much work with all the choices, and on the other hand the one thing I did want to change (systemd) it didn't allow.
Well yes sure, Arch was made with Crux in mind, and Crux is:
>>CRUX is a lightweight Linux distribution for the x86-64 architecture targeted at experienced Linux users. The primary focus of this distribution is keep it simple, which is reflected in a straightforward tar.gz-based package system, BSD-style initscripts, and a relatively small collection of trimmed packages.
https://en.wikipedia.org/wiki/Arch_Linux#History
>>Inspired by CRUX, another minimalist distribution, Judd Vinet started the Arch Linux project in March 2002. The name was chosen because Vinet liked the word's meaning of "the principal," as in "arch-enemy"
BTW Crux is still a great distro, limited packages yes, but absolutely simple and rocksolid.
When I use Linux now (usually for docker stuff on servers) I tend to use alpine which has a similar focus on simplicity.
Nevertheless, there are many people like myself, who always discover, when using a computer, that they want to do an action not anticipated by the designers of the commercial OS, either due to lack of awareness about the needs of some people, or because they do not bother to support those that are only a small percentage of their users, or because they have an interest in preventing the owners of the computers to use their property in certain ways.
Whenever it happens that I want to do such an action, I discover that it is much more difficult to do it on Windows than on Linux or on any *BSD, and sometimes even impossible. That is the reason why I have abandoned the use of MS Windows or Mac OS, many years ago, except for various occasions when I am forced to use them temporarily for professional reasons.
But yes *nix is much more flexible..but that comes with a cost, sometimes a massive one.
BTW Android is a free operating system.
However, when using a system without a GUI, e.g. for a networking or storage server, in most cases FreeBSD is definitely much easier to use than Linux.
There are a huge number of small details that matter. Even for something as simple as seeing the status of the network interfaces. If I type "ifconfig" without arguments on FreeBSD, it shows everything that I want to know, about all network interfaces. To obtain the same information on a Linux system, I have to type a large number of "ip" commands, each with many arguments that I fail to remember even after decades of using "ip", so I may need to consult the "man" page for "ip". (The legacy ifconfig of Linux does not provide the functionality of FreeBSD ifconfig)
In general, for any network-related task, using ifconfig and ipfw on FreeBSD is much easier than using ip and iptables on Linux.
There also many more niche applications where there are big differences. For example the "mt" command for magnetic tape control sucks badly on Linux, but it is very convenient on FreeBSD. Also for SCSI devices FreeBSD has more flexible commands.
While audio seems to be improving on Linux with things like pipewire, for a long time audio was in many cases easier to configure on FreeBSD than on Linux with the dreaded ALSA or pulseaudio, if the audio hardware was supported. Also, when I had to configure once some USB surveillance cameras, that was easier on FreeBSD with webcamd, than on Linux, but like for audio, FreeBSD has a shorter list of supported devices.
Some of the differences in the user interface between FreeBSD and Linux are caused by FreeBSD being more conservative, while in Linux some older tools have been replaced with newer tools, but the newer tools have been made with worse user interfaces, like in the replacement of ifconfig with ip, or in the introduction of ALSA and pulseaudio, which both have an extremely poor user interface, especially for computers with multiple audio devices.
A how-to for FreeBSD can be used with NetBSD with minimal changes. Why? Because the BSDs don't expend effort to deliberately try to differentiate themselves from each other. They're consistent and don't change gratuitously.
Try writing a how-to that has even the slightest consistency between the common Linux distros - Red Hat, Ubuntu, Debian, Arch. Heck - many how-tos written for Ubuntu 18 can't be used with newer Ubuntu! It's a mess.
On practical side it rarely bothers you. In most organizations you standardize on single one and that's all.
Say my largest current Linux deployment is on Centos 7. Project is new so just for 3 years.
Migration will highly likely will happen to Alma 9 (RHEL 9 clone) somewhere next year. And will run another 5 years or so.
Not even mentioning nowdays Linux is largely just layer to run docker and noone cares on learning things beyond docker-compose and docker files.
Basically I ended up using the Freebsd box as a fileserver (ZFS and Minio), and still running an Alpine Linux box with zfs for most other things.
I did briefly run a Minecraft server on the Freebsd box which worked really well.
Virtual network for a bunch of jails with nat. I wanted exposed ports on the host machine mapped to a reverse proxy jail that did tls termination before forwarding to other jails on a virtual network (while allowing the jails on the virtual net outgoing internet access).
Several applications that were apparently built for Linux, so they did not compile on Freebsd (and no alternatives available).
Getting newer versions of software. Often the version available in pkg is several major versions out of date.
Documentation for how to do things in general. Yeah when there are docs/tutorials they can often be of high quality, but frequently there is just nothing or the available docs does not cover the edge case you are trying to solve.
That's really a bit of a pain (lack of a good tutorial/doc)
>Virtual network for a bunch of jails with nat.
I solved that this way: Create'd a vnet haproxy-jail (the tls-terminator and "forwarder") all other jail's a "non-vnet" with a internal IP.
But you can do it with just nat'd jails and haproxy as the terminator...no problem, do you need some pf examples?
>Getting newer versions of software. Often the version available in pkg is several major versions out of date.
Same on Linux-Distros, freebsd is pretty much on par:
https://repology.org/repositories/statistics
>Documentation for how to do things in general. Yeah when there are docs/tutorials they can often be of high quality, but frequently there is just nothing or the available docs does not cover the edge case you are trying to solve.
Can you give some examples so one could do something against it? NFSv4 with kerb and ldap is one..i know ;)
And yes, firewall config should be part of that rather large tutorial, but it I really feel like a complete tutorial is missing. The ones I have seen only cover a part of it and it's left as an exercise for the reader to figure out how to glue them together.
Some of the other issues I had with incompatible dependencies would be solved if I know how to use jails correctly.
How to get a Linux jail up and running (Alpine Linux).
ZFS + NFSv4 + Kerb + ldap would be great. I ended up solving that particular problem by using minio instead, because it was so much easier to setup, but I would like to know how to get nfs working for future things.
The default settings for pkg use the quarterly branch. Remove the comment from the line for using the latest branch in /usr/local/etc/pkg/repos/FreeBSD.conf.
There's a PR hopefully landing soon in nixpkgs to add freebsd building: https://github.com/NixOS/nixpkgs/pull/82131
I was wondering if there's a builder at some point, it may improve the compatibility for the whole ecosystem. There's definitely a lot of fixes going upstream from darwin build failures.
Jails are old, and there's a wealth of outdated documentation around which makes it confusing when trying to understand how things works.
In case someone else is reading this, it's not different from what Docker does automatically for you.
I typically use vnet (which gives the jail an entire virtualized network stack, something like macvlan?) and either use NAT or bridges for connectivity. NAT for machines with only one public IP (like VPSes) and bridges for homelab setup where I want a more visible setup.
When setting up NAT I just use PF as my firewall, and assign static addresses to each jail.
Now I dislike using Docker for similar tasks, as I find it to be more work than just doing the same setup with VNET, bridges and VLANs. I'm a fossil and I want to run different services on different VLANs, which in Docker lingo is considered "legacy application setup" (looking at the macvlan documentation).
Some folks kind of are; for instance, last time I looked Arch Linux has sudo as part of base so it's hard to remove.
Edit: Sorry, apparently Arch does let you remove sudo (now?). If you substitute in RHEL et al. the general point stands (and I actually checked this time and Rocky 8 makes unhappy noises if you ask it to remove sudo), but my initial example was wrong.
$ yay -Rsn sudo
checking dependencies...
:: libisoburn optionally requires sudo: for use with xorriso-dd-target
:: pacman-contrib optionally requires sudo: privilege elevation for several scripts
:: refind optionally requires sudo: for privilege elevation in refind-install and refind-mkdefault
:: wireguard-tools optionally requires sudo: elevate privileges
:: yay optionally requires sudo: privilege elevation
Package (1) Old Version Net Change
sudo 1.9.12.p1-1 -7.10 MiB
Total Removed Size: 7.10 MiB
:: Do you want to remove these packages? [Y/n]
:: Processing package changes...
(1/1) removing sudo [###############################################] 100%
:: Running post-transaction hooks...
(1/2) Reloading system manager configuration...
(2/2) Arming ConditionNeedsUpdate...
libisoburn, refind, wg, yay can be elevated by doas or su.pacman-contrib is a bunch of package development scripts. Your typical user won't have them. Also the previous point applies.
Looks like nothing else in core depends on sudo, most packages from extra/community that need it have it as an optional dependency, looks like one can remove sudo on Arch
Arch's base is really minimalist, though.
I mean, https://nvd.nist.gov/vuln/detail/CVE-2022-43995 is lest than a week old, so probably yes. (That is, a lot of systems haven't been updated and have a nice open CVE that wouldn't be there if they weren't using sudo.)
Furthermore, there would be no vulnerabilities if you just unplug your computer and walk away, at some point you need to make usability and risk compromises.
Furthermore, the UNIX user model and file system hierarchy already provides you with RBAC. Combine that with ACLs and SetUID (et al) bits and you’ve already got sudo baked into the core system.
Your point about it being a convenience tool is bang on: it makes it easier to administer all of the above but that convenience, like nearly all convenience tools in computing, comes with a slight security trade off.
To be clear, I don’t agree with the author’s recommendation to ditch sudo. But they are absolutely correct in the technical sense. Just as you are. In fact you are both basically arguing the same point but from different perspectives: “sudo adds a vector of attack”. It’s then up to your threat modelling to decide if that is appropriate or not.
But to come back to my original point: just don’t give people shell access. There’s no need in 99% of cases of servers these days and if we are talking about local user machines, then RBAC is less of an issue since it would be a machine per user.
Also since we're talking about running as root: ironically I've found a lot of people seem to put the following line in their sudoers file:
ALL=(ALL) NOPASSWD:ALL
which is definitely better than logging in as root....but not by a lot.So typical for BSD fans, find a single flaw then try overblow it and show how their flavour of *BSD is better. It's frankly tiring at this point.
Please don’t make generalisations about peoples character.
And yet just a few days ago there was a thread about sudo's recent heap-overflow issue, where the top comment's first line is:
> Sudo must be the program with the largest number of buffer overflows I’ve heard about.
* https://news.ycombinator.com/item?id=33465707#unv_33467000
Aside from what the problems and benefits of sudo may or may not be, bringing up sudo in a "BSD vs. Linux" debate is a red herring: it's just completely unrelated.
Sudo -e FILE opens a copy of the file with $EDITOR and then moves copy to replace FILE
Tramp opens a file including present buffer and writes it as root to achieve the same effect.
EDIT Tramp now works correctly for me sudo -e is simple enough to script looks like a winner for simple things when complex isn't required
I don't use *Nix for the desktop but I would love to find out that FreeBSD allows me to run Kubernetes, Elastic Search, Redis. That I can achieve more throughput with FreeBSD, that Postgres and MongoDB are more performant than on Linux and that the system is more reliable than Linux.
How ls and grep works on FreeBSD is no concern of mine. But running Docker is.
Docker spanked a ton of VC money hosting the worlds software to create the smooth developer experience that we’ve come to expect from them. I don’t really see how an open source project is supposed to compete with that. Particularly as, whilst they gained a lot of mindshare, they don’t show any signs of getting their money back.
The VNET enabled FreeBSD Jails (separate network stack) are more complicated - at start only - you need to get to know how to use the new epair(4) VNET interfaces etc.
For the even simple real life use case, I and my team had for running tests over our site with https://www.sitespeed.io/ :
Use our Docker container to get an environment with Firefox, Chrome, Edge, XVFB and sitespeed.io up and running as fast as you can download them. They work extremely well together with Graphite/InfluxDB and Grafana that you can use to monitor your web site.
docker run --rm -v "$(pwd):/sitespeed.io" sitespeedio/sitespeed.io:26.1.0 https://www.supersite.io/
Our fronted dev and SEO guys can do from their MacOS/Windows machines with 0 knowledge of Linux and docker, just by copypaste the command in _under_ 5 minutes.Achieving the same with Jails in even 1 hour is beyond my imagination.
Still struggling to hear any real life good samples of team work with Jails instead of Docker.
Two parts here.
Part 1
docker/cli is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.
Moby is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.
Seems to be OpenSource project for me.Part 2
Jails were first introduced in FreeBSD version 4.0, that was released on March 14, 2000.
while Docker was publicly released on March 2013. 13 years of advance to give developers what they need. To give enterprises what they need. To get the hype at least.From my POV - more than enough time to create solution on this. TrueNAS did for NASes.
Some other whys for FreeBSD here:
Which I happen to know. But it was an example. If I am going to switch to FreeBSD it has to run the software I need, not to merely provide alternatives. And it has to do it better.
Saying that FreeBSD has jails as an alternative is akin to saying Linux has Gimp as an alternative to Photoshop. Not many are going to switch operating systems to use Gimp instead of Photoshop.
As for the usage ... FreeBSD Jails can have their OWN network stack (with own firewall and interfaces) while Docker can only use Linux network namespaces.
You can launch/start a single process Jail and a single process Docker - here they are similar. You can also unpack entire operating system userland in both and it will also run - with own packages database etc.
Hope that helps.
Then it become natural for teams to share dockerfiles as way for sharing environment setups in all the same way.
Using `docker run something` requires zero to none knowledge of the OS, Networks (nat included), packages. Everything will be auto downloaded.
Compare to jails.
That way I get a coherent well configured system everywhere.
They want be in control of their API, but not boring sysadmins stuff.
Jails are targeting sysadmins, thus Docker wins the adoption.
Like cars with manual transmission.
> But the manual transmission is dying out. Just 41 out of the 327 new car models sold in the United States in 2020, or 13%, are offered with a manual transmission, according to data from Edmunds. That is a tremendous drop from less than a decade ago. In 2011, 37% percent came with manuals.
But since I am in charge of the control loop, I can change it any time I please. Right now I am changing my poudriere configuration for the first time in years to build my packages using LibreSSL instead of OpenSSL. Sure, it requires some tinkering(not alot though) but that tinkering is completely optional on my part.
Yet I have practical question for every Jails user, especially when I see "I did..." statements, like in yours:
>The way I have configured poudriere/pkg
How it works for _team_, how it works for "we", where common ground is expected. I have seen teams of 5-10 using Docker as base ground for their dev (local laptops with Windows, MacOS,Linux)/stage/prod envs, but I have not heard on any of such kind with Jails over last 10 years. I hardly can imagine that without forcing everyone to switch to FreeBSD as daily driver. Can you share experience of your team?
Just like with your Photoshop (or Lightroom) example - if you need to run one - you use macOS or Windows for that - Linux also not possible here.
Correct, K8s and Docker will only work one single platform, namely Linux and Windows. No, wait, that's two. K8s and Docker can only possibly run on these two platforms: Linux, Windows and macOS. Ok, let me start over. The three platforms that support K8s and Docker are Linux, Windows, macOS and Oracle Solaris[1]. That's not... ok, the FOUR and ONLY four platforms that can run K8s and Docker are Linux, Windows, macOS, Illumos[2], Solaris, SmartOS, and FreeBSD.[3] How many did I say?
K8s and Docker run anywhere someone is driven to make them run.
[1] https://medium.com/@norlin.t/port-of-kubernetes-v1-24-0-for-...
[2] https://illumos.org/docs/about/features/ "LX-branded zones provide the Linux system call interface, allowing you to run most Linux application binaries without recompiling them for illumos. This facility is available in several illumos distributions, including SmartOS and OmniOS."
[3] https://yom.iaelu.net/2020/05/freebsd-using-docker-and-kuber...
macOS Docker performance leaves much to be desired, but this is moving goal posts and suggestive of infinite ignorance: nothing other than Docker on Linux is acceptable. But Docker is just software and it will work wherever, and it has its limitations and plenty of competition to do what it doesn't do or does poorly. Die on the Docker Linux hill if you wish, but, last I checked, platform agnostics are versatile, more marketable, and more valuable, while penguinistas have become all too common. "Give me Philips head screwdrivers or give me death! How can you still use flathead drivers? Or star bit drivers? LOL You're not even screwing seriously. Real men use Phillips." Same thing, really. When you need tools to work, you'll take care of them. But precious few, if any, actually worship them.
https://docs.freebsd.org/en/books/handbook/jails/
I have used jails, though a slightly harder to set up, once setup it works great. I used it to open up ssh to an empty jail as a kind of file server. Mainly to sftp files to that I change on my laptop at a remote site. This is in the days before the "cloud".
I am always mystified why FreeBSD and Jails never took off as "the" cloud environment.
Those could be part of why it's not as popular.
If you run your own servers, especially ones that you physically have to maintain the hardware on, FreeBSD is a very reliable choice and the upgrade paths on it are fantastic. I now run some services in Azure and use docker, but all my "on prem" stuff, is still freeBSD powered.
As someone who would like to switch to FreeBSD but cannot, let me give you a few counterpoints. I also loosely follow actual fashion trends in clothing.
I actually think that FreeBSD is already fashionable. It scaled up WhatsApp and Netflix, two of the most impressive startups! Tarsnap uses it. It seems pretty stable, and I would be perfectly fine adopting it.
Where would I adopt FreeBSD? In two places – on the desktop/laptop, and on the server.
On the desktop/laptop: I need perfect screen resolution on my laptop and external monitor, Bluetooth and Wi-Fi, and a way to correctly use my plugged-in microphone and headphones. Ubuntu delivers all of this with some grumbling, and MacOS and Windows do it flawlessly. What does FreeBSD do? Reports seem to say that Wi-Fi and Bluetooth are problematic.
On the server: I need a compelling way to manage thousands of servers if needed, and something like Ansible won't cut it. For whatever reason, distributed systems on top of FreeBSD seems to be something that the community refuses to build on. I'm not sure what kinds of frameworks WhatsApp and Netflix built to manage their servers, but none of it seems to be public.
So, I kind of disagree; I think FreeBSD is fashionable but fails to be utilitarian enough. Fix the problems on the desktop/laptop; or deliver a way of showing how to scale up quickly with FreeBSD, and you'll get your adoption.
I'm not sure what you've tried that does not work!
What is needed but is sort of missing:
- A way to run containers. I see that *BSD may have had container-like features (e.g. jails) long before Linux containers existed. The truth us that the prevailing format is Linux-style containers. Ideally one should be able to run ready-made containers in Linux compatibility mode. An ability to build a native container from a Dockerfile is as important.
- An orchestration engine based around containers. Ideally a port of a subset of k8s, but smaller tools the class of Nomad or Docker Swarm would be a good start.
- A good replacement for Docker / Podman / Containerd, preferably with a modicum of compatibility / convertibility from those. You want an easy local development environment.
I bet bits and pieces of it sort of kind of exist, and the kernel is capable enough. Now someone should put (quite) some effort in building that for real, releasing under a reasonable open license, and maintaining it for years.
This is to say nothing of (desktop /laptop) hardware compatibility yet.
On the smaller end of the scale, docker-compose is fantastic for managing apps if you only have a few systems.
Insofar as encapsulating a container in a file-like format, the primitives are all there: you can export a ZFS snapshot of your jail to a file. Higher level tooling is there as well: iocage has an export subcommand.
Building jails is an exercise left to the reader. I've always found Dockerfiles to be archaic and generally unpleasant to deal with such that I feel like the lack of a Docker compatible template file is a feature not a bug. While I use ansible and some shell scripts, things like Nomad already support (iocage) jails.
I have no idea why the hardware/software industry all focused on the linux kernel as the common base for so many hardware support. The amount of chips supported in the linux kernel is mind boggling.
I worked with FreeBSD in my early career. How do I miss the `make world`. So easy, all-in-one, clean and elegant system.
Everybody runs Linux because it's free, there is no danger of closed private forks gaining any traction, there is no danger of it playing MongoDB. So everyone can safely pick it and invest into it. The pace of progress is very high because of that, and anything broken would be fixed very-very soon.
Because of that ability to rely on Linux being a common thing that nobody can privatize, huge companies like Red Hat and Canonical could form, and entities like IBM, Oracle, Intel, Google, etc could keep investing in the development.
All the above is sort of problematic with FreeBSD. It's too cathedral on one side, and has too few strings attached to hold to it on the other side. So it remains the choice of connoisseurs who need its particular technical brilliance (e.g. the network stack) or its very permissive license (see PlayStation).
grsec is a counter example to this claim
> Grsecurity fully complies with the license of the Linux kernel, the GPLv2. Since grsecurity is delivered as a source code patch, it is not possible under the terms of the GPL to offer a free version under an actual restriction that it be used only for evaluation purposes. Any customer receiving a grsecurity patch receives all the GPL-granted rights and responsibilities, including the right to redistribute patches in their possession or even to sell them to others.
Forks are completely fine. A lot of hardware, often not even esoteric, is supported by non-mainline kernel versions.
I'll die mad about it.
So many in the OSS community applaud vendors for upstreaming a driver to the Linux kernel even though they haven't given any basic form of documentation. Not only is this a massive pain if you happen to work on a project that isn't GPL compatible (back to square one, legally required to clean room implement the algorithm if you want to work with Linux source), but you still have no idea how the device actually works and what the sharp edges are (good luck writing bug fixes!). It's utterly baffling that people have generally accepted Linux as if it is the only FOSS kernel that anyone should ever care about.
Good. And I hope that continues to be the case.
The harder life is for non-copyleft licensed software and ecosystem the more society stands to benefit and the more the software industry stands to redeem itself.
Give and get back some
Sharing it all
Path we know best
we're having a ball
Give and get zeros
Give and get ones
Given to you but
Not you to us
[1]: https://www.openbsd.org/lyrics.html#42For those of us that treasure freedom, through diversity of ideologies there is strength. Why one would actively put a pox on those with nearly the same goals as yourself is beyond me. But, hey… you do you.
Example #2124 out of 251295912931, BSD devs were absolutely hardcore adamant to stick to CVS and SVN as their source control for years after the rest of the world has moved on.
For config management all of the usual suspects should work and all will be painful to scale in non-FreeBSD specific ways. The Opscode related nightmares finally subsided sometime during the pandemic. Was there a specific package you had trouble with?
If memory serves uname(3) should return Linux when you're running a Linux binary, but then you're back to running a hostile program and working around anything that may arise once you have to break out of the Linux userland.
They've always been fine for me, and sound is more reliable than Linux. What went wrong for you?
Today its a different story. FreeBSD is cool, and you will learn more about Linux by learning FreeBSD and it works really well.
However I am currently moving my last system away from FreeBSD. It is just that, Linux/Centos is better, and easier to maintain. Especially third-party packages. There are other things like Linux has support for NVMe-oF which I use together with ZFS on Linux. Applications, especially databases has often 1x-2x better performance. Virtualization is better and more performant. Better NUMA.
Edit: I forgot about Project Trident. They migrated away from FreeBSD to Void Linux with ZFSBootMenu. They did actually support root-on-ZFS through their installer. They gave up after about 18 months, they weren't able to differentiate enough after they stopped being based on FreeBSD.
I remember the disappointment after PC-BSD died and Project Trident invested their 'time' into Void Linux instead of FreeBSD ... then I thought that it actually my be a good move - so finally some Linux would have some ZFS and ZFS Boot Environments love - especially as these people used ZFS Boot Environments on FreeBSD earlier ... and then it all died.
A lot of potential killed/lost there. First - PC-BSD introduced PBI packages - something that is today known on Linux as SNAP for example - some application packed together with libraries and dependencies in one 'package' - then for some reason they killed this idea - while Linux 'reinvented' it as SNAP (and others) and 'The World' was (and sometimes still) is fascinated by it. Sick. Same with Docker that was introduced in 2013. The so called 'World' went crazy with 'containers everywhere' ideology while FreeBSD Jails were available 13 years later since 2000. Sometimes I just got the idea that Linux people do not see any other innovations other then that happened with Linux system. Like FreeBSD Jails or Solaris Zones or IBM WPARs or HP-UX nPars never existed ...
But in the end the rewrite was better for everyone. Ars has a good writeup: https://arstechnica.com/gadgets/2021/03/buffer-overruns-lice...
As far as I know it's been merged back into the mainline kernel now.
For a desktop X is core functionality.
SystemD and k8s catalyzed my decision.
I dont want k8s to be my OS. And SystemD is not the linux I remember falling in love with.
I am not mad at Linux, but monoliths at the 10M LoC order always need competition. Otherwise we have a major source of unchecked complexity growth with no escape.
> On Linux systems, it is very common to use sudo for operations that require root permissions
Not common unless authors used Ubuntu desktop, which pushed sudo usage to the extremes. I don't even have it installed. However, frequent sudo usage usually indicates something is wrong with how you use the system, maybe account permissions or lack of knowledge of how to use it properly.
whats wrong with it in your opinion?
On the other hand, I have seen excessive sudo usage only in Ubuntu and some Debian/Arch docs. Maybe, this is the reasoning behind their comment that sudo is frequently used.
<joke> Also, you can easily spot Ubuntu users: they'll type almost any command with sudo :D </joke>
Ubuntu, and Fedora and RHEL et al., and SUSE. Most of the big players prefer sudo.
However, on a laptop and used as a graphical workstation, it can be painful. I'd love to see a hardware vendor (e.g., like System76) bring out a pre-packaged FreeBSD laptop. I think a lot of people in the *nix community would jump on that, myself included.
I find it interesting that the Linux programs lspci, lsusb etc have ended up with arguably more consistent naming than the BSD equivalents pciconf and usbconfig.
# lspci
00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor Family DRAM Controller (rev 09)
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
00:16.0 Communication controller: Intel Corporation 6 Series/C200 Series Chipset Family MEI Controller #1 (rev 04)
00:19.0 Ethernet controller: Intel Corporation 82579LM Gigabit Network Connection (Lewisville) (rev 04)
00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 04)
00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller (rev 04)
00:1c.0 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 1 (rev b4)
00:1c.1 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 2 (rev b4)
00:1c.4 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 5 (rev b4)
00:1c.6 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 7 (rev b4)
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 04)
00:1f.0 ISA bridge: Intel Corporation QM67 Express Chipset LPC Controller (rev 04)
00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset Family 6 port Mobile SATA AHCI Controller (rev 04)
00:1f.3 SMBus: Intel Corporation 6 Series/C200 Series Chipset Family SMBus Controller (rev 04)
03:00.0 Network controller: Intel Corporation Centrino Ultimate-N 6300 (rev 3e)
0d:00.0 System peripheral: Ricoh Co Ltd PCIe SDXC/MMC Host Controller (rev 08)
0e:00.0 USB controller: NEC Corporation uPD720200 USB 3.0 Host Controller (rev 04)
# lsusb
Bus /dev/usb Device /dev/ugen0.3: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus /dev/usb Device /dev/ugen0.4: ID 04f2:b217 Chicony Electronics Co., Ltd Lenovo Integrated Camera (0.3MP)
Bus /dev/usb Device /dev/ugen2.2: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus /dev/usb Device /dev/ugen0.2: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus /dev/usb Device /dev/ugen0.1: ID 0000:0000
Bus /dev/usb Device /dev/ugen2.1: ID 0000:0000
Bus /dev/usb Device /dev/ugen1.1: ID 0000:0000
# uname -v
FreeBSD 13.1-RELEASE-p3 GENERICFor me, it is a prerequisite for using *BSD as a desktop OS, and what stopped me from migrating from Linux to *BSD last time.
Edit: Formatting
Source: Wikipedia
Also a stable OS but rolling packages is a great combo for me. Most Linux distros have everything rolling or fixed.
Google Chrome Passwords. For some reason you can't install Google Chrome on FreeBSD, you can install Chromium but all my saved passwords are stored in Google-Chrome, and you can't (it seems) port it !
So now I'm stucked with, Ok do I spend a day and move everything (manually) to Firefox/Chromium or do I just suck it up and stay where I am.
Yes yes I know there are many "solutions" how to store passwords, that is not the problem, the problem is PORTING my 100+ passwords/logins Ive gathered over the years to a new shiny solution.
- https://github.com/mrclksr/linux-browser-installer
It will just use FreeBSD Linux Binary Compatibility layer (not emulation).
FreeBSD supports most Linux syscalls with it so it can run unmodified Linux binaries 'just like that'.
More here:
- https://docs.freebsd.org/en/books/handbook/linuxemu/
Regards.