当前位置: 首页 > news >正文

vm-bhyve:bhyve虚拟机的管理系统@FreeBSD

先说情况,当前创建虚拟机后网络没有调通....不明白是最近自己点背,还是确实有难度...

缘起:

前段时间学习bhyve虚拟机,发现bvm这个虚拟机管理系统,但是实践下来发现网络方面好像有问题,至少我花了两天时间都没有配置成功。于是继续寻找,通过pkg search bhyve,发现了vm-bhyve这个虚拟机的管理系统。

pkg search bhyve

 bhyve+-0.1.0                   BHyVe with unofficial extensions
bhyve-firmware-1.0_1           Collection of Firmware for bhyve
bhyve-rc-4                     FreeBSD RC script for starting bhyve guests in tmux
edk2-bhyve-g202308_4           EDK2 Firmware for bhyve
grub2-bhyve-0.40_10            Grub-emu loader for bhyve
rubygem-vagrant-bhyve-0.1.0    Vagrant provider plugin to support bhyve
u-boot-bhyve-arm64-2023.10_1   Cross-build das u-boot for model bhyve-arm64
uefi-edk2-bhyve-csm-0.2_4,1    UEFI EDK2 firmware for bhyve with CSM (16-bit BIOS)
vm-bhyve-1.5.0                 Management system for bhyve virtual machines
vm-bhyve-devel-1.5.0.26   

介绍

bhyve是FreeBSD下的虚拟化解决方案,它提供了一种在FreeBSD上创建和运行虚拟机的方法。支持多种操作系统,高效精简。

使用命令行操作,帮助用户轻松创建、启动和停止虚拟机。

快速使用

