TUTORIAL · 实战教程
Linuxulator + Jail,一篇搞定
· 不想开虚拟机?FreeBSD 自带 Linuxulator,能直接跑不少 Linux 二进制程序(性能接近原生)。
· 想装 Chrome / Edge / Brave 来解决 Widevine DRM(Netflix/Spotify 等)播放问题?用 Linuxulator 就够。
· 需要更完整的 Linux 用户态(能用 apt 装包)?再加一层 Ubuntu Jail(chroot)。
📖 这篇文章按"能照着做"来写:先把 Linuxulator 跑起来,再告诉你怎么装 Chrome、怎么可选上 Jail。
CONCEPT
Linuxulator 是 FreeBSD 内置的一套 Linux 二进制兼容层:
· 它不是虚拟机,也不是像 Wine 那样"翻译指令"。
· 更准确地说:它在 FreeBSD 上实现了 Linux 内核的部分系统调用(syscall),从而兼容 Linux ABI。
✅ 优势
· 启动快、资源占用低
· 性能很好(接近原生)
⚠️ 局限
· 需要另装 Linux 用户态依赖
· ABI 版本有限,个别程序会报 Kernel too old
基础配置

Linuxulator 是 FreeBSD 自带功能,不需要额外安装。你需要做的是:
1)开启 D-Bus(桌面环境常用)与 Linux 兼容层:
sudo sysrc dbus_enable="YES"sudo sysrc linux_enable="YES"
2)加载内核模块(并加入开机加载列表),然后重启:
sudo sysrc kld_list+="linux linux64"reboot
💡 提醒:BSD 家族里"官方实现 Linuxulator"的主要是 FreeBSD;不要把它当作所有 BSD 都有的通用功能。
(可选)强制伪装 Linux 版本
如果你遇到 "Kernel too old" 一类错误,可以尝试覆盖 compat.linux.osrelease(不保证一定有效):
echo"compat.linux.osrelease=6.12.0" | sudo tee -a /boot/loader.conf
用户态

很多 Linux 程序"能启动"不代表"能运行",常见卡点是:缺少 Linux 的用户态库(例如 glibc)。
FreeBSD Ports / pkg 里提供了不少 Linux 用户态软件包,常见路径是:
· 安装后文件会放在:/compat/linux
· 以 Rocky Linux 系列为主(比如 rl9)
例如安装基础用户态(包含大量 GNU/GLIBC 依赖):
sudo pkg install linux_base-rl9
另外也有一些"已经打包好的 Linux 应用",装完就能用(会自动补齐依赖),例如:
# 示例:安装 Linux 版 Sublime Textsudo pkg install linux-sublime
重点场景
为什么很多人要折腾这一步?因为:
· Google 官方通常不提供 FreeBSD 版 Chrome(FreeBSD 更多是 Chromium)
· Chrome + Widevine 能播放 DRM 内容(Netflix/Spotify 等),而 FreeBSD 原生浏览器生态对 DRM 支持普遍偏弱
方法 A(推荐)
sudo pkg install linux-chrome
然后安装 DRM 相关组件:
sudo pkg install foreign-cdmcd /usr/ports/www/linux-widevine-cdm/ && sudo make install clean
安装完成后,桌面环境里通常会出现 Chrome 的启动项(Desktop Entry),点开就能用。
如果通过 Ports 安装的 Chrome 有问题,可以先卸载再换方法:
sudo pkg remove linux-chrome
方法 B
git clone https://github.com/mrclksr/linux-browser-installer.gitcd linux-browser-installersudo ./linux-browser-installer install chrome
这个脚本会帮你安装并配置一个 Ubuntu 环境(并设置开机启动),适合"想省心"的人。
进阶玩法
这是更"魔法"的用法:把 FreeBSD 原生软件包和 Linux 的 chroot 混在一起,从而跑 Steam 客户端,再通过 Wine/Proton 玩 Windows 游戏。
📦 这部分更像专题,建议直接看对应教程:FreeBSD 安装 Steam → linuxulator-steam-utils
完整 Linux 生态
优先方案
只跑少量 Linux 应用 → 用 Ports 的 Linux 软件包(简单、省事)
才需 Jail
需要 Ubuntu/Debian 的 apt 生态,或某些只在 Ubuntu 上好装的依赖
1
安装 debootstrap
sudo pkg install debootstrap
默认会使用(或建议你使用)这个目录来放 Ubuntu rootfs:
/compat/ubuntu/
⚠️ 不要用 /compat/linux,它通常留给 linux_base-rl9 等 Rocky Linux 相关内容。
2
拉一个 Ubuntu 22.04(Jammy)的 rootfs
你可以按需替换为你更近的镜像:
sudo debootstrap jammy "/compat/ubuntu/""http://tw.archive.ubuntu.com/ubuntu"
3
(可选)把 Linux 需要的目录挂进去
将以下内容写入 /etc/fstab:
devfs /compat/ubuntu/dev devfs rw,late 0 0tmpfs /compat/ubuntu/dev/shm tmpfs rw,late,size=1g,mode=1777 0 0fdescfs /compat/ubuntu/dev/fd fdescfs rw,late,linrdlnk 0 0linprocfs /compat/ubuntu/proc linprocfs rw,late 0 0linsysfs /compat/ubuntu/sys linsysfs rw,late 0 0/tmp /compat/ubuntu/tmp nullfs rw,late 0 0
如果你希望 Jail 内的 home 与宿主隔离,可以单独挂一个目录:
/home/user/UbuntuHome /compat/ubuntu/home nullfs rw,late 0 0
需要共享宿主目录时再按需挂载,例如:
/home/user/Downloads /compat/ubuntu/mnt/host_shared nullfs rw,late 0 0
4
进入 Ubuntu Jail 并配置 apt 源
重启后进入 chroot:
sudo chroot /compat/ubuntu /bin/bash
然后编辑 /etc/apt/sources.list,补上 main / restricted / universe(示例仍使用台湾镜像):
deb [trusted=yes] http://tw.archive.ubuntu.com/ubuntu jammy main restricted universedeb [trusted=yes] http://tw.archive.ubuntu.com/ubuntu jammy-security main restricted universedeb [trusted=yes] http://tw.archive.ubuntu.com/ubuntu jammy-updates main restricted universe
更新并安装常用工具:
apt updateapt install vim
💡 显示与输入法提示
· chroot 里的 X11 程序理论上可以直接显示到 FreeBSD 桌面上,但不一定有 3D 加速。
· 如果连不上显示,可尝试:xhost local:
· systemd 在 chroot 里不可用;服务通常需要你手动执行对应二进制文件启动。
· Docker / Flatpak / Snap 这类依赖更完整隔离与内核能力的方案,在 chroot 场景下通常不可用。
SUMMARY
想省资源跑 Linux 程序 → 先上 Linuxulator(FreeBSD 内置)
想跑 Chrome / DRM → linux-chrome + foreign-cdm + linux-widevine-cdm
想要 apt 的完整生态 → 再加 Ubuntu Jail(chroot)
💡 行动建议
你可以先按本文把 Linuxulator 打开,然后直接尝试安装 linux-chrome。如果你装包/依赖频繁"缺东缺西",再决定要不要上 Ubuntu Jail。
REFERENCES · 参考资料
· LinuxJails - FreeBSD Wiki
· Chapter 12. Linux Binary Compatibility - FreeBSD Handbook
· 《FreeBSD 从入门到跑路》:Linux 兼容层(Ubuntu/Debian)