先说情况,当前创建虚拟机后网络没有调通....不明白是最近自己点背,还是确实有难度...
缘起:
前段时间学习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
开始启动
vm install myguest FreeBSD-14.1-BETA3-amd64-bootonly.iso
Starting myguest
* found guest in /root/vmbhyve/myguest
* booting...
root@fbhost:~/vmbhyve #
连接虚拟机
vm console myguest
不出意外的出意外了。
dhcp拿不到ip地址
总结
暂时用vm-bhyve还是没有调通虚拟机的网络部分。
调试
绑定igb0网络出错
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