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

打印 上一主题 下一主题

主题 887|帖子 887|积分 2661

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的管理器有多种

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管理软件生命周期图




 bhyve简介

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

安装使用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 
  
  1. 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 内核模块:
  1. # kldload vmm
复制代码
  1. kldload vmm
  2. kldstat
  3. Id Refs Address                Size Name
  4. 1   27 0xffffffff80200000  1f370e8 kernel
  5. 2    1 0xffffffff82138000     77d8 cryptodev.ko
  6. 3    1 0xffffffff82140000   5cd4d8 zfs.ko
  7. 4    1 0xffffffff831e5000     3250 ichsmb.ko
  8. 5    1 0xffffffff831e9000     2178 smbus.ko
  9. 6    1 0xffffffff83200000   33e438 vmm.ko
复制代码
创建网络接口

然后,创建 tap 接口以供虚拟机中的网络设备进行连接。为了让该网络设备参加网络,另外创建一个桥接接口,其中包罗 tap 接口和物理网络接口作为成员。在下面的例子中,物理网络接口为 igb0:
  
  1. # ifconfig tap0 create
  2. # sysctl net.link.tap.up_on_open=1
  3. net.link.tap.up_on_open: 0 -> 1
  4. # ifconfig bridge0 create
  5. # ifconfig bridge0 addm igb0 addm tap0
  6. # 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用作客户机的虚拟磁盘。指定这个虚拟磁盘的巨细
  1. truncate -s 16G guest.img
复制代码
我们这里创建一个较小的客户机,名字也改成freebsd.img
  
  1. truncate -s 10G freebsd.img
复制代码
下载 FreeBSD 的安装镜像:

到中科大FreeBSD镜像站下载iso安装盘
  
  1. 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 镜像。最后一个参数是虚拟机的名称,该名称将被用来追踪运行中的虚拟机。这个例子将在安装模式下启动虚拟机:
  
  1. 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
复制代码
  1. 具体我们的命令是:
  2. 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 [vt100] 
虚拟硬盘是:vtbd0  VirtIO Block Device
后面就是按部就班的安装FreeBSD。安装好后,重启,结果照旧从光盘启动。
只好kill掉,固然bhyve还有专门的指令:
  1. bhyvectl --destroy --vm=testfreebsd
复制代码
装机完成后再次开机

再次进入虚拟系统,这回就不挂载光盘了,手册下令:
  
  1. sh /usr/share/examples/bhyve/vmrun.sh -c 4 -m 1024M -t tap0 -d guest.img guestname
复制代码
 实际实行下令:
  1. 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。
  
  1. pkg install grub2-bhyve
复制代码
接下来,创建一个文件用作客户机的虚拟磁盘:
  
  1. truncate -s 16G linux.img
复制代码
  1. 手册里讲创建 <strong>device.map</strong> 文件,让 grub 将虚拟设备映射到宿主机上的镜像文件,文件内容:
复制代码
  1. (hd0) ./linux.img
  2. (cd0) ./ubuntu-18.04.6-server-amd64.iso
