惊雷无声 发表于 2024-8-3 18:40:48

FreeBSD虚拟化办理之道:高效、安全、机动的虚拟办理方案全览

FreeBSD下的虚拟化技能

虚拟化软件可让一台盘算机同时运行多个操纵系统。这种用于个人电脑的系统软件通常涉及一个运行虚拟化软件的宿主机(host)操纵系统,并支持任何数量的客户机(guest)操纵系统。
FreeBSD下的虚拟办理方案包括多种技能和工具,以下是对这些虚拟办理方案的简单先容:

[*]Jails:

[*]Jails是FreeBSD操纵系统内建的虚拟化技能。
[*]它雷同于Linux中的chroot环境,但功能更强盛,可以实现将一个系统划分成多个独立的虚拟环境。
[*]每个Jail可以有自己的文件系统、网络设置和用户空间历程。
[*]使用Jail时,必要安装jailkit软件包,并按照官方文档进行设置和使用。

[*]bhyve:

[*]bhyve是FreeBSD操纵系统的内核级虚拟化技能。
[*]它可以在FreeBSD系统中运行虚拟机,支持多种操纵系统,如Linux、Windows等。
[*]作为一种轻量级的虚拟化办理方案,bhyve提供了接近原生的性能。

[*]QEMU:

[*]QEMU是一款开源的虚拟化软件,可以在FreeBSD系统中使用QEMU来模拟硬件虚拟化,并运行其他操纵系统。
[*]QEMU Guest Agent是针对FreeBSD虚拟机的一个版本,为虚拟机内部与宿主机之间搭建了一座通讯桥梁。
[*]它允许宿主机与FreeBSD虚拟机进行直接交互,实行文件系统冻结等高级操纵,以及获取内存状态、控制虚拟CPU等。

[*]VirtualBox:

[*]VirtualBox是一款开源的虚拟化软件,可以在FreeBSD系统中安装VirtualBox来创建和管理虚拟机。
[*]作为一个成熟的虚拟化办理方案,VirtualBox提供了丰富的功能和友好的用户界面。

[*]存储技能:

[*]FreeBSD还支持多种虚拟化存储技能,如ZFS(Zettabyte File System)、ZVOLs(ZFS Volumes)、iSCSI、HAST(Highly Available Storage)等。
[*]这些存储技能提供了数据完整性查抄、压缩、快照、高可用性等功能,有助于在虚拟化环境中实现高效、可靠的数据存储和管理。

[*]网络设置:

[*]在FreeBSD的虚拟化办理方案中,网络设置是一个重要的方面。
[*]用户可以根据必要设置虚拟机的网络连接,包括桥接模式、NAT模式等,以实现虚拟机与宿主机、其他虚拟机或外部网络的通信。

[*]管理工具:

[*]FreeBSD提供了多种虚拟化管理工具,如ezjail、AppJail、bvm、cbsd等,用于创建、设置和管理虚拟机。
[*]这些工具允许用户启动、停止、停息和恢复虚拟机,以及调解资源分配等。

总结来说,FreeBSD下的虚拟办理方案包括Jails、bhyve、QEMU、VirtualBox等多种技能和工具,以及多种虚拟化存储技能和网络设置选项。用户可以根据自己的需求选择合适的虚拟化技能和工具来构建和管理虚拟化环境。
 jail的简介

