在上一篇文章中在aarch64主機中使用qemu啟動虛機,介紹了如何使用使用者網絡模式來啟動虛拟機,但是這種模式有很多缺點,例如不能和其他虛機通信,不能使用ping測試通信等。是以在這篇中講述如何使用tap模式來啟動虛機。
該模型為私有虛拟區域網路模型,隻允許在本host機器上通路,不會影響到host機器網絡.
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuMHdzVWdn91b3R3Xk5WYfVGZv12X0Fmbf5Wafh2Y0l2dz91ay92d0VmbfxWY1RncpZ3Xh9Fa0l2dfR3cvh0LcRDZvwFZvw1cldWYtl2Lcdmcv5CdylmdilGbuk2apd3Lc9CX6MHc0RHaiojIsJye.png)
1. 安裝libvirt daemon
yum install -y libvirt-daemon
2. 啟動libvirtd
service libvirtd start
3. 使用新腳本啟動鏡像
start_vm.sh
if [ $# -ne ];then
echo "Usage: $0 network-mode[user|tap]"
echo "e.g.: $0 user"
echo " $0 tap"
exit
fi
if [ $1 == "user" ];then
# User Networking Mode
qemu-system-aarch64 -smp -m -M virt -bios QEMU_EFI.fd -nographic \
-device virtio-blk-device,drive=image \
-drive if=none,id=image,file=xenial-server-cloudimg-arm64-uefi1.qcow2,format=qcow2 \
-device virtio-blk-device,drive=cloud \
-drive if=none,id=cloud,file=cloud.img,format=raw \
-netdev user,id=user0,hostfwd=tcp::-: -device virtio-net-device,netdev=user0 \
-enable-kvm -cpu host
elif [ $1 == "tap" ];then
# Tap Networking Mode [Private Virtual Network]
macaddress=:::a:e:d4
qemu-system-aarch64 -smp -m -M virt -bios QEMU_EFI.fd -nographic \
-device virtio-blk-device,drive=image \
-drive if=none,id=image,file=xenial-server-cloudimg-arm64-uefi1.qcow2,format=qcow2 \
-device virtio-blk-device,drive=cloud \
-drive if=none,id=cloud,file=cloud.img,format=raw \
-device virtio-net-device,netdev=network0,mac=$macaddress \
-netdev tap,id=network0,ifname=tap0,script=qemu-ifup.sh,downscript=no \
-enable-kvm -cpu host
fi
依賴的qemu-ifup.sh
#!/bin/sh
set -x
switch=virbr0
if [ -n "$1" ];then
# tunctl -u `whoami` -t $1 (use ip tuntap instead!)
ip tuntap add $1 mode tap user `whoami`
ip link set $1 up
sleep s
# brctl addif $switch $1 (use ip link instead!)
ip link set $1 master $switch
exit
else
echo "Error: no interface specified"
exit
fi
使用方法:
./start_vm.sh tap
4. 檢視ip
結果如下圖:
然後使用ssh登入即可