复制代码
固然实际上为了简单方便,device.map文件内容如下:
  
  1. (hd0) ./linux.img
  2. (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
为了方便创建一个文件链接:
  
  1. ln -s debian-12.5.0-amd64-netinst.iso debian.iso
复制代码
这样不管是device.map文件内里,照旧后面下令行内里,都不必要使用那么长的文件名了。 
加载linux内核

使用 sysutils/grub2-bhyve 从 ISO 文件中加载 Linux® 内核
,如果没有可以pkg安装:
  
  1. pkg install grub2-bhyve
复制代码
  1. 从 ISO 文件中加载 Linux® 内核
复制代码
  1. 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安装:
  
  1. 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

  
  1. 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

每次启动之前,都要先加载内核:
  
  1. grub-bhyve -m device.map -r hd0,msdos1 -M 1024M linuxguest
复制代码
然后引导进入虚拟机:
  
  1. 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秒就进入登录界面了:
  
  1. rdmsr to register 0xcd on vcpu 0
  2. wrmsr to register 0x140(0) on vcpu 0
  3. wrmsr to register 0x140(0) on vcpu 1
  4. wrmsr to register 0x140(0) on vcpu 2
  5. wrmsr to register 0x140(0) on vcpu 3
  6. rdmsr to register 0x34 on vcpu 1
  7. rdmsr to register 0xc0011029 on vcpu 3
  8. Unhandled ps2 mouse command 0xe1
  9. /dev/vda1: clean, 36301/987360 files, 505236/3943936 blocks
  10. Unhandled ps2 mouse command 0x88
  11. rdmsr to register 0x64d on vcpu 0
  12. Debian GNU/Linux 12 debian ttyS0
  13. debian login: xxxx
  14. Password:
  15. Linux debian 6.1.0-21-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.90-1 (2024-05-03) x86_64
  16. The programs included with the Debian GNU/Linux system are free software;
  17. the exact distribution terms for each program are described in the
  18. individual files in /usr/share/doc/*/copyright.
  19. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
  20. permitted by applicable law.
复制代码
这样就可以进入debian舒畅的玩耍拉!

持久化设置¶

要设置系统在启动时运行 bhyve 虚拟机,请对相应文件进行如下设置:
   

  • /etc/sysctl.conf
    1. net.link.tap.up_on_open=1
    复制代码
  • /etc/rc.conf
    1. cloned_interfaces="bridge0 tap0"
    2. ifconfig_bridge0="addm igb0 addm tap0"
    3. kld_list="nmdm vmm"
    复制代码
  安装bvm管理bhyve

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

  
  1. bvm --create Node-1
复制代码
 会问很多题目,就用数字回答就行
  
  1. Welcome to Bhyve Vm Manager
  2. ---------------------------
  3. Enter os type:
  4. [0]. FreeBSD
  5. [1]. OpenBSD
  6. [2]. NetBSD
  7. [3]. Debian
  8. [4]. Debian_LVM
  9. [5]. Ubuntu
  10. [6]. Kali
  11. [7]. CentOS
  12. [8]. openSUSE
  13. [9]. openSUSE_LVM
  14. [a]. Gentoo
  15. [b]. Fedora
  16. [c]. TrueOS
  17. [d]. Windows10
  18. [e]. WinServer2016
  19. [f]. pfSense
  20. [g]. OPNsense
  21. [h]. Other
  22. Enter os type: 5
  23. Enter vm CPUs: 2
  24. Enter vm RAM (e.g. 512m): 512M
  25. Enter cd status:
  26. [0]. on
  27. [1]. off
  28. Enter cd status: 0
  29. Enter iso path for CD-ROM: /root/bhyve
  30. Enter a iso file:
  31. [0]. debian.iso
  32. [1]. ubuntu.iso
  33. [2]. FreeBSD-14.1-BETA3-amd64-bootonly.iso
  34. [3]. ubuntu-18.04.6-server-amd64.iso
  35. [4]. debian-12.5.0-amd64-netinst.iso
  36. Enter a iso file: 1
  37. Enter boot from:
  38. [0]. cd0
  39. [1]. hd0
  40. Enter boot from: 0
  41. Enter uefi type:
  42. [0]. none
  43. [1]. uefi
  44. [2]. uefi_csm
  45. Enter uefi type: 0
  46. Enter hostbridge:
  47. [0]. hostbridge
  48. [1]. amd_hostbridge
  49. Enter hostbridge: 0
  50. Enter auto booting:
  51. [0]. no
  52. [1]. yes
  53. Enter auto booting: yes
  54. input invalid
  55. [0]. no
  56. [1]. yes
  57. Enter auto booting: 1
  58. Enter booting sequence index (1~1000): 10
  59. Enter booting estimate time (1~1000 secs.): 10
  60. [0]. name          : Node-1
  61. [1]. os            : Ubuntu
  62. [2]. cpus          : 2
  63. [3]. ram           : 512m
  64. [4]. CD            : on
  65. [5]. iso path      : /root/bhyve/ubuntu.iso
  66. [6]. boot from     : cd0
  67. [7]. uefi type     : none
  68. [8]. hostbridge    : hostbridge
  69. [9]. auto boot     : yes
  70. [a]. boot index    : 10
  71. [b]. boot time     : 10
  72. [c]. disk config   
  73. [d]. network config
  74. [e]. cancel        
  75. Enter an number to edit or 'ok' to complet: c
  76. Enter vm number of disks: 1
  77. Enter vm disk(0) size (e.g. 5g): 10g
  78. Enter ZFS support:
  79. [0]. on
  80. [1]. off
  81. Enter ZFS support: on
  82. input invalid
  83. [0]. on
  84. [1]. off
  85. Enter ZFS support: 0
  86. Enter zpool:
  87. [0]. zroot/ROOT/default
  88. [1]. zroot/tmp
  89. [2]. zroot/home
  90. [3]. zroot/usr/src
  91. [4]. zroot/usr/ports
  92. [5]. zroot/var/log
  93. [6]. zroot
  94. [7]. zroot/var/audit
  95. [8]. zroot/var/crash
  96. [9]. zroot/home/skywalk
  97. [a]. zroot/var/mail
  98. [b]. zroot/var/tmp
  99. Enter zpool: 0
  100. Enter storage interface:
  101. [0]. SATA hard-drive [ahci-hd]
  102. [1]. Virtio block storage interface [virtio-blk]
  103. Enter storage interface: 1
  104. [0]. disk number  : 1
  105. [1]. disk(0) size : 10g
  106. [2]. ZFS support  : on
  107. [3]. ZFS pool     : zroot/ROOT/default
  108. [4]. interface    : virtio-blk
  109. [5]. go back      
  110. Enter an number: 5
  111. ---------------------------
  112. [0]. name          : Node-1
  113. [1]. os            : Ubuntu
  114. [2]. cpus          : 2
  115. [3]. ram           : 512m
  116. [4]. CD            : on
  117. [5]. iso path      : /root/bhyve/ubuntu.iso
  118. [6]. boot from     : cd0
  119. [7]. uefi type     : none
  120. [8]. hostbridge    : hostbridge
  121. [9]. auto boot     : yes
  122. [a]. boot index    : 10
  123. [b]. boot time     : 10
  124. [c]. disk config   
  125. [d]. network config
  126. [e]. cancel        
  127. Enter an number to edit or 'ok' to complet: d
  128. Enter vm number of nics: 1
  129. Enter nic-0 network mode:
  130. [0]. Bridged
  131. [1]. NAT
  132. Enter nic-0 network mode: 0
  133. Select the binding device:
  134. [0]. igb0
  135. [1]. switch0  10.0.1.0/24
  136. [2]. switch1  10.0.2.0/24
  137. [3]. switch2  10.0.3.0/24
  138. [4]. switch3  
  139. [5]. switch4  
  140. [6]. switch5  
  141. [7]. switch6  
  142. [8]. switch7  
  143. Select the binding device: 0
  144. Enter IP-Address:
  145. [0]. none
  146. [1]. dhcp
  147. [2]. static
  148. Enter IP-Address: 1
  149. Enter network interface:
  150. [0]. Intel e82545 network interface [e1000]
  151. [1]. Virtio network interface [virtio-net]
  152. Enter network interface: 1
  153. [0]. NIC numbers   : 1
  154. [1]. nic-0 mode    : Bridged
  155. [2]. nic-0 bind    : igb0
  156. [3]. nic-0 ip      : dhcp
  157. [4]. interface     : virtio-net
  158. [5]. add a nic     
  159. [6]. go back      
  160. Enter an number: 6
  161. ---------------------------
  162. [0]. name          : Node-1
  163. [1]. os            : Ubuntu
  164. [2]. cpus          : 2
  165. [3]. ram           : 512m
  166. [4]. CD            : on
  167. [5]. iso path      : /root/bhyve/ubuntu.iso
  168. [6]. boot from     : cd0
  169. [7]. uefi type     : none
  170. [8]. hostbridge    : hostbridge
  171. [9]. auto boot     : yes
  172. [a]. boot index    : 10
  173. [b]. boot time     : 10
  174. [c]. disk config   
  175. [d]. network config
  176. [e]. cancel        
  177. Enter an number to edit or 'ok' to complet: ok
复制代码
创建好就可以启动了
开始启动bvm虚拟机

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

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

起首,创建bhyve虚拟机

  
  1. cbsd bconstruct-tui
复制代码
然后启动bhyve虚拟机

  
  1. 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(1) or no(0)]
yes确认
然后使用cbsd blogin bub22 登录
  
  1. cbsd blogin bub22
复制代码
表现
Boot from CD
Waiting for first connection via VNC to starting VMs...
[debug] 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企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

惊雷无声

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表