环境
和文章虚拟化(1)相同
目标
虚机能和主机,和web互联
步骤
(1)在文章1中原本打算先创建虚拟网卡,这符合普通人思维。但是从一些博客了解到:kvm启动参数中,指定虚拟网卡名,指定网络脚本
(2)上一篇记错了一件事,kvm命令不是内核自带,需要安装,apt install qemu-system-x86,这会安装一堆软件。
(3)参考该博客 (文中说自己写脚本qemu-ifup,上一步安装软件时会自动创建的,所以我没自己写 ),先创建一个无网卡虚机centos7, 安装过程卡住, 这篇文章说多等一会,我等了1小时也卡,如果网友知道解决方法,跪求指点!所以删了,下载了centos6,kvm参数中我多加了-vga qxl 避免虚机超出物理屏幕或者分辨率太低。安装后进入系统,ip a 显示有线网卡没有ip 这是因为安装时没设置网络,网卡未启动。
(4)此时主机nmcli c 已经启动的是switch和bridge-slave,正如上一篇博客的结果。
文件格式的区别:img用dd命令创建,qcow2用qemu-img创建,用前者安装系统时,qemu做快照时,不能把快照写入img文件内部。
参考 这篇博客 介绍的网络拓扑,
kvm --hda centos7.img -smp 2 -m 2048 -net nic -net tap,ifname=tap1,script=/etc/qemu-ifup,downscript=no -daemonize
其中网络设置可以简写为 -nic tap,ifname=....
这里提示必须sudo,上一步创建虚机的命令,可以不加sudo ,为什么这里必须加?跪求网友指点如何可以不加,因为我觉得不加权限安全一点。
然后执行还是无法启动,所以我删了第2步自带的脚本,参考第3步介绍的脚本自己创建了一个,并且把命令中的-vnc一项去掉。kill kvm进程。再次运行kvm命令,就成功启动 了系统。
登录后因为装系统时没有网络,所以网卡没启动。
ifup eth0
再ip a 成功显示了192.168.43.104 ,而我的主机网桥是 .101 ,至此本文的目标实现了。
brctl show 可以看到网桥下面挂载的设备有2个,验证了第4步博客中的那个拓扑。
当建立多个虚拟机时,如果不指定mac则它们的mac地址可能相同。-nic tap,mac=...