FreeBSD 使用 vm-bhyve 安装Debian虚拟机
首先需要安装 bhyve
和 vm-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
就这样就修复完成了,以后就可以正常启动。
参考资料:
- https://npulse.net/en/blog/125-bhyve-uefi-drops-into-efi-shell-linux-wont-boot-easy-workaround
- https://www.davidschlachter.com/misc/freebsd-bhyve-uefi-shell
更多文章
本站热门
- socks5 协议详解
- zerotier简明教程
- 搞定面试中的系统设计题
- frp 源码阅读与分析(一):流程和概念
- 用peewee代替SQLAlchemy
- Golang(Go语言)中实现典型的fork调用
- DNSCrypt简明教程
- 一个Gunicorn worker数量引发的血案
- Golang validator使用教程
- Docker组件介绍(一):runc和containerd
- Docker组件介绍(二):shim, docker-init和docker-proxy
- 使用Go语言实现一个异步任务框架
- 协程(coroutine)简介 - 什么是协程?
- SQLAlchemy简明教程
- Go Module 简明教程