使用CBSD克隆复制Ubuntu jail子系统环境

CBSD介绍

CBSD是为FreeBSD jail子系统、bhyve、QEMU/NVMM和Xen编写的管理层。该项目定位为一个综合解决方案的单一集成工具,用于使用预定义的软件集以最少的配置快速构建和部署计算机虚拟环境。

具体安装使用见:jail管理器CBSD实践@FreeBSD_freebsd jail 部署-CSDN博客

为了快速搭建Jail 里的Ubuntu环境,可以采取建好一个jail系统,然后克隆出多个系统的方法。

cbsd克隆复制jail子系统

克隆命令

cbsd jclone old=jail2 new=jail3 host_hostname=jail3.my.domain ip4_addr=10.0.0.22``/24

如原jail名字为focal,新名字为focal_to_jammy,设置好host_hostname主机名,再配置好ip地址,命令如下:

复制代码
cbsd jclone old=focal new=focal_to_jammy host_hostname=focal_to_jammy.my.domain ip4_addr=10.0.0.2/24

如果原jail子系统还在运行,那么会提示加上checkstate=0 参数

复制代码
cbsd jclone old=focal new=focal_to_jammy host_hostname=focal_to_jammy.my.domain ip4_addr=10.0.0.2/24 checkstate=0 

只要几秒就克隆好一个新系统了。

运行复制好的jail系统

使用cbsd jstart启动子系统

复制代码
cbsd jstart focal_to_jammy

登录jail子系统

使用cbsd jlogin 登录

复制代码
root@fbhost:~ # cbsd jlogin focal_to_jammy
Last login: Mon Jul 15 23:06:59 on pts/1
FreeBSD 14.1-RELEASE (GENERIC) releng/14.1-n267679-10e31f0946d8
focal_to_jammy:/root@[23:09] # chroot /compat/ubuntu/ /bin/bash
root@focal_to_jammy:/# uname -a
Linux focal_to_jammy.my.domain 5.15.0 FreeBSD 14.1-RELEASE releng/14.1-n267679-10e31f0946d8 GENERIC x86_64 x86_64 x86_64 GNU/Linux

也可以使用jexex命令登录

复制代码
jexec focal_to_jammy  chroot /compat/ubuntu /bin/bash

jail子系统里升级focal到jammy(失败)

参考Install Ubuntu 22.04 Jammy in FreeBSD Jail | The FreeBSD Forums

进入子系统,使用命令:

复制代码
jexec focal_to_jammy  chroot /compat/ubuntu /bin/bash

然后,执行升级:

复制代码
apt install update-manager-core

do-release-upgrade -d

没升级成,后面也没看懂。

这步好像不用再重复了

更新库

root@focal_to_jammy:/lib64# ls -l /lib/x86_64-linux-gnu/ld-2.31.so
-rwxr-xr-x 1 root root 191472 Apr 15 2020 /lib/x86_64-linux-gnu/ld-2.31.so

其它cbsd jail操作

重启子系统

复制代码
cbsd jrestart focal_to_jammy

删除

cbsd jremove jail1

调试

do-release-upgrade -d提示set Prompt=norma

do-release-upgrade -d

Checking for a new Ubuntu release

There is no development version of an LTS available.

To upgrade to the latest non-LTS development release

set Prompt=normal in /etc/update-manager/release-upgrades.

在/etc/update-manager/release-upgrades文件里,将Prompt=lts修改成Prompt=normal

结果执行后没什么反应:

复制代码
root@focal_to_jammy:/# do-release-upgrade -d
Checking for a new Ubuntu release
Upgrades to the development release are only 
available from the latest supported release.

将do-release-upgrade -d的-d去掉后提示

复制代码
do-release-upgrade
Checking for a new Ubuntu release
Get:1 Upgrade tool signature [833 B]                                           
Get:2 Upgrade tool [1270 kB]                                                   
Fetched 1271 kB in 0s (0 B/s)                                                  
authenticate 'jammy.tar.gz' against 'jammy.tar.gz.gpg' 
extracting 'jammy.tar.gz'

Reading cache

Checking package manager


A fatal error occurred 

Please report this as a bug and include the files 
/var/log/dist-upgrade/main.log and /var/log/dist-upgrade/apt.log in 
your report. The upgrade has aborted. 
Your original sources.list was saved in 
/etc/apt/sources.list.distUpgrade. 

