使用 ubuntu-base tgz 包部署Linux Jail Ubuntu

备注

我在 FreeBSD 15 Alphas更新和升级 后实践 FreeBSD Linux Jail 遇到了不少问题,在将底层Host主机文件系统更换到UFS之后,虽然解决了 APT包管理 运行问题,但是由于 debootstrap 没有正常工作,导致Linux Jail内部强制安装软件包出现混乱依赖。所以,我考虑从最基本的base系统开始构建Ubuntu环境,主要目标是:

  • 解决目前FreeBSD 15 Alpha 2环境下 debootstrap 不能正确构建Ubuntu chroot环境(我突然想到实际上是Jail内部是FreeBSD 14 RELEASE-14.3,为何R14.3提供的 debootstrap 会受到Host主机15 Alpha 2影响?)

  • 部署FreeBSD Linux Jail默认不支持的Ubuntu 24.04 系统(默认只有 22.04 jammy)

另外,参考中提及的 GitHub: NapoleonWils0n/davinci-resolve-freebsd-jail 提供了在FreeBSD Jail中运行Ubuntu系统来支持Nvidia和Cuda (方案是为了推广 DaVinci Resolve 好莱坞级别的专业剪辑软件,但是对于如何在FreeBSD Jail中使用NVIDIA CUDA有很好的参考价值)

下载Ubuntu base

备注

Ubuntu官方release提供了不同架构的base系统包,可以用来构建基本系统

下载Ubuntu官方提供的base系统压缩包
#fetch https://cdimage.ubuntu.com/ubuntu-base/releases/noble/release/ubuntu-base-24.04.3-base-arm64.tar.gz \
#    -o /$jail_dir/media/ubuntu-base-24.04.3-base-arm64.tar.gz

fetch https://cdimage.ubuntu.com/ubuntu-base/releases/noble/release/ubuntu-base-24.04.3-base-amd64.tar.gz \
    -o /$jail_dir/media/ubuntu-base-24.04.3-base-amd64.tar.gz

  • 将 Ubuntu Base 包解压缩到 ludev/compat/ubuntu 目录:

解压缩
#tar xvfp /$jail_dir/media/ubuntu-base-24.04.3-base-arm64.tar.gz -C /$jail_udir/containers/$jail_name/compat/ubuntu

tar xvfp /$jail_dir/media/ubuntu-base-24.04.3-base-amd64.tar.gz -C /$jail_udir/containers/$jail_name/compat/ubuntu
  • 启动 ludev jail

启动 ludev
service jail start ludev
  • 进入Linux Jail的Ubuntu环境:

进入Linux Jail的Ubuntu环境
jexec ludev chroot /compat/ubuntu /bin/bash

备注

非常成功,解决了 后续实践发现目前似乎绕开的 FreeBSD Linux Jail 在 FreeBSD 15 Alpha 2上古怪的bug可嫩并不是bug( 不能使用ZFS作为底层存储不能使用 debootstrap 来构建Ubuntu环境),终于能够正常使用Linux on FreeBSD了

还需要继续探索

参考