Jail最早在FreeBSD 4.X便可使用,并且一直在一连强化它的功能、效率、稳定性以及安全性。
Jail创建在chroot概念之上,会更改一系列程序的根目次。这可以创造一个安全的环境,将程序与系统的其他部份分隔。在chroot的环境所创建的程序不能存取该环境以外的档案或资源。也因此,渗透一个在chroot的环境实行的服务并不会让整个系统被攻击者渗透。但chroot有许多限制,只得当用在简单的工作,不必要许多弹性或复杂性、进阶功能的工作。随着时间推移,许多可以逃离chroot的环境的方法已经被找到,让这个方法不再是确保服务安全的理想方案。
Jail用许多方式改进了传统chroot环境的概念。在传统chroot环境,程序仅限制在一部份档案系统可存取的地方。其余的系统资源、系统使用者、实行的程序以及网络子系统被chroot的程序及主机系统的程序所共享。Jail透过虚拟化存取档案系统、使用者及网络子系统来扩展这个模型,可使用更多细微的控制参数来调校Jail的环境存取方式,Jail可算是一种操纵系统层级的虚拟化。
Jail的四个要素:
一个子树状目次:进入Jail的出发点目次,一但在Jail中,程序便没有权限脱离此目次之外。
一个主机名称:将会由Jail所使用。
一个IP位址:用来分配给Jail。Jail的IP位址通常是现有网络界面的别名位址。
一个指令:要在Jail中可实行的实行档路径名称。该路径是Jail环境根目次的相对路径。

Jail管理器

在FreeBSD系统中,jail的管理器有多种
https://img-blog.csdnimg.cn/direct/c82cf9069c8d407aa8fc36fc04ca0d83.png
NameLicensePackageDocumentation更新时间github地点 BastilleBSD
BSD-3
sysutils/bastille
Documentation
2023.11GitHub - BastilleBSD/bastille: Bastille is an open-source system for automating deployment and management of containerized applications on FreeBSD. pot
BSD-3
sysutils/pot
Documentation
2023.12GitHub - bsdpot/pot: pot: another container framework for FreeBSD, based on jails, ZFS and pf cbsd
BSD-2
sysutils/cbsd
Documentation
2024GitHub - cbsd/cbsd: Yet one more wrapper around jail, bhyve, QEMU and XEN AppJail
BSD-3
sysutils/appjail, for devel sysutils/appjail-devel
Documentation
2024GitHub - DtxdF/AppJail: Simple and easy-to-use tool for creating portable jails. iocage
BSD-2
sysutils/iocage
Documentation
2023.12https://github.com/iocage/iocage ezjail
Beer Ware
sysutils/ezjail
Documentation
2015.6 其它还有ocijail 
https://github.com/dfr/ocijail
下面单独先容几种比力流行的管理器
CBSD

cbsd同时还可以管理jail和bhyve (Yet one more wrapper around jail, bhyve, QEMU and XEN) ,代码:GitHub - cbsd/cbsd: Yet one more wrapper around jail, bhyve, QEMU and XEN。这里还有作者关于docker的办理方法:CBSD — FreeBSD Jail and Bhyve Management Tools
实践文档:jail管理器CBSD实践@FreeBSD-CSDN博客 
BastileBSD

BastileBSD手册:Bastille — Bastille 0.10.20231125-beta documentation  代码:GitHub - BastilleBSD/bastille: Bastille is an open-source system for automating deployment and management of containerized applications on FreeBSD.
AppJail

AppJail is an open-source BSD-3 licensed framework entirely written in POSIX shell and C to create isolated, portable and easy to deploy environments using FreeBSD jails that behaves like an application. 手册:AppJail Handbook 
源码:GitHub - DtxdF/AppJail: Simple and easy-to-use tool for creating portable jails. 
AppJail的特点是它可以设置一种叫tiny jail的模式,只提供相干c代码的文件即可。 它还支持LinuxJails 
AppJail实践文档:Jail管理器AppJail的使用@FreeBSD-CSDN博客
AppJail主页写的几种管理器的对比图

