FreeBSD 使用 vm-bhyve 安装Debian虚拟机

首先需要安装 bhyvevm-bhyve:

# pkg install vm-bhyve bhyve

加载对应的内核:

kldload vmm
kldload nmdm
kldload if_bridge if_tap

初始化,由于我不是使用ZFS,而是使用的UFS,所以命令如下:

# sysrc vm_enable="YES"
# mkdir -p /data/vms
# sysrc vm_dir="/data/vms"
# vm init
# cp /usr/local/share/examples/vm-bhyve/* /data/vms/.templates/

如果是ZFS,则是:

# zfs create pool/vm
# sysrc vm_enable="YES"
# sysrc vm_dir="zfs:pool/vm"
# vm init
# cp /usr/local/share/examples/vm-bhyve/* /mountpoint/for/pool/vm/.templates/

初始化网络:

# vm switch create public
# vm switch add public <你的网卡>

把ISO镜像传到对应目录:scp debian-xxx.iso freebsd:/data/vms/.iso/,记住ISO文件名。

创建并启动Debian虚拟机:

# vm create -t debian -s 20G debian
# vm install debian debian-12.1.0-amd64-netinst.iso

然后VNC连接到FreeBSD的5900端口安装。安装完,如果重启Debian,则会遇到报错:

BdsDxe: failed to load Boot0001 "UEFI BHYVE SATA DISK BHYVE-48FF-992B-D5E0" from PciRoot(0x0)/Pci(0x4,0x0)/Sata(0x0,0xFFFF,0x0): Not Found
>>Start PXE over IPv4.

这样的报错,出现问题的原因是 FreeBSD 去找EFI文件的路径,但是没找到,Debian默认安装到别的地方去了,修复方式如下:

Shell>FS0:
FS0:\>ls
Directory of: FS0:\
FS0:\>cd EFI\debian
FS:\EFI\debian\>grubx64.efi

然后就可以启动进入了Debian,然后需要修正一下EFI的路径,在Debian中,以root身份执行:

# mkdir /boot/efi/EFI/BOOT
# cp /boot/efi/EFI/debian/grubx64.efi /boot/efi/EFI/BOOT/bootx64.efi

就这样就修复完成了,以后就可以正常启动。


参考资料:


更多文章
  • Kotlin/Java 列表Protobuf序列化
  • deeplink结合路由处理扩展App的能力
  • 怎么使用ViewModel 和 RecyclerView
  • Android手动挡MVVM
  • 来电拦截方案
  • 你好,2021!
  • gRPC鉴权方案
  • Golang里数据库migration方案
  • Android SwipeRefreshLayout左右滑动冲突的解决
  • Android调用gRPC的两个小工具函数
  • Android上结合kotlin使用coroutine
  • gRPC错误处理
  • Java collection的结构
  • 为啥Redis使用pipelining会更快?
  • 通过阳台种菜实现蔬菜自由