21.3 Ubuntu/Debian 兼容层
注意
由于 Ports sysutils/debootstrap 长期未更新,经测试尚不支持 Ubuntu 24.04 和 Debian 13。
视频教程:06-FreeBSD-Ubuntu 兼容层脚本使用说明
Ubuntu 兼容层

以下教程在 FreeBSD 14.3-RELEASE 上测试通过。
采用类似的方法也可以构建 Debian 兼容层。其他系统的支持情况请参见 /usr/local/share/debootstrap/scripts/ 目录。
开始构建 Ubuntu 兼容层(基于 Ubuntu 22.04 LTS)
启用相关守护进程和服务:
构建 Ubuntu 22.04 LTS 基本系统:
挂载文件系统
将 nullfs_load="YES" 写入 /boot/loader.conf。
将以下行写入 /etc/fstab:
检查挂载有无报错。挂载所有在 /etc/fstab 中标记为自动挂载的文件系统:
在 Ubuntu 兼容环境中创建 home 目录:
重启系统:
设定 Linux 内核版本
如果不进行这一步,在 chroot 时可能会提示 FATAL: kernel too old。
6.16.2 仅为示例,建议参考 The Linux Kernel Archives 中公布的版本号进行设置。
进入 Ubuntu 兼容层
首先 chroot 进入 Ubuntu 兼容环境,移除会导致报错的软件:
Ubuntu 换源
在卸载 rsyslog 之后需要更换软件源;由于 SSL 证书尚未更新,因此暂时无法使用 HTTPS 源。
使用 ee 编辑 Ubuntu 兼容环境中的 APT 软件源配置文件:
写入软件源:
进入 Ubuntu 兼容层,开始更新系统,安装常用软件:
附录:Ubuntu 兼容层脚本(基于 Ubuntu 22.04 LTS,FreeBSD 14.3-RELEASE 测试通过)
脚本内容如下:
附录:Debian 12(bookworm)(FreeBSD 14.2-RELEASE 测试通过)
脚本内容如下:
附录:安装 Windows 11 字体(可选。自制包,打包同时兼容 debian 和低版本 Ubuntu)
附录:运行 X11 软件
允许所有本地用户访问当前 X Server 实例:
故障排除与未竟事宜
不知道程序的命令行启动命令是什么?
请按以下方法依次查找 (以 gedit 为例):
直接执行软件包名
# gedit;whereis 软件包名,定位后执行。whereis gedit;通过
find命令全局查找# find / —name 软件包名——# find / —name gedit。通过软件图标定位,进入
/usr/share/applications目录,根据软件包名找到对应文件,并使用文本编辑器(如ee、nano)打开。(软件图标本质上是文本文件,而非软链接或图片),找到其中的程序启动命令并复制到终端运行即可。
如何查找软件?
将 XXX 换成想要搜索的软件名即可。
缺失 .so 文件
首先看看缺失哪些 .so 文件,一般不会只缺失一个。
可以看到 libffmpeg.so => not found,缺“libffmpeg.so”。
安装工具
查看
libffmpeg.so属于哪个包:
可以看到多个包都提供了这个 so 文件,随便安装一个:
按照上述路径复制文件,并刷新 ldd 缓存:
再次查看可执行文件
/usr/bin/qq所依赖的动态链接库:
systemd 与 wine
systemd 不可用,但可以使用 service xxx start 命令替代。
笔者试图导入过 https://github.com/zq1997/deepin-wine 源以安装 deepin-qq,deepin-wechat 等软件,但都提示 段错误。所有 Wine 程序均无法正常运行。如果读者能解决这个问题,请提出 issue 或者 PR。
最后更新于
这有帮助吗?