除了没有cbsd,其它几种都在,似乎就AppJail最牛
AppJailbastillepotiocageezjailZFS supportsupportedsupportedrequiredrequiredsupportedZFS supportLanguageC, Bourne ShellBourne ShellRust, Bourne ShellPythonBourne ShellLanguageAutomationMakejail, Initscripts, ImagesTemplatesFlavours, ImagesPluginsFlavoursAutomationJail Typeclone, copy, tiny, thin, thick, empty, linux+debootstrapthin, thick, vnet, Linux, emptythickclone, basejail, template, empty, thickbasejailJail TypeVNETSupportedSupportedSupportedSupportedNot SupportedVNETDynamic firewallYesRequires a loopback interfaceYesNoNoDynamic firewallResource controlFull supportYes, but it does not support statistics and all rctl(8) actions and does not support actions by ruleBasic: CPU and memory onlyLegacy onlyNot SupportedResource controlCPU SetsYesNoYesYesYesCPU SetsIPv6 supportYes (+SLAAC)YesYesYesYesIPv6 supportLinux containersYesYes??Yes??Linux containersDynamic DEVFS Ruleset ManagementYesNoNoNoNoDynamic DEVFS Ruleset ManagementNetwork managementVirtual networks, BridgesNoSubnet, requires sysutils/potnetNoNoNetwork managementJail dependencyYesNoYesYesNoJail dependencySupervisorYes (Healthcheckers)NoNoNoNoSupervisorLog managementYesNoNoNoNoLog managementParse jail.conf(5) file for syntax errorsYesNot supportedYesYesYesParse jail.conf(5) file for syntax errorsVolume managementYesNoBasic, Only supported when using the fscomp featureBasicNoVolume managementParallel startupYes (Healthcheckers, jails & NAT)NoNoNoNoParallel startupNetgraphYesNoNoNoNoNetgraphStartup order controlYesYes, but don't support prioritiesYes, but don't support prioritiesYesYes, using rcorder(8)Startup order controlX11 supportYesNoNoNoNoX11 supportimport/exportYesYesYesYesYesimport/export CBSD主页画的jial管理软件生命周期图

https://img-blog.csdnimg.cn/direct/d0a5a268ba1a402fb786acd95c963af2.png​


 bhyve简介

自 FreeBSD 10.0-RELEASE 起,BSD 许可的 bhyve 虚拟机管理器已成为底层系统不可或缺的一部分。bhyve 强盛而机动,支持多种客户机操纵系统,涵盖 FreeBSD、OpenBSD 以及多个 Linux® 发行版。在默认设置下,bhyve 提供对串行控制台的直接访问,无需模拟图形化界面,从而为用户提供了简便而高效的交互方式。
https://img-blog.csdnimg.cn/direct/73fae9c7cf26408daa1603a9dc445b76.png​
安装使用bhyve

官网文档:Chapter 24. Virtualization | FreeBSD Documentation Portal
中文文档:24.6.使用 FreeBSD 上的 bhyve 虚拟机 — FreeBSD Handbook 2023.09.08 documentation (fiercex.github.io)

FreeBSD准备工作

若要支持bhyve,必要cpu支持,可以通过 /var/run/dmesg.boot  文件来查看,好比对AMD芯片必要支持POPCNT ,Inter芯片必要支持 EPT 和 UG 
   cat /var/run/dmesg.boot表现如下: 
 Features2=0x7dfafbbf<SSE3,PCLMULQDQ,DTES64,MON,DS_CPL,VMX,EST,TM2,SSSE3,SDBG,F
MA,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,TSCDLT,XSAVE,OSXSAVE,AV
X,F16C,RDRAND>
  AMD Features=0x2c100800<SYSCALL,NX,Page1GB,RDTSCP,LM>
  AMD Features2=0x121<LAHF,ABM,Prefetch>
  Structured Extended Features=0x21c27ab<FSGSBASE,TSCADJ,BMI1,AVX2,SMEP,BMI2,ERM
S,INVPCID,NFPUSG,RDSEED,ADX,SMAP,PROCTRACE>
  XSAVE Features=0x1<XSAVEOPT>
  VT-x: PAT,HLT,MTF,PAUSE,EPT,UG,VPID
可以看到cpu是支持POPCNT和EPT,UG
准备工作:加载 bhyve 内核模块

设置宿主机,起首,加载 bhyve 内核模块:
# kldload vmm
   kldload vmm