1. pkg install vm-bhyve
2. zfs create pool/vm
3. sysrc vm_enable="YES"
4. sysrc vm_dir="zfs:pool/vm"
5. vm init
6. cp /usr/local/share/examples/vm-bhyve/* /mountpoint/for/pool/vm/.templates/
7. vm switch create public
8. vm switch add public em0
9. vm iso https://download.freebsd.org/ftp/releases/ISO-IMAGES/11.2/FreeBSD-11.2-RELEASE-amd64-bootonly.iso
10. vm create myguest
11. vm install [-f] myguest FreeBSD-11.2-RELEASE-amd64-bootonly.iso
12. vm console myguest

下面是详细安装使用过程。 

安装

直接使用pkg进行安装

pkg install vm-bhyve

安装之后提示:

--
To enable vm-bhyve, please add the following lines to rc.conf,
depending on whether you are using ZFS storage or not. Please note
that the directory or dataset specified should already exist.

    vm_enable="YES"
    vm_dir="zfs:pool/dataset"

OR

    vm_enable="YES"
    vm_dir="/directory/path"

Then run 'vm init'.

因此我们需要按照提示进行相应的配置。

配置

设置启动配置

按照提示进行配置,可以直接使用命令:

sysrc vm_enable="YES"
sysrc vm_dir="/root/vmbhyve"

也可以将以下两句写入/etc/rc.conf文件,然后执行 sh /etc/sh 即可。

vm_enable="YES"
vm_dir="/root/vmbhyve"

然后进行初始化:


vm init

将例子文件拷贝到主目录


cp /usr/local/share/examples/vm-bhyve/* /root/vmbhyve/.templates/

配置网络

vm switch create public
vm switch add public em0

对我的机器来说,是igb0网口

wm switch add public igb0 

启动

配置安装光盘

vm iso https://mirrors.ustc.edu.cn/freebsd/releases/ISO-IMAGES/14.1/FreeBSD-14.1-BETA3-amd64-bootonly.iso

 vm install myguest http://FreeBSD-14.1-BETA3-amd64-bootonly.iso

后来发现RC1版本发布,所以最终用的命令是:

vm iso https://mirrors.ustc.edu.cn/freebsd/releases/ISO-IMAGES/14.1/FreeBSD-14.1-RC1-amd64-bootonly.iso

开始启动

vm install myguest FreeBSD-14.1-BETA3-amd64-bootonly.iso
Starting myguest
  * found guest in /root/vmbhyve/myguest
  * booting...
root@fbhost:~/vmbhyve # 

最终用的命令是:

vm install -f myguest FreeBSD-14.1-RC1-amd64-bootonly.iso

 使用-f参数,可以自动连接虚拟机,省去下面的命令。

连接虚拟机

vm console myguest 

不出意外的出意外了。

dhcp拿不到ip地址

dhcp总算拿到ip地址了

在安装的过程中,多次重新安装,因此需要注意安装不成功之后的操作。

在安装的时候碰到过网络不通的情况,即使重新配置,网络通了,但是硬盘因为前面配置了zfs,导致看不见硬盘,无法进行下一步。

这时候就要重新“完全重新启动”安装过程,需要在虚拟机里关机。如果关机后进入下面状态

Consoles: userboot  FreeBSD/amd64 User boot lua, Revision 1.2
ERROR: cannot open /boot/lua/loader.lua: no such file or directory.Type '?' for a list of commands, 'help' for more detailed help.
OK 

需要输入

quit

退出。

安装完毕之后的正常启动

vm start myguest
vm console myguest

总结

暂时用vm-bhyve还是没有调通虚拟机的网络部分。

调试

绑定igb0网络出错

vm switch add public igb0
/usr/local/sbin/vm: ERROR: failed to add member igb0 to the virtual switch public
好像这台机器的虚拟网那边有些乱了。强制虚拟机运行起来,也是无法拿到dhcp地址,手工设地址也连不上。

启动虚拟机报错

 vm install  testvm freeBSD-14.1-BETA3-amd64-bootonly.iso
/usr/local/sbin/vm: ERROR: unable to locate iso file - 'freeBSD-14.1-BETA3-amd64-bootonly.iso'
不明白这里为什么没有这个iso 

后来怎么又不报错了呢? 反正又从中科大重新配了一下启动光盘,就好了:

vm iso https://mirrors.ustc.edu.cn/freebsd/releases/ISO-IMAGES/14.1/FreeBSD-14.1-BETA3-amd64-bootonly.iso

网络不通

把这两句配上试试

network0_type="virtio-net"
network0_switch="public"

还是不通,最近调的虚拟机网络都不通...

vm console myguest 无法连接虚拟主机


/usr/local/sbin/vm: ERROR: myguest  doesn't appear to be a valid virtual machine

但是换了一个控制台,就登上去了。


命令报错-su: switch: not found

而且用其它的没有的命令测试,也是有-su的报错:

-su: ldde: not found

为什么发的命令会报错:-su: ldde: not found ,如果没有ldde这个命令,也不应该有-su 什么事啊

原来命令前面少了vm,不是 switch add public igb0, 而整个命令是:

 vm switch add public igb0
 

安装的时候多次遇到获取base.txz失败的问题

或者说就卡在这里,一度以为网卡没有起来,后来专门测试这个地址:

https://download.freebsd.org/ftp/releases/amd64/amd64/14.1-BETA3/base.txz

发现没有这个文件,原来这几天FreeBSD的14.1-RC1发布了,所以BETA3的软件没有了。

重新下载14.1的安装盘:

https://mirrors.ustc.edu.cn/freebsd/releases/ISO-IMAGES/14.1/FreeBSD-14.1-RC1-amd64-bootonly.iso

使用14.1-RC1光盘启动后无法进入安装界面

不能进入安装界面,直接进入login登录界面,而且root账户登进去还会报错退出

Fri May 31 12:52:56 UTC 2024

FreeBSD/amd64 (Amnesiac) (ttyu0)

login: root
g_vfs_done():iso9660/14_1_RC1_AMD64_BO[READ(offset=456009728, length=2048)]error = 5
2024-05-31T12:53:09.464378+00:00 - login 560 - - login on ttyu0 as root
2024-05-31T12:53:09.466283+00:00 - login 560 - - ROOT LOGIN (root) ON ttyu0
Can't mkdir /var/run/xdg
2024-05-31T12:53:09.470018+00:00 - login 560 - - pam_open_session(): Session failure

FreeBSD/amd64 (Amnesiac) (ttyu0)

login: root
2024-05-31T12:54:43.240502+00:00 - login 561 - - login on ttyu0 as root
2024-05-31T12:54:43.242543+00:00 - login 561 - - ROOT LOGIN (root) ON ttyu0
Can't mkdir /var/run/xdg
2024-05-31T12:54:43.245788+00:00 - login 561 - - pam_open_session(): Session failure

FreeBSD/amd64 (Amnesiac) (ttyu0)

login: 
 

重新vm iso https://mirrors.ustc.edu.cn/freebsd/releases/ISO-IMAGES/14.1/FreeBSD-14.1-RC1-amd64-bootonly.iso 

再次安装,就正常了。

有时候vm console myguest无法登录

报错

vm console myguest 
/usr/local/sbin/vm: ERROR: myguest  doesn't appear to be a valid virtual machine

原来是myguest后面不小心有了空格...

http://www.lryc.cn/news/358894.html

相关文章:

  • 【Java】刚刚!突然!紧急通知!垃圾回收!
  • [Algorithm][动态规划][子序列问题][最长递增子序列][摆动序列]详细讲解
  • 【稳定检索】2024年心理学与现代化教育、媒体国际会议(PMEM 2024)
  • 深入了解diffusion model
  • TransmittableThreadLocal原理
  • 华为昇腾310B初体验,OrangePi AIpro开发板使用测评
  • GPTQ 量化大模型
  • 【GD32】05 - PWM 脉冲宽度调制
  • JVM思维导图
  • Ollama+OpenWebUI+Phi3本地大模型入门
  • 实战15:bert 命名实体识别、地址解析、人名电话地址抽取系统-完整代码数据
  • js 表格添加|删除一行交互
  • 如何选择合适的服务器硬件和配置?
  • Prometheus + Grafana + Alertmanager 系统监控
  • 5.23R语言-参数假设检验
  • rnn 和lstm源码学习笔记
  • 解析Java中1000个常用类:CharSequence类,你学会了吗?
  • 微服务远程调用之拦截器实战
  • 德人合科技——天锐绿盾内网安全管理软件 | -文档透明加密模块
  • 超融合架构下,虚拟机高可用机制如何构建?
  • 工厂模式详情
  • 【Word】调整列表符号与后续文本的间距
  • 匠心独运,B 端系统 UI 演绎华章之美
  • Java电商平台-开放API接口签名验证(小程序/APP)
  • Tale全局函数对象base
  • 【启程Golang之旅】掌握Go语言数组基础概念与实际应用
  • COMSOL中液晶材料光学特性模拟
  • 虚拟现实环境下的远程教育和智能评估系统(五)
  • 【算法】模拟算法——Z字形变换(medium)
  • 上位机图像处理和嵌入式模块部署(f103 mcu获取唯一id)