Ubuntu Linux Jail on FreeBSD 12.2-Release
wiki.freebsd.org
wiki.freebsd.org
As far as things that depend on systemd — sort of. Sure, you won't be able to manage servers with systemctl and that sort of thing; systemd as pid 1. Smaller pieces under the systemd umbrella, of which there are several, may work well enough.
And all are in one repo with tight coupling.
For an "init system".
I distinguish four types. There are clever, hardworking, stupid, and lazy officers. Usually two characteristics are combined. Some are clever and hardworking; their place is the General Staff. The next ones are stupid and lazy; they make up 90 percent of every army and are suited to routine duties. Anyone who is both clever and lazy is qualified for the highest leadership duties, because he possesses the mental clarity and strength of nerve necessary for difficult decisions. One must beware of anyone who is both stupid and hardworking; he must not be entrusted with any responsibility because he will always only cause damage.
Whether or not such an architecture is desirable is debatable, but the portrayal of systemd as just an init system is a fundamental misunderstanding of what systemd is.
It made perfect sense to pull in udevd, which had existed externally for a long time, and tightly couple it so that it can no longer be used independently? (The Gentoo folks forked eudevd.)
No, I think you can guarantee that the interface will change at some point.
Suppose it did currently only interact through a stable D-Bus interface. What stops them from adding some new interaction and supplementing or replacing the existing one with it? You're left with a guarantee that systemd-resolved will continue to support the old API that systemd-networkd may stop using.
The second reason is that systemd provides features for which there simply is no alternative. Desktop environments are entangled with logind, because it's the only software providing that functionality. Before logind they had a hard dependency on ConsoleKit, which was pretty much abandoned. Reimplementing all these features takes time.
One note: many people pretend sysv init has been dead and left behind, but I've seen production systems in major places still using it (not just embedded either). It's not nearly as dead as people might like to think.
The persistent journal is enabled by default in Debian testing.
You'll meet a few annoying dependencies on it, but as one will quickly find, it's rarely critical, and mostly because of people using its dbus implementation or similar (which has no relation to the rest of systemd, and yet is entangled in libsystemd...).
What you would need systemd for is virtual machines - and that case is better handled by just running Linux under bhyve(8).
There are some commercial software packages that run which are useful in more limited scopes. For example, I run a linux PVR server (SageTV), and Intel's Vtune GUI. But getting chrome & electron working would enable tons of commercial linux apps.
But, Chrome is already ported to FreeBSD [2]. Not sure why you'd need Linux Chrome specifically. In fact, there's already a port of Electron [3].
[1] https://forums.freebsd.org/threads/linuxulator-how-to-run-go...
These ports will be removed soon due to their Python 2 dependency, and the available versions are not supported anymore [2].
[1] https://www.freshports.org/search.php?query=electron&search=...
You need Linux electron working in order to be able to run things like Slack's Linux desktop app, and other electron apps which are compiled for Linux.
And you need the Linux binary chrome from Google in order for DRM to work.
You CAN use Netflix/Spotify/... on Chrome under Ubuntu Linux Jail on FreeBSD.
Reason: Widevine DRM
How's that?
WSL had serious performance issues due to design differences between linux and NT. Linux and freebsd both being unices, there is no such impedance. Some features (like cgroups) remain unimplemented, true, but there haven't been any big difficulties afaik.
> facing many of the same difficulties that prompted the Windows team to just run Linux in a hypervisor
If by difficulties, you mean implementing system calls, this is being kept tabs on here: https://wiki.freebsd.org/Linuxulator
One that comes to mind is FreeBSD's kqueue, which opens a file descriptor for every file watched [1]
So inotify, inotify_add_watch, inotify_rm_watch isn't started. Lots of applications need watching of changes on directories. Even plain old FreeBSD gets messed since a large webpack project is going to chew up way too much.
If you're interested in this type of system call across operating systems check out https://github.com/emcrisostomo/fswatch
On WSL1/2:
Namely in WSL1, there were serious issues with package systems like npm, node_modules/ would have file descriptors get clogged, and it took a full system reboot to get WSL working again: https://github.com/microsoft/WSL/issues/1529. WSL2 Fixes it.
[1] https://emcrisostomo.github.io/fswatch/doc/1.8.0/fswatch.htm... See Freebsd -> kqueue -> Peculiarities
I agree it's largely "just" a matter of implementing the missing functionality, which has a large surface area and requires building novel infrastructure in the FreeBSD kernel.
Regarding clone() - it's rfork(2) you want to compare to, not fork(2). Not the same, sure, but much closer.
(Disclaimer: I'm one of the people working on it, so I'm obviously biased.)
WSL2 gives you pretty much the whole linux environment. A truly future of Linux of desktop...
And i should say I love SmartOS, it is a really cool bit of tech... I just love simplicity more, and a compatibility layer is never simple.
If linux comes out with tools remotely approaching the quality of either freebsd or solaris planning everyone should drop what they're doing to go watch. Linux ain't gonna improve itself, and the pains of docker are an excellent entry to pressuring linux devs to do anything that can improve userspace experience, an otherwise deeply unlikely prospect. It took them more than a decade to implement basic jailing after BSDs and the tech is still, shall we say, extremely rough....
The ancient rhel something something doesn’t like the debian other thing, and I even saw a changelog about broken kernel compatibility and flipping a flag in proc or cmdline but then I forgot what it said.
Whatever. Life is short. Docker is in no way independent of the host kernel. Spend time debugging something else.
SmartOS is great though. I wish they’d take over the world.
If the host system does not enable vsyscall emulation, running binaries on such old distributions will lead to segfaults. (Which can be resolved by booting the host kernel with vsyscall=emulate.)
I would love any details you can provide; that sounds interesting. (I'm an OS nerd)
Which aims to provide something similar as Docker for FreeBSD.
pot is nothing more than a Proof of Concept, a model that uses FreeBSD technologies to implements a typical container workflow: jail, ZFS, pf, rctl and cpuset.
There is no compatibility to OCI standards, but I believe it would be possible to implement them.
Actually, it would with qemu user-mode emulation. This can be done transparently with binfmt_misc, which is a one or two-liner on many distributions.
BuildKit now can now also automatically without any additional setup:
https://github.com/moby/buildkit/pull/1516
But I do understand your point, Linux emulation on FreeBSD may be incomplete/incorrect in places, so you have to address to problems at the same time. Unfortunately, I think this is also what people would expect from Docker support - the ability to pull arbitrary images.
This is really an important point, MS failed to get WSL1 good enough so WSL2 was just a plain Linux kernel being virtualized. Maybe running a some partially virtualized linux kernel(Linux already has modes for this?) via bhyve relying on a host FreeBSD filesystem (using the already developed layering) might be an feasible approach that requires less Linux API chasing while retaining the "native" FS advantage at the expense of some extra memory (bhyve) ?
Frankly, though docker failed to deliver most of its promises, but at least it became a standardized deployable unit.
One stark example of how clean the FreeBSD install is: there are something like 9 or 10 processes running after boot for a fresh FreeBSD install, compared to dozens for a fresh Debian or Ubuntu install.
Using jails is also a lot more pleasant than using docker.