kldstat
Id Refs Address                Size Name
1   27 0xffffffff802000001f370e8 kernel
2    1 0xffffffff82138000   77d8 cryptodev.ko
3    1 0xffffffff82140000   5cd4d8 zfs.ko
4    1 0xffffffff831e5000   3250 ichsmb.ko
5    1 0xffffffff831e9000   2178 smbus.ko
6    1 0xffffffff83200000   33e438 vmm.ko
创建网络接口

然后,创建 tap 接口以供虚拟机中的网络设备进行连接。为了让该网络设备参加网络,另外创建一个桥接接口,其中包罗 tap 接口和物理网络接口作为成员。在下面的例子中,物理网络接口为 igb0:
   # ifconfig tap0 create
# sysctl net.link.tap.up_on_open=1

net.link.tap.up_on_open: 0 -> 1
# ifconfig bridge0 create
# ifconfig bridge0 addm igb0 addm tap0
# ifconfig bridge0 up一共5条指令:
ifconfig tap0 create
sysctl net.link.tap.up_on_open=1

ifconfig bridge0 create
ifconfig bridge0 addm igb0 addm tap0
ifconfig bridge0 up
做好这些准备工作,就可以开始设置客户机了。
创建一个FreeBSD客户机

可以创建一个单独的目次,好比~/bhyve ,将全部文件都放在这个目次里。
文档讲创建一个文件guest.img用作客户机的虚拟磁盘。指定这个虚拟磁盘的巨细
truncate -s 16G guest.img 我们这里创建一个较小的客户机,名字也改成freebsd.img
   truncate -s 10G freebsd.img下载 FreeBSD 的安装镜像:

到中科大FreeBSD镜像站下载iso安装盘
   wget https://mirrors.ustc.edu.cn/freebsd/releases/ISO-IMAGES/14.1/FreeBSD-14.1-BETA3-amd64-bootonly.iso
启动脚本

下面是一个启动 bhyve  虚拟机的示例下令,vmrun.sh是一个脚本,这个脚本将会启动虚拟机并循环实行,以是可在其崩溃时主动重新启动。这个脚本可接受数个选项来设置虚拟机:-c 控制虚拟 CPU 的数量,-m 限制客户机的可用内存,-t 定义使用的 tap 设备,-d 指定其使用的磁盘镜像,-i 控制 bhyve 从 CD 镜像引导,而非从磁盘引导,-I 指定要使用的 CD 镜像。最后一个参数是虚拟机的名称,该名称将被用来追踪运行中的虚拟机。这个例子将在安装模式下启动虚拟机:
   sh /usr/share/examples/bhyve/vmrun.sh -c 1 -m 1024M -t tap0 -d guest.img -i -I FreeBSD-13.1-RELEASE-amd64-bootonly.iso guestname
具体我们的命令是:
sh /usr/share/examples/bhyve/vmrun.sh -c 4 -m 1024M -t tap0 -d freebsd.img -i -I FreeBSD-14.1-BETA3-amd64-bootonly.iso testfreebsd 然后下令行下面,就看到FreeBSD启动的画面了
很久没有用无头机(没有安装表现器)安装系统了,vt100真亲切啊:
Console type  
虚拟硬盘是:vtbd0  VirtIO Block Device
后面就是按部就班的安装FreeBSD。安装好后,重启,结果照旧从光盘启动。
只好kill掉,固然bhyve还有专门的指令:
bhyvectl --destroy --vm=testfreebsd 装机完成后再次开机

再次进入虚拟系统,这回就不挂载光盘了,手册下令:
   sh /usr/share/examples/bhyve/vmrun.sh -c 4 -m 1024M -t tap0 -d guest.img guestname
 实际实行下令:
sh /usr/share/examples/bhyve/vmrun.sh -c 4 -m 1024M -t tap0 -d freebsd.img testfreebsd 启动后进入了该服务器看一下:
uname -a
FreeBSD fb_bhyve 14.1-BETA3 FreeBSD 14.1-BETA3 releng/14.1-n267636-2a964a7fc34e GENERIC amd64
 