Traceback (most recent call last): 

File "/tmp/ubuntu-release-upgrader-fdy6hyrf/jammy", line 8, in 
<module> 
sys.exit(main()) 

File 
"/tmp/ubuntu-release-upgrader-fdy6hyrf/DistUpgrade/DistUpgradeMain.py", 
line 241, in main 
if app.run(): 

File 
"/tmp/ubuntu-release-upgrader-fdy6hyrf/DistUpgrade/DistUpgradeController.py", 
line 2042, in run 
return self.fullUpgrade() 

File 
"/tmp/ubuntu-release-upgrader-fdy6hyrf/DistUpgrade/DistUpgradeController.py", 
line 1807, in fullUpgrade 
if not self.prepare(): 

File 
"/tmp/ubuntu-release-upgrader-fdy6hyrf/DistUpgrade/DistUpgradeController.py", 
line 414, in prepare 
self._sshMagic() 

File 
"/tmp/ubuntu-release-upgrader-fdy6hyrf/DistUpgrade/DistUpgradeController.py", 
line 273, in _sshMagic 
is_child_of_process_name("sshd")): 

File "/tmp/ubuntu-release-upgrader-fdy6hyrf/DistUpgrade/utils.py", 
line 118, in is_child_of_process_name 
with open(stat_file) as stat_f: 

FileNotFoundError: [Errno 2] No such file or directory: 
'/proc/35020/stat' 

发现source.list文件只有一行,不知道是否这个原因

/etc/apt# cat sources.list

deb http://archive.ubuntu.com/ubuntu focal main

添加了清华源,问题依旧。查看报错,发现/proc下没有东西,且ps报错

在ps -aux的时候报错Error, do this: mount -t proc proc /proc

ps -aux

Error, do this: mount -t proc proc /proc

按照提示mount -t proc proc /proc

结果报错

mount -t proc proc /proc

mount: /proc: permission denied.

root@focal_to_jammy:/# mount

mount: failed to read mtab: No such file or directory

root@focal_to_jammy:/# df

df: cannot read table of mounted file systems: No such file or directory

在/etc/fstab里加上配置:

devfs /compat/linux/dev devfs rw,late 0 0

tmpfs /compat/linux/dev/shm tmpfs rw,late,size=1g,mode=1777 0 0

fdescfs /compat/linux/dev/fd fdescfs rw,late,linrdlnk 0 0

linprocfs /compat/linux/proc linprocfs rw,late 0 0

linsysfs /compat/linux/sys linsysfs rw,late 0 0

问题依旧。

这样在FreeBSD的jail里,想要focal升级到jammy Ubuntu的实验失败告终。

相关推荐
黄同学real2 分钟前
踩坑实录:离线内网服务器 Docker 部署 PaddleOCR-VL 1.5 完全指南
运维·服务器·docker
SilentSamsara3 分钟前
Python 并发基础:threading/GIL 与 multiprocessing 的选型逻辑
服务器·开发语言·数据库·vscode·python·pycharm
东北甜妹4 分钟前
K8s -Daemonset,kube-proxy,service,statefulset
linux·运维·服务器
DeepHacking7 分钟前
在电脑 B 上通过局域网 SSH 直接从电脑 A 拉取文件,用 rsync 断点续传
运维·ssh
Season4508 分钟前
论close()与signal(SIGPIPE,SIG_IGN)对服务器的重要性
运维·服务器
idolao8 分钟前
CentOS 7 安装 xampp-linux-1.8.1.tar.gz 详细步骤(解压、启动、验证)
linux·运维·centos
码点8 分钟前
Android 9休眠时任意键唤醒屏幕
android·linux·运维
杨云龙UP9 分钟前
Docker 部署 MongoDB 6.0 数据库每日自动备份实践:本地 + 异地保留 7 天_20260429
linux·运维·数据库·mongodb·docker·容器·centos
Wmenghu17 分钟前
Ubuntu 安装 MySQL 8.0 + Redis 并开启远程访问
redis·mysql·ubuntu
INosdfgs20 分钟前
HAProxy 入门:高性能开源负载均衡
运维·其他·开源·负载均衡