QEMU创建arm64架构的centos7虚拟机
准备
- bios 文件
- centos 7 镜像文件
流程
- 下载qemu源码包
mkdir /usr/qemu
cd /usr/qemu
wget https://download.qemu.org/qemu-4.1.0.tar.xz
- 编译qemu,解压qemu安装包进入其目录执行以下命令
tar -xf qemu-4.1.0.tar.xz
cd ./qemu-4.1.0
./configure --target-list=aarch64-softmmu,aarch64-linux-user --enable-virtfs --enable-debug && make -j4 && make install如果缺少库的话用 yum search 搜索缺少的库名,我这边缺少下面这个4个库
yum install -y glib2-devel.x86_64
yum install -y zlib-devel.x86_64
yum install -y pixman-devel.x86_64
yum install -y libcap-devel.x86_64
- 创建镜像文件
mkdir /usr/qemu/centos7_aarch64
cd /usr/qemu/centos7_aarch64
yum install -y qemu-kvm
qemu-img create -f qcow2 centos7_arm64.img 40g
- 创建/etc/qemu-ifup,和/etc/qemu-ifdown文件,并增加可执行权限
/etc/qemu-ifup
#!/bin/bash
IFNAME=ens33 #网卡名称
IP1=192.168.10.100/24
IP2=192.168.10.101/24
set -x
if [ -n "$1" ];then
#create bridge, add physical interface to bridge
ip link set $IFNAME down
ip link add br0 type bridge
ip link set br0 up
ip link set $IFNAME master br0
ip link set $IFNAME up
# ip addr add $IP1 dev br0
# ip addr add $IP2 dev $IFNAME
#add tap device to bridge
# ip tuntap add $1 mode tap user `whoami`
ip link set $1 up
sleep 0.5s
ip link set $1 master br0
#config ip fro bridge
pkill dhclient
sleep 5
dhclient -v br0
exit 0
else
echo "ERROR: no interface specified"
exit 1
fi
/etc/qemu-ifdown
#!/bin/bash
if [ -n "$1" ];then
IP1=192.168.10.100/24
IP2=192.168.10.101/24
IFNAME=ens33
ip link set $IFNAME down
ip link set $1 down
ip link set br0 down
ip link set $1 nomaster
ip link set $IFNAME nomaster
ip link del br0
# ip tuntap del $1 mode tap
#ip addr del $IP2 dev $IFNAME
ip link set $IFNAME up
pkill dhclient
sleep 5
dhclient -v $IFNAME
else
echo "ERROR:no interface specified"
fi
- 启动quem虚拟机
qemu-system-aarch64
-m 4096
-M virt,accel=tcg
-cpu cortex-a72
-smp 8,sockets=4,cores=2
-bios /usr/qemu/centos7_aarch64/QEMU_EFI.fd
-device VGA
-device nec-usb-xhci
-device usb-mouse
-device usb-tablet
-device usb-kbd
-drive if=none,file=/usr/qemu/centos7_aarch64/centos7_arm64.img,id=hd0
-device virtio-blk-device,drive=hd0
-drive if=none,file=/usr/qemu/centos7_aarch64/CentOS-7-aarch64-Everything-2009.iso,id=cdrom,media=cdrom -device virtio-scsi-device
-device scsi-cd,drive=cdrom
-net nic
-net tap,ifname=tap1
-vnc :0官方文档 https://qemu.readthedocs.io/en/latest/system/invocation.html#hxtool-8
- 安装vnc,通过vncviewer连接虚拟机
yum -y install vnc
vnc地址为127.0.0.1:5900
- 设置虚拟机的网卡IP信息后,即可上网
dhclient eth0
- 将qemu安装目录写入到环境变量中,编写个启动脚本
qemu-system-aarch64 -m 4096 -M virt,accel=tcg -cpu cortex-a72 -smp 8,sockets=4,cores=2 -bios /usr/qemu/centos7_aarch64/QEMU_EFI.fd -device VGA -device nec-usb-xhci -device usb-mouse -device usb-tablet -device usb-kbd -drive if=none,file=/usr/qemu/centos7_aarch64/centos7_arm64.img,id=hd0 -device virtio-blk-device,drive=hd0 -device virtio-scsi-device -net nic -net tap,ifname=tap1 -vnc :0 &
sleep 5
vncviewer host=127.0.0.1:5900