使用 Rocky-Container-base tgz 包部署Linuxulator userland
我在 在 FreeBSD Linuxulator 中运行NVIDIA Cuda 实践中遇到执行 miniconda-installer 运行报错,推测和Python3运行环境相关。想对比尝试 Linuxulator 快速起步 中更新 linuxulator 中 Rocky Linux 9 的Python(系统提供的 linux-rl9 中python配置有问题)。但是发现发行版的 linuxulator linux userland实际上是非常非常精简的系统,甚至没有提供 DNF包管理器 包管理器。
考虑到 linuxulator 和 FreeBSD Linux Jail 实际底层原理一致,既然 使用 ubuntu-base tgz 包部署Linux Jail Ubuntu 能够通过Ubuntu core来构建,那么Rocky Linux应该也可以以相同方式构建 linuxulator userland 环境。
Rocky Linux download > 9 > images > x86_64 提供了 Rocky-9-Container-base.latest.x86_64.tar.xz ,虽然是针对 Container 的镜像压缩包,但是jail非常类似container,实际上都剥离了 Systemd进程管理器 ,应该可以共用。
激活Linuxulator
执行以下命令激活
Linuxulator:
Linuxulatorkldload linux
kldload linux64
配置持久化,修改
/etc/rc.conf添加:
/etc/rc.conf 持久化激活 Linuxulatorlinux_enable="YES"
部署Linuxulator userland
备注
不要使用 Rocky-9-Container-Minimal.latest.x86_64.tar.xz ,这个 minimal 版本不包含 DNF包管理器 包管理器,也就是说,实际上FreeBSD linuxulator 提供的userland其实就是 minimal 版本。
解压缩下载
Rocky-9-Container-Base.latest.x86_64.tar.xz:
# 移除(备份) /compat/linux
mv /compat/linux /compat/linux.bak
mkdir /compat/linux
# 解压缩下载的Rocky Linux 9 base压缩包
tar xfp Rocky-9-Container-Base.latest.x86_64.tar.xz -C /compat/linux/
重启一次系统,重启后系统会自动挂载Linux兼容文件系统(或者如 Linuxulator 快速起步 配置 /etc/fstab 并挂载) <= 因为我之前部署安装linuxulator,系统自动为挂载了 /compat/linux 目录下的 proc sys shem 文件系统,所以这步我实际没有执行,但事后复盘我觉得如果我手工解压缩Rocky-9-Container-Minimal包,并且也enable linux,那么系统也会自动挂载这些linux文件系统
备注
执行上述解压缩之前,请先停止FreeBSD服务器上linux服务 service linux stop ,如果不行,则注释掉 Linuxulator 快速起步 中配置启动linux兼容层的 /etc/rc.conf 部分并重启主机。
完成上述解压缩部署 Rocky Linux 之后,再恢复 linux 服务
在FreeBSD Host主机上将
/etc/resolv.conf复制给Jail使用:
/etc/resolv.conf 复制给Jail# 在Host主机上执行
cp /etc/resolv.conf /$jail_dir/containers/$jail_name/compat/rocky/etc/
更新:
dnf update
备注
linuxulator 不需要复杂完整的环境,所以更新系统后就可以顺利使用了。对于 FreeBSD Linux Jail 则参考 使用 Rocky-Container-base tgz 包部署Linux Jail Rocky 继续设置包管理以及安装必要的工具软件。