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快速起步 中为每个虚拟机使用了 ZFS 的zvol
卷,这些卷都是创建在/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快速起步 启动VM的命令,去掉VNC添加控制台配置
执行
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