果然FreeBSD下用原生bhyve虚拟主机系统真的是简单又方便啊!

创建一个Linux虚拟机


要引导进入 FreeBSD 以外的系统,必须先安装  sysutils/grub2-bhyve。
   pkg install grub2-bhyve接下来,创建一个文件用作客户机的虚拟磁盘:
   truncate -s 16G linux.img手册里讲创建 <strong>device.map</strong> 文件,让 grub 将虚拟设备映射到宿主机上的镜像文件,文件内容:   (hd0) ./linux.img
(cd0) ./ubuntu-18.04.6-server-amd64.iso固然实际上为了简单方便,device.map文件内容如下:
   (hd0) ./linux.img
(cd0) ./debian.iso下载linux安装盘

可以选择自己喜欢的linux发行版,好比可以选择ubuntu和dibian。
下载linux ubuntu安装盘: 
wget https://mirrors.ustc.edu.cn/ubuntu-cdimage/releases/18.04.6/release/ubuntu-18.04.6-server-amd64.iso 
下载linux debian安装盘:
wget https://mirrors.tuna.tsinghua.edu.cn/debian-cd/current/amd64/iso-cd/debian-12.5.0-amd64-netinst.iso
为了方便创建一个文件链接:
   ln -s debian-12.5.0-amd64-netinst.iso debian.iso这样不管是device.map文件内里,照旧后面下令行内里,都不必要使用那么长的文件名了。 
加载linux内核

使用 sysutils/grub2-bhyve 从 ISO 文件中加载 Linux® 内核
,如果没有可以pkg安装:
   pkg install grub2-bhyve从 ISO 文件中加载 Linux® 内核
   grub-bhyve -m device.map -r cd0 -M 1024M linuxguest实行后进入光盘安装debian的选择界面,但是选了之后回车就退出了。刚开始不知道为什么会退出,还以为出题目了,其实就应该是这样。
如果没有进入光盘启动界面,就必要自己手工在grub内里输入boot:
grub> ls
(hd0) (cd0) (cd0,msdos1) (host)
grub> ls (cd0)/isolinux
boot.cat boot.msg grub.conf initrd.img isolinux.bin isolinux.cfg memtest
splash.jpg TRANS.TBL vesamenu.c32 vmlinuz
grub> linux (cd0)/isolinux/vmlinuz
grub> initrd (cd0)/isolinux/initrd.img
grub> boot

安装ubuntu linux

如今 Linux® 内核就加载完毕了,可以启动客户机,启动ubuntu安装:
   bhyve -A -H -P -s 0:0,hostbridge -s 1:0,lpc -s 2:0,virtio-net,tap0 -s 3:0,virtio-blk,./linux.img -s 4:0,ahci-cd,./ubuntu-18.04.6-server-amd64.iso -l com1,stdio -c 4 -m 1024M linuxguest固然最终我们是选择了安装dibian:
安装debian linux

   bhyve -A -H -P -s 0:0,hostbridge -s 1:0,lpc -s 2:0,virtio-net,tap0 -s 3:0,virtio-blk,./linux.img -s 4:0,ahci-cd,./debian.iso -l com1,stdio -c 2 -m 1024M linuxguest
后面就是按部就班的安装过程了。
安装的时间可以设置软件包下载镜像,镜像源选了华为云。
mirrors.huaweicloud.com
安装debian完成后,选择重启呆板,就会退出虚拟系统。
启动debian linux

每次启动之前,都要先加载内核:
   grub-bhyve -m device.map -r hd0,msdos1 -M 1024M linuxguest然后引导进入虚拟机:
   bhyve -A -H -P -s 0:0,hostbridge -s 1:0,lpc -s 2:0,virtio-net,tap0 -s 3:0,virtio-blk,./linux.img -l com1,stdio -c 4 -m 1024M linuxguest 启动真是简便明快啊,也就1-2秒就进入登录界面了:
   rdmsr to register 0xcd on vcpu 0
