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

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


参考资料:


更多文章
  • 用selenium完成自动化任务
  • 用闲置的安卓手机做垃圾电话短信过滤
  • 推荐三个时间管理工具
  • 一次事故反思
  • 当JS遇到uint64:JS整数溢出问题
  • SQLite3 存储以及ACID原理
  • Redis源码阅读:pub/sub实现
  • Redis源码阅读:zset实现
  • Redis源码阅读:bitmap 位图的运算
  • Redis源码阅读:set是怎么做交并集运算的?
  • Redis源码阅读:list实现(ziplist, quicklist)
  • Redis源码阅读:RDB是怎么实现的
  • Redis源码阅读:AOF重写
  • Redis源码阅读:AOF持久化
  • Redis源码阅读:key是怎么过期的