x86架构用qemu-system-aarch64创建arm64架构的虚拟机(centos7.5系统用qemu-system-aarch64创建arm版的银河麒麟系统)

一、编译安装qemu

1、安装qemu之前先把编译要用的依赖先装上。

yum install gtk2-devel

yum install python3 python3-devel

2、下载qemu包(qemu-4.1.0版)

wget https://download.qemu.org/qemu-4.1.0.tar.xz

tar -xJf qemu-4.1.0.tar.xz
cd qemu-4.1.0
./configure --target-list=aarch64-softmmu
make
make install

二、创建一个目录,将QEMU_EFI.fd 、银河麒麟系统iso、虚拟硬盘放在这个目录下。

mkdir kylin

cd kylin

三、下载UEFI固件(安装麒麟系统时要用到)

wget http://releases.linaro.org/components/kernel/uefi-linaro/16.02/release/qemu64/QEMU_EFI.fd

四、创建虚拟硬盘

编译安装的qemu没有qemu-img这个命令,在线安装一个即可(yum install qemu-img)

qemu-img create -f qcow2 kylin_arm64.qcow2 50G

此时kylin这个目录下有以下这个几个文件

五、安装银河麒麟系统(创建虚拟机的时候网络配置可以配置为user模式或者tap模式)

user模式(相当于nat模式):

create.sh脚本如下
SYSTEMISO=$(ls *.iso)
DISKFILE=$(ls *.qcow2)

qemu-system-aarch64 -m 2048 -cpu cortex-a72 -smp 4 -M virt \
    -bios QEMU_EFI.fd -nographic \
    -drive if=none,file=${DISKFILE},id=hd0 \
    -device virtio-blk-device,drive=hd0 \
    -drive if=none,file=${SYSTEMISO},id=cdrom,media=cdrom \
    -device virtio-scsi-device \
    -device scsi-cd,drive=cdrom \
    -net nic -net user,hostfwd=tcp::2222-:22

tap模式(桥接模式):

create.sh脚本如下:

SYSTEMISO=$(ls *.iso)
DISKFILE=$(ls *.qcow2)

qemu-system-aarch64 -m 2048 -cpu cortex-a72 -smp 4 -M virt \
    -bios QEMU_EFI.fd -nographic \
    -drive if=none,file=${DISKFILE},id=hd0 \
    -device virtio-blk-device,drive=hd0 \
    -drive if=none,file=${SYSTEMISO},id=cdrom,media=cdrom \
    -device virtio-scsi-device \
    -device scsi-cd,drive=cdrom \
    -net nic -net tap,ifname=tap0,script=no,downscript=no

六、虚拟机安装过程忽略,注意选择安装界面不能有!号,全部要为x,如下图

七、安装完成后关机,用virsh list --all命令查看,发现刚刚装的虚拟机不存在,原因未知,后期继续研究,瞬间不知道怎么起原来创建好的虚拟机了,经过一波度娘,操作如下:

重新启动虚拟机(以tap模式启动,tap模式为桥接模式)

run.sh脚本如下

SYSTEMISO=$(ls *.iso)
DISKFILE=$(ls *.qcow2)

qemu-system-aarch64 -m 2048 -cpu cortex-a72 -smp 4 -M virt \
    -bios QEMU_EFI.fd -nographic \
    -drive if=none,file=${DISKFILE},id=hd0 \
    -device virtio-blk-device,drive=hd0 \
    -device virtio-scsi-device \
    -net nic -net tap,ifname=tap0,script=no,downscript=no

八、启动成功后,配置网络,以桥接的模式,下面分别是银河麒麟虚拟机和宿主机的网络配置。

虚拟机:
正常配网卡信息(vi /etc/sysconfig/network-scripts/ifcfg-eth0 )

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=cbbde8cb-19f0-4c3c-ba91-451ec83465d6
DEVICE=eth0
ONBOOT=yes

IPADDR=182.31.50.105
NETMASK=255.255.255.0
GATEWAY=182.31.50.1
DNS1=202.96.128.86

宿主机:
1)新增一个br0网卡(桥接em1)
cp ifcfg-em1 ifcfg-br0

ifcfg-em1网卡配置如下:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=em1
UUID=f5519dc9-b972-4bd1-bf9c-656ced983c6e
DEVICE=em1
ONBOOT=yes
BRIDGE="br0"

ifcfg-br0网卡配置如下:

DEVICE=br0
BOOTPROTO=static
ONBOOT=yes
TYPE="Bridge"

IPADDR=182.31.50.103
NETMASK=255.255.255.0
GATEWAY=182.31.50.1
DNS1=202.96.128.86
DNS2=114.114.114.114

重启网卡
service network restart


2)关闭NetworkManager
systemctl stop NetworkManager
systemctl disable NetworkManager

3)创建一个tap0接口
ip tuntap add dev tap0 mod tap

4)在虚拟网桥中增加一个tap0接口
brctl addif br0 tap0

5)打开tap0接口
ifconfig tap0 0.0.0.0 promisc up

6)显示br0的各个接口
brctl showstp br0

如上就是arm64版虚拟机的创建过程。

 

 

 

 

 

 

 

  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值