思路
借助libvirt的qemu钩子, 在虚拟机启动时, 自动添加default网络, 实现虚拟机通过无线网卡上网
过程
系统版本 0.9.18, 虚拟机win10
激活default网络
sudo virsh net-list --all
查看default网络状态
sudo virsh net-autostart default
设置开机启动
确认虚拟机名称
命令行使用的虚拟机名称和飞牛管理界面显示的不一致
ll /etc/libvirt/qemu
查看已有虚拟机配置文件
查看每个xml文件内容,通过其中的title属性(即飞牛界面显示的名称)确认要配置的虚拟机配置文件,文件名即是虚拟机名称(如名称vzkknstu的虚拟机,对应的配置文件名为vzkknstu.xml)
配置钩子
sudo vi /etc/libvirt/hooks/qemu
创建钩子文件,内容:
#!/bin/bash
nohup sh /etc/libvirt/hooks/my-action.sh "$1" "$2" "$3" >> /var/log/libvirt/hooks_qemu.log 2>&1 &
sudo vi /etc/libvirt/hooks/my-action.sh
创建执行脚本,内容:
#!/bin/bash
VM_NAME="$1"
EVENT="$2"
PHASE="$3"
echo " $(date +'%Y-%m-%d %H:%M:%S') : $VM_NAME $EVENT $PHASE"
if [ "$VM_NAME" = "上一步找到的虚拟机名称" ] && [ "$EVENT" = "started" ] && [ "$PHASE" = "begin" ]; then
echo "attach $VM_NAME network default"
virsh attach-interface "$VM_NAME" network default
fi
sudo touch /var/log/libvirt/hooks_qemu.log
创建日志文件
分配权限
sudo chmod a+w /var/log/libvirt/hooks_qemu.log
sudo chmod a+x /etc/libvirt/hooks/qemu
sudo chmod a+x /etc/libvirt/hooks/my-action.sh
重启飞牛系统(如果只重启libvirtd服务,飞牛的虚拟机管理界面用不了)
重启之后, default网络应该会自动启动, 在飞牛虚拟机管理界面,启动虚拟机后,会触发钩子给虚拟机添加网络, 虚拟机就可以正常上网了