当前位置:首页>Linux>在 FreeBSD 上跑 Linux 程序:Linuxulator + Jail,一篇搞定

在 FreeBSD 上跑 Linux 程序:Linuxulator + Jail,一篇搞定

  • 2026-09-02 19:11:27
在 FreeBSD 上跑 Linux 程序:Linuxulator + Jail,一篇搞定

TUTORIAL · 实战教程

在 FreeBSD 上跑 Linux 程序

Linuxulator + Jail,一篇搞定

· 不想开虚拟机?FreeBSD 自带 Linuxulator,能直接跑不少 Linux 二进制程序(性能接近原生)。

· 想装 Chrome / Edge / Brave 来解决 Widevine DRM(Netflix/Spotify 等)播放问题?用 Linuxulator 就够。

· 需要更完整的 Linux 用户态(能用 apt 装包)?再加一层 Ubuntu Jail(chroot)。

📖 这篇文章按"能照着做"来写:先把 Linuxulator 跑起来,再告诉你怎么装 Chrome、怎么可选上 Jail。

CONCEPT

你要先搞清楚:Linuxulator 到底是什么?

Linuxulator 是 FreeBSD 内置的一套 Linux 二进制兼容层:

· 它不是虚拟机,也不是像 Wine 那样"翻译指令"。

· 更准确地说:它在 FreeBSD 上实现了 Linux 内核的部分系统调用(syscall),从而兼容 Linux ABI。

✅ 优势

· 启动快、资源占用低

· 性能很好(接近原生)

⚠️ 局限

· 需要另装 Linux 用户态依赖

· ABI 版本有限,个别程序会报 Kernel too old

STEP 1

基础配置

把 Linuxulator 打开(开机自启)

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

STEP 2

用户态

让 Linux 程序真的能跑(关键在用户态依赖)

很多 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

KEY

重点场景

在 FreeBSD 上装 Linux 版 Chrome(解决 DRM)

为什么很多人要折腾这一步?因为:

· Google 官方通常不提供 FreeBSD 版 Chrome(FreeBSD 更多是 Chromium)

· Chrome + Widevine 能播放 DRM 内容(Netflix/Spotify 等),而 FreeBSD 原生浏览器生态对 DRM 支持普遍偏弱

方法 A(推荐)

直接装 Ports 的 linux-chrome

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

用脚本自动安装(顺便帮你建 Ubuntu Jail)

git clone https://github.com/mrclksr/linux-browser-installer.gitcd linux-browser-installersudo ./linux-browser-installer install chrome

这个脚本会帮你安装并配置一个 Ubuntu 环境(并设置开机启动),适合"想省心"的人。

ADVANCED

进阶玩法

Linuxulator +(部分)chroot 跑 Steam

这是更"魔法"的用法:把 FreeBSD 原生软件包和 Linux 的 chroot 混在一起,从而跑 Steam 客户端,再通过 Wine/Proton 玩 Windows 游戏。

📦 这部分更像专题,建议直接看对应教程:FreeBSD 安装 Steam → linuxulator-steam-utils

OPTIONAL

完整 Linux 生态

需要完整 Linux 生态?建一个 Ubuntu Jail(chroot)

优先方案

只跑少量 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

一句话记住这套路线

1

想省资源跑 Linux 程序 → 先上 Linuxulator(FreeBSD 内置)

2

想跑 Chrome / DRM → linux-chrome + foreign-cdm + linux-widevine-cdm

3

想要 apt 的完整生态 → 再加 Ubuntu Jail(chroot)

💡 行动建议

你可以先按本文把 Linuxulator 打开,然后直接尝试安装 linux-chrome。如果你装包/依赖频繁"缺东缺西",再决定要不要上 Ubuntu Jail。

REFERENCES · 参考资料

· LinuxJails - FreeBSD Wiki

· Chapter 12. Linux Binary Compatibility - FreeBSD Handbook

· 《FreeBSD 从入门到跑路》:Linux 兼容层(Ubuntu/Debian)

精彩阅读:
HP 首台骁龙 X2 Elite 笔记本开卖:同级配置便宜几百美元,Intel 该紧张了
ARM 笔记本/台式机销量“爆炸式增长”:预算玩家的救命稻草,还是又一轮营销幻觉?

最新文章

随机文章