bhyve虚拟机控制台

bhyve 控制台包装在会话管理工具(例如 tmux多会话终端管理screen终端多路复用管理器 )中,可以非常方便detach或reattach到控制台。并且能够将 bhyve 控制台设置为一个可以通过 cu 访问的null modem设备。此时,需要加载 nmdm 内核模块,并将 -l com1,stdio 替换为 -l com1,/dev/nmdm0A/dev/nmdm 设备会根据需要自动创建,每个设备都是一对,分别对应null modem设备的电缆的两端( /dev/nmdm0A/dev/nmdm0B )

我在 bhyve快速起步 中没有配置虚拟机控制台,使用了VNC方式,这样能够获得虚拟机图形界面,比较简单。但是没有控制台,其实对于虚拟机服务器不是很方便(需要使用VNC客户端连接才能看到虚拟机终端)。所以,本文实践尝试改进(关闭VNC,仅使用字符控制台)

  • 添加远程终端配置,也就是在 /etc/remote 中添加如下配置:

创建终端配置
# 为名为 fedora 的虚拟机创建终端配置
echo 'fedora:dv=/dev/nmdb0B:br#9600:pa=none:' >> /etc/remote
  • 为每个虚拟机准备一个 device.map 文件,由于我在 bhyve快速起步 中为每个虚拟机使用了 ZFSzvol 卷,这些卷都是创建在 /zroot/vms 目录下(但不挂载,所以 df 看不到),所以我为每一个虚拟机创建但 device.map 文件以 <vm_name>.map 命名,并存放在 /zroot/vms/<vm_name> 目录下:

fedora 虚拟机创建 /zroot/vms/fedora/fedora.map
(hd0) /dev/zvol/zroot/vms/fedora
(cd0) /home/admin/Fedora-Server-dvd-x86_64-42-1.1.iso
  • 执行 grub-bhyve 来配置虚拟机的内存并且以 cd0 (安装iso镜像)启动:

执行 grub-bhyve 为虚拟机设置好grub配置
grub-bhyve -r cd0 -m /zroot/vms/fedora.map -M 16384 fedora
  • 执行 grub-bhyve 来配置虚拟机的内存以及启动设备等:

执行 grub-bhyve 为虚拟机设置好grub配置
grub-bhyve -r hd0 -m /zroot/vms/fedora.map -M 4096 fedora
执行 bhyve 从虚拟磁盘启动虚拟机(已安装完成的可运行虚拟机)
bhyve -c 2 -m 4G -H -P -A -S \
-l com1,/dev/nmdm0A \
-l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd \
-s 0:0,hostbridge \
-s 1:0,lpc \
-s 2:0,virtio-net,tap1 \
-s 4,virtio-blk,/dev/zvol/zroot/vms/fedora \
fedora

参考