使用CBSD克隆复制Ubuntu bhyve子系统环境(未成功)@FreeBSD

创建bhyve Ubuntu虚拟机子系统见:CBSD创建和管理bhyve容器Ubuntu@FreeBSD_bhyve管理器-CSDN博客

CBSD官网:CBSD --- FreeBSD Jail and Bhyve Management Tools

想快速复制Ubuntu系统,在一台FreeBSD机器有了bhyve Ubuntu子系统后,想把这个子系统复制到另外一台服务器。发现可以使用cbsd bexport和bimport导出和导入。

导出子系统

首先看一下有哪些bhyve虚拟子系统

先用cbsd bls看看有哪些bhyve虚拟子系统

cbsd bls
JNAME  JID   VM_RAM  VM_CURMEM  VM_CPUS  PCPU  VM_OS_TYPE  IP4_ADDR      STATUS  VNC
ub12   1280  2048    0          2        0     linux       192.168.1.12  On      0.0.0.0:5900  

导出bhyve虚拟子系统

使用cbsd bexport命令导出

注意,联机时不可以导出。所以如果没有关机,需要首先关闭子系统

关闭子系统

cbsd bstop jname=ub12
Send SIGTERM to ub12. Soft timeout is 30 sec. 1 seconds left [............................Send SIGTERM to ub12. Soft timeout is 30 sec. 0 seconds left [..............................]
bstop done in 10 seconds

导出子系统

cbsd bexport jname=ub12
Exporting (with compress level:6), please stand by: ub12

不过因为原来的系统异乎寻常的慢,所以导出子系统也是特别慢

总共用了13分钟,还可以接受

cbsd bexport jname=ub12
Exporting (with compress level:6), please stand by: ub12
WIP: [0%...100%]

20480+1 records in
20480+1 records out
21474967552 bytes transferred in 816.853627 secs (26289860 bytes/sec)
environment flat size: 20g, images size ub12.img: 6g
exported image file: /usr/jails/export/ub12.img
jexport done in 13 minutes and 42 seconds

将导出的系统cp到新系统

前面导出到/usr/jails/export/ub12.img ,在新系统中scp过来

scp skywalk@192.168.1.5:/usr/jails/export/ub12.img .

导入子系统

在另一台机器使用cbsd bimport导入子系统

cbsd bimport jname=``/tmp/debian1``.img

可以看到只需要3分钟,速度还是挺快的

root@fb14:/usr/jails/export # cbsd bimport ub12.img
Importing image, please stand by: ub12
CBSD Image, version: 4
Image was created on node: fb5
Image was created at: 20240815
Image size: 6g
Environment flat size after extracting: 20g
Compress level: 6
WIP: [0%...100%]
ZVOLs list: dsk1
 * dsk1 (20g): WIP: [0%...13%...21%...35%...100%]
Hostname sets to: ub12.my.domain
jimport done in 3 minutes and 41 seconds

启动子系统

cbsd bstart ub12
init_systap: waiting for link: vmx0
VRDP is enabled. VNC bind/port: 192.168.1.250:5900
For attach VM console, use: vncviewer 192.168.1.250:5900
Resolution: 800x600.
VNC pass: cbsd

Warning!!! You are running a system with open VNC port to the world wich is not secure
Please use IP filter or balancer with password to restrict VNC port access
Or change vnc_bind params to 127.0.0.1 and reboot VM after maintenance work

bhyve renice: 1
Waiting for PID..........
PID: 0
Thu Aug 15 21:11:27 CST 2024
cmd: env LIB9P_LOGGING=/usr/jails/jails-system/ub12/cbsd_lib9p.log /usr/bin/nice -n 1 /usr/sbin/bhyve  -c cpus=2,sockets=2,cores=1,threads=1 -m 2147483648 -H -A -U 6b143aa7-4afb-11ef-935b-00e2691367f6 -s 0,hostbridge  -s 1,ahci-cd,/usr/local/cbsd/upgrade/patch/efirefd.fd,ro -s 7,virtio-blk,/usr/jails/jails-data/ub12-data/dsk1.vhd,sectorsize=512/4096    -s 5,virtio-net,tap2,mtu=1500,mac=00:a0:98:31:84:3b  -s 6,virtio-rnd  -s 9,fbuf,tcp=0.0.0.0:5900,w=800,h=600,password=cbsd -s 30,xhci,tablet  -s 31,lpc -l com1,stdio -l bootrom,/usr/local/cbsd/upgrade/patch/efi.fd,/usr/jails/jails-system/ub12/BHYVE_UEFI_VARS.fd   ub12
-----
vm_create: Device not configured
Please use for debug: /usr/local/cbsd/share/bhyverun.sh -c /usr/jails/jails-system/ub12/bhyve.conf
bstart done in 15 seconds
root@fb14:/usr/jails/export # cbsd bls
JNAME  JID  VM_RAM  VM_CURMEM  VM_CPUS  PCPU  VM_OS_TYPE  IP4_ADDR      STATUS  VNC
ub12   0    2048    0          2        0     linux       192.168.1.12  Off     0.0.0.0:5900  

没有启动起来,还在查找原因中。

最终找到原因,是因为没有开虚拟化:https://blog.csdn.net/skywalk8163/article/details/141271919

打开虚拟化之后,问题解决,系统能启动起来了!

设置pf防火墙

需要设置防火墙,放开5900端口

先cp配置文件

cp /usr/share/examples/pf/pf.conf /etc/pf.conf

编辑/etc/pf.conf文件,加入:

pass out all keep state

tcp_services = "{ ssh, smtp, domain, www, pop3, auth, pop3s, 8080, 5900 }"

block in all

pass in proto tcp to any port $tcp_services keep state

调整好之后,系统能够用vncviewer连上。

现在的问题是网络不通。

调试

创建bhyve的时候报错vmm没有load

cbsd bconstruct-tui

Warning: Your current environment is not physical. This is a requirement for a working bhyve

Virtual engine detected: vmware

Please refer to this page for more information: https://wiki.freebsd.org/bhyve

Try to run bhyve anyway...

To disable this warning, please set in /usr/jails/etc/bhyve-default-default.conf: skip_bhyve_init_virtual_warning to: 1

Pause for 10 seconds

No kldloaded module: vmm

Please add vmm_load="YES" to /boot/loader.conf and

put kld_list="vmm if_tuntap if_bridge nmdm" into your /etc/rc.conf then reboot the host. Or, for example, run:

sysrc kld_list+="vmm if_tuntap if_bridge nmdm" && service kld restart

root@fb14:~ # kldstat |grep vmm

2 1 0xffffffff81f35000 37c540 vmm.ko

说没有vmm,但是kldstat里面显示有vmm啊!

按照提示,把skip_bhyve_init_virtual_warning=1 写入/usr/jails/etc/bhyve-default-default.conf ,vmm的问题解决。

创建bhyve提示Your current environment is not physical.

cbsd bconstruct-tui

Warning: Your current environment is not physical. This is a requirement for a working bhyve

Virtual engine detected: vmware

Please refer to this page for more information: https://wiki.freebsd.org/bhyve

Try to run bhyve anyway...

To disable this warning, please set in /usr/jails/etc/bhyve-default-default.conf: skip_bhyve_init_virtual_warning to: 1

按照提示,把skip_bhyve_init_virtual_warning=1 写入/usr/jails/etc/bhyve-default-default.conf ,问题解决。

vnc也设置了,pf也打开了,但是5900连不上

发现主机的5900端口根本就没开

原来是虚拟机没有启动成功

cbsd bstart ub12虚拟机启动报错

不管是复制的ub12,还是新create的ub22,都是报错

cmd: env LIB9P_LOGGING=/usr/jails/jails-system/ub22/cbsd_lib9p.log /usr/bin/nice -n 1 /usr/sbin/bhyve -c cpus=6,sockets=6,cores=1,threads=1 -m 4294967296 -H -A -U ceae361c-5b0d-11ef-a876-000c29ff148f -s 0,hostbridge -s 4,virtio-blk,/usr/jails/vm/ub22/dsk1.vhd,sectorsize=512/4096 -s 2,ahci-cd,/usr/jails/src/iso/cbsd-iso-ubuntu-22.04.3-live-server-amd64.iso,ro -s 5,virtio-net,tap2,mtu=1500,mac=00:a0:98:68:0a:de -s 6,virtio-rnd -s 7,fbuf,tcp=127.0.0.1:5901,w=800,h=600,wait,password=cbsd -s 30,xhci,tablet -s 31,lpc -l com1,stdio -l bootrom,/usr/local/cbsd/upgrade/patch/efi.fd,/usr/jails/jails-system/ub22/BHYVE_UEFI_VARS.fd ub22

相关推荐
Lary_Rock1 小时前
RK3576 LINUX RKNN SDK 测试
linux·运维·服务器
云飞云共享云桌面3 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
Peter_chq4 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
一坨阿亮5 小时前
Linux 使用中的问题
linux·运维
dsywws6 小时前
Linux学习笔记之vim入门
linux·笔记·学习
幺零九零零6 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
wclass-zhengge7 小时前
Docker篇(Docker Compose)
运维·docker·容器
李启柱7 小时前
项目开发流程规范文档
运维·软件构建·个人开发·设计规范
小林熬夜学编程8 小时前
【Linux系统编程】第四十一弹---线程深度解析:从地址空间到多线程实践
linux·c语言·开发语言·c++·算法
力姆泰克8 小时前
看电动缸是如何提高农机的自动化水平
大数据·运维·服务器·数据库·人工智能·自动化·1024程序员节