Description
Description
FreeBSD lacks support for containerization generally but it does support QEMU. I was able to get Lima running on FreeBSD 13.0 but it doesn't work out of the box. I suspect that it wouldn't be difficult to fine-tune to get it up and running. And I feel that Lima could bring Docker support to a platform that currently lacks it which would be awesome.
I wrote-up a bit more detail on how I got Lima running on FreeBSD 13.0 here: https://the-empire.systems/freebsd-docker-2022
It's extremely slow but it works! I'm sure that I could have added something to QEMU's settings to make it perform better but I'm ignorant to the features that would help in this situation.
Installing Lima on FreeBSD 13.0:
- Compile+install Lima from source:
pkg install gmake go git
git clone https://github.com/lima-vm/lima /opt/lima
cd /opt/lima
For some reason, compiling Lima fails with: pkg/sshutil/sshutil_others.go:14:19: undefined: err
Adding the following to the detectAESAcceleration()
function in pkg/sshutil/sshutil_others.go
fixes it:
var err error
Once err
is defined, Lima compiles just fine with gmake
:
gmake && gmake install
Not sure why that fails just on FreeBSD but nothing else.
- Compile+install QEMU 7.0 from source:
pkg install ninja pkgconf glib pixman
git clone --depth=1 git://git.qemu-project.org/qemu.git /opt/qemu
mkdir -p /opt/qemu/build
cd /opt/qemu/build
../configure
gmake ## add -j to speed up the compilation
gmake install
Not sure how necessary this actually is but the version of QEMU packaged with the FreeBSD repos is 6.2.0 so upgrading to 7.0 seemed like a good idea.
- Set the CPU to emulate:
FreeBSD doesn't have -cpu host
(unlike Linux and MacOS) available so I had to manually specify the processor on my machine (I was using an Intel VPS with Vultr):
export QEMU_SYSTEM_X86_64="qemu-system-x86_64 -cpu Cascadelake-Server"
Problems needed to be solved before it's usable on FreeBSD:
- Slowness (I am not to sure where to start there but I suspect that
-cpu host
would really help with this) - Minor: Fix that
undefined: err
inpkg/sshutil/sshutil_others.go
for FreeBSD (could be as simple as defining that variable if the OS is FreeBSD) - Implement logic to not use
-cpu host
if OS is FreeBSD
It would be so nice to be able to interact with containers while on FreeBSD. Please let me know if you have any questions or if this is not something desired to support.