Linuxulator 快速起步

FreeBSD提供了Linux二进制程序兼容,也就是 Linuxulator ,可以在FreeBSD上直接运行无需修改的Linux二进制程序。

要激活 Linuxulator ,执行以下命令:

加载linux模块激活 Linuxulator
kldload linux
kldload linux64
  • 要使配置持久化,则修改 /etc/rc.conf 添加:

配置 /etc/rc.conf 持久化激活 Linuxulator
linux_enable="YES"
  • 安装Rocky Linux 9 userland:

安装Rocky Linux 9 userland
pkg install linux_base-rl9

备注

根据handbook说明, Linux userlands 当前推荐采用 Rocky Linux 9 userland

以前的 CentOS 7 不建议采用 (废弃) 执行以下命令在系统中安装CentOS 7软件包源的Linux子系统 :

安装CentOS 7软件包源的Linux子系统
pkg install linux_base-c7

如果已经安装过旧版本 linux_base-c7 可以先移除,然后再安装 linux_base-rl9 ( Rocky Linux 9 userland ):

移除CentOS 7 Linux系统
pkg remove linux_base-c7

根据安装提示,还需要在 /etc/fstab 中添加以下挂载配置:

linprocfs   /compat/linux/proc      linprocfs   rw               0    0
linsysfs    /compat/linux/sys       linsysfs    rw               0    0
tmpfs       /compat/linux/dev/shm   tmpfs       rw, mode=1777    0    0

然后执行以下命令挂载上述兼容文件系统:

mount /compat/linux/proc
mount /compat/linux/sys
mount /compat/linux/dev/shm

当然,也可以重启系统生效

  • 升级 Rocky Linux 9 userland :

升级 Rocky Linux 9 userland
# 通过chroot进入Rocky Linux环境
chroot /compat/linux /bin/bash

# 更新dnf缓存
dnf update -y

# 升级
dnf upgrade -y

警告

默认 linux_base-rl9minimal 版本,没有提供 DNF包管理器 。所以需要通过 使用 Rocky-Container-base tgz 包部署Linuxulator userland 来构建一个更完整系统才能执行本段更新

备注

这里有一个问题,我在FreeBSD 15上实践 linuxulator ,发现 linux_base-rl9 没有包含 DNF包管理器 ,似乎是一个不完整的环境。难道需要像 使用 ubuntu-base tgz 包部署Linux Jail Ubuntu 一样用官方的 core.txz 包来构建基础环境?

Rocky Linux download > 9 > images > x86_64 提供了 Rocky-9-Container-Minimal.latest.x86_64.tar.xz ,虽然是针对 Container 的镜像压缩包,但是jail非常类似container,实际上都剥离了 Systemd进程管理器 ,应该可以共用

另外 Rocky Linux 9 minimal jail working, need to figure out the next steps 提到了通过 podman 保存镜像 tar.gz 文件也是一个思路,实际上和 无需Docker Registry传输Docker镜像docker save 是异曲同工。

  • (可选)安装Python 3

安装 python 3
dnf install python3 -y
  • (可选)安装开发工具(对于很多python包需要)

安装开发工具
dnf groupinstall "Development Tools" -y
  • (可选)安装pip for Python 3

安装pip for Python 3
dnf install python3-pip -y

参考