wrmsr to register 0x140(0) on vcpu 0
wrmsr to register 0x140(0) on vcpu 1
wrmsr to register 0x140(0) on vcpu 2
wrmsr to register 0x140(0) on vcpu 3
rdmsr to register 0x34 on vcpu 1
rdmsr to register 0xc0011029 on vcpu 3
Unhandled ps2 mouse command 0xe1
/dev/vda1: clean, 36301/987360 files, 505236/3943936 blocks
Unhandled ps2 mouse command 0x88
rdmsr to register 0x64d on vcpu 0

Debian GNU/Linux 12 debian ttyS0

debian login: xxxx
Password:
Linux debian 6.1.0-21-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.90-1 (2024-05-03) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
这样就可以进入debian舒畅的玩耍拉!

持久化设置¶

要设置系统在启动时运行 bhyve 虚拟机,请对相应文件进行如下设置:
   
[*] /etc/sysctl.conf
net.link.tap.up_on_open=1

[*] /etc/rc.conf
cloned_interfaces="bridge0 tap0"
ifconfig_bridge0="addm igb0 addm tap0"
kld_list="nmdm vmm"
安装bvm管理bhyve

为了更好的管理hbyve,我们可以安装bvm管理软件。bvm,是FreeBSD下的一个开源的虚拟机监控器(hypervisor),它使用FreeBSD的Capsicum沙箱框架提供安全性。
   pkg install bvm在第一次运行bvm --ls 的时间,会提示做哪些操纵:
   # bvm can't run, you need to add the following lines to /boot/loader.conf
vmm_load="YES"
if_bridge_load="YES"
if_tap_load="YES"
# In order to help you solve the NAT reflow problem,
# you need to add the following line to /boot/loader.conf
ipfw_load="YES"
ipfw_nat_load="YES"
libalias_load="YES"
net.inet.ip.fw.default_to_accept=1
# please edit '/usr/local/etc/bvm/bvm.conf' first
vmdir=/your/vm/dir/path/
也就是最重要的是先编辑/usr/local/etc/bvm/bvm.conf文件,参加vmdir目次设置。然后再将上面设置语句写入/boot/loader.conf文件中。
使用bvm创建虚拟机

   bvm --create Node-1 会问很多题目,就用数字回答就行
   Welcome to Bhyve Vm Manager
---------------------------
Enter os type:
. FreeBSD
. OpenBSD
. NetBSD
. Debian
. Debian_LVM
. Ubuntu
. Kali
. CentOS
. openSUSE
. openSUSE_LVM
. Gentoo
. Fedora
. TrueOS
. Windows10
. WinServer2016
. pfSense
. OPNsense
. Other
Enter os type: 5
Enter vm CPUs: 2
Enter vm RAM (e.g. 512m): 512M
Enter cd status:
. on
. off
Enter cd status: 0
Enter iso path for CD-ROM: /root/bhyve
Enter a iso file:
. debian.iso
. ubuntu.iso
. FreeBSD-14.1-BETA3-amd64-bootonly.iso
. ubuntu-18.04.6-server-amd64.iso
. debian-12.5.0-amd64-netinst.iso
Enter a iso file: 1
Enter boot from:
. cd0
. hd0
Enter boot from: 0
Enter uefi type:
. none
. uefi
. uefi_csm
Enter uefi type: 0
Enter hostbridge:
. hostbridge
. amd_hostbridge
Enter hostbridge: 0
Enter auto booting:
. no
. yes
Enter auto booting: yes
input invalid
. no
. yes
Enter auto booting: 1
Enter booting sequence index (1~1000): 10
Enter booting estimate time (1~1000 secs.): 10
. name          : Node-1
. os            : Ubuntu
. cpus          : 2
. ram         : 512m
. CD            : on
. iso path      : /root/bhyve/ubuntu.iso
. boot from   : cd0
. uefi type   : none
. hostbridge    : hostbridge
. auto boot   : yes
. boot index    : 10
. boot time   : 10
. disk config   
. network config
. cancel      

Enter an number to edit or 'ok' to complet: c
Enter vm number of disks: 1
Enter vm disk(0) size (e.g. 5g): 10g
Enter ZFS support:
. on
. off
Enter ZFS support: on
input invalid
. on
. off
Enter ZFS support: 0
Enter zpool:
. zroot/ROOT/default
. zroot/tmp
. zroot/home
. zroot/usr/src
. zroot/usr/ports
. zroot/var/log
. zroot
. zroot/var/audit
. zroot/var/crash
. zroot/home/skywalk
. zroot/var/mail
. zroot/var/tmp
Enter zpool: 0
Enter storage interface:
. SATA hard-drive
. Virtio block storage interface
Enter storage interface: 1
. disk number: 1
. disk(0) size : 10g
. ZFS support: on
. ZFS pool   : zroot/ROOT/default
. interface    : virtio-blk
. go back      
Enter an number: 5
---------------------------
. name          : Node-1
. os            : Ubuntu
. cpus          : 2
. ram         : 512m
. CD            : on
. iso path      : /root/bhyve/ubuntu.iso
. boot from   : cd0
. uefi type   : none
. hostbridge    : hostbridge
. auto boot   : yes
. boot index    : 10
. boot time   : 10
. disk config   
. network config
. cancel      

Enter an number to edit or 'ok' to complet: d
Enter vm number of nics: 1
Enter nic-0 network mode:
. Bridged
. NAT
Enter nic-0 network mode: 0
Select the binding device:
. igb0
. switch010.0.1.0/24
. switch110.0.2.0/24
. switch210.0.3.0/24
. switch3
. switch4
. switch5
. switch6
. switch7
Select the binding device: 0
Enter IP-Address:
. none
. dhcp
. static
Enter IP-Address: 1
Enter network interface:
. Intel e82545 network interface
. Virtio network interface
Enter network interface: 1
. NIC numbers   : 1
. nic-0 mode    : Bridged
. nic-0 bind    : igb0
. nic-0 ip      : dhcp
. interface   : virtio-net
. add a nic   
. go back      
Enter an number: 6
---------------------------
. name          : Node-1
. os            : Ubuntu
. cpus          : 2
. ram         : 512m
. CD            : on
. iso path      : /root/bhyve/ubuntu.iso
. boot from   : cd0
. uefi type   : none
. hostbridge    : hostbridge
. auto boot   : yes
. boot index    : 10
. boot time   : 10
. disk config   
. network config
. cancel      

Enter an number to edit or 'ok' to complet: ok
创建好就可以启动了
开始启动bvm虚拟机

   bvm --start Node-1启动之后,可以用bvm --ls 看到状态信息:
   bvm --ls
NAME                GUEST                CPU        MEMORY        DISK                STATE
Node-1                Ubuntu                2        512M        10G                on
可以使用bvm --login 登录虚拟机
   bvm --login Node-1然后就可以在下令行下开始装机拉!
其它bvm指令

关机下令:
   bvm --poweroff Node-1复制虚拟机,使用
   bvm --clone Node-1 Node-2
如果虚拟机被关机挂住,可以ps找到历程kill掉
   ps -aux |grep bvm
root    8525   0.00.01318426960I+   09:48       0:00.00 bvm --login Node-1
root    9117   0.00.01280823841S+   10:09       0:00.00 grep bvm
root    8430   0.00.01318427002Is+09:47       0:00.01 bvmb Node-1
root    9020   0.00.01318427083Ss+10:08       0:00.01 bvmb Node-2
root@fbhost:~/bhyve # kill 8430
CBSD创建和管理bhyve容器Ubuntu@FreeBSD

起首,创建bhyve虚拟机

   cbsd bconstruct-tui然后启动bhyve虚拟机

   cbsd bstart bub22启动后提示
init_systap: waiting for link: igb0
Looks like /usr/jails/vm/bub22/dsk1.vhd is empty.
May be you want to boot from CD? 

yes确认
然后使用cbsd blogin bub22 登录
   cbsd blogin bub22表现
Boot from CD
Waiting for first connection via VNC to starting VMs...
env LIB9P_LOGGING=/usr/jails/jails-system/bub22/cbsd_lib9p.log /usr/bin/nice -n 1 /usr/sbin/bhyve  -c cpus=2,sockets=2,cores=1,threads=1 -m 2684354560 -H -A -U 6c3d474b-323f-11ef-81c3-00e2691367f6 -s 0,hostbridge   -s 4,virtio-blk,/usr/jails/vm/bub22/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:ca:22:95  -s 6,virtio-rnd  -s 7,fbuf,tcp=127.0.0.1:5900,w=1024,h=768,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/bub22/BHYVE_UEFI_VARS.fd   bub22
使用vncviewer登录

发现只有本机的5900服务:
tcp4       0      0 127.0.0.1.5900         *.*                    LISTEN    
必要进去设置一下,
设置vnc

可以使用bsdconfig 按e进入csdn管理界面,也可以使用cbsd bconfig jname=bub22 进入管理界面。
注意,这里是bconfig,但是后面照旧用的jname参数。

进入bhyve_vnc_options 修改bhyve_vnc_tcp_bind  ,把127.0.0.1 改成 0.0.0.0 
修改之后不要忘记commit
然后就可以使用vncviewer 来登录拉!
开始安装ubuntu

vncviewer登录后,就可以看到光盘启动界面了,按照提示,一步步安装即可。
在 FreeBSD 上安装 VirtualBox™

VirtualBox™ 是一个正在活跃开发的,完备的虚拟化软件。可运行于大多操纵系统,包括 Windows®,macOS®,Linux® 和 FreeBSD。它也同样能够运行 Windows® 或者类 UNIX® 客户机系统。该软件作为开源软件发行,但是在单独的扩展包中提供了闭源组件。这些组件包括对 USB 2.0 设备的支持。更多的信息可以在 VirtualBox™ 维基下载页中找到。截至如今为止,这些扩展尚不支持 FreeBSD。
24.5.在 FreeBSD 上安装 VirtualBox™ — FreeBSD Handbook 2023.09.08 documentation
使用 FreeBSD 上的 Xen™ 虚拟机

Xen 是一个 GPLv2 许可的第 1 类虚拟机管理器,适用于 Intel® 和 ARM® 架构。FreeBSD 从 FreeBSD 8.0 开始就包罗了对 i386™,AMD® 64-Bit DomU 和 Amazon EC2 非特权域(虚拟机)的支持,并在 FreeBSD 11.0 中包罗了对 Dom0 控制域(宿主机)的支持。在 FreeBSD 11 中,取消了对准虚拟化(PV)域的支持,转而支持硬件虚拟化(HVM)域,这提供了更好的性能。
Xen™ 是一个裸虚拟机管理器,这意味着它是在 BIOS 之后加载的第一个程序。然后会启动一个称为 Domain-0(简称 Dom0)的特别权限客户机。Dom0 利用其特别权限直接访问底层物理硬件,使其成为一个高性能的办理方案。它能够直接访问磁盘控制器和网络适配器。用于管理和控制 Xen™ 虚拟机管理器的 Xen™ 管理工具也被 Dom0 用来创建、列出和销毁虚拟机。Dom0 为非特权域提供虚拟磁盘和网络,通常称为 DomU。Xen™ Dom0 可以比作其他虚拟机管理器办理方案的服务控制台,而 DomU 是运行单个客户虚拟机的地方。
但是如今Xen虚拟机的占比已经降落很多,不建议用Xen来虚拟化了。
 
调试

VirtualBox和bhyve两种虚拟机不能并存。

这个如今没有办法,就是没法并存。不外一样平常我们会使用jail+bhybe的办理方案。


 
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: FreeBSD虚拟化办理之道:高效、安全、机动的虚拟办理方案全览