【原文连接】基于x86架构的CentOS7虚拟机通过qemu安装ARM架构CentOS7虚拟机_centos7 arm_redrose2100的博客-CSDN博客
试过很多版本的在win10系统直接qemu安装arm版linux都失败了,也看到了别人也说这个方式不行得用虚拟机套虚拟机才行的方式,因为我没有ubunto所以搜到大佬的centos虚拟机套虚拟机方案,亲测可用。只不过该文章没写安装成功之后怎么给qemu虚拟的arm-centos配置网络,以及关机后怎么启动,所以经过一顿csdn探索测试后特意编写此文章,反向学习输出共享给各位需要的大佬。
安装过程:
1.win10安装VMware虚拟机。
2.vmvare安装centos7,配置虚拟机centos操作系统网络,nat或者桥接都行,桥接参考VMWare桥接模式(CentOS7)_centos vmware 桥接_壆無止境的博客-CSDN博客
3.centos7虚拟机通过qemu安装arm版本centos系统,参考(试过很多版主发的都不行,就这个版主的一次就安装成功了,可嗨皮了,在此谢谢大佬。)基于x86架构的CentOS7虚拟机通过qemu安装ARM架构CentOS7虚拟机_redrose2100的博客-CSDN博客
4.按第3步安装成功之后,可能arm版的centos操作系统网络可能还是没网,需要手动设置下dhcp
cd /etc/sysconfig/network-scripts/
vi ifcfg-eth0
#修改以下两项:
BOOTPROTO=dhcp #修改为dhcp
ONBOOT=yes #修改onboot为yes
:wq 保存退出后,重启网卡:systemctl restart network
这时候ifconfig命令还未安装,可通过ip addr 查看eth0已有网络;
确认centos虚拟机可以连通外网,就可以在qemu的arm版centos内使用yum安装net-tools等工具。
5.如果不小心关了qemu的arm版centos,则可以使用以下命令重新打开系统
qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 6 -M virt -bios /usr/share/AAVMF/AAVMF_CODE.fd -nographic -device virtio-scsi-device -drive if=none,file=/var/lib/libvirt/images/test.img,id=hd0 -device virtio-blk-device,drive=hd0
注意到没,就是去掉了-drive if=none,file=/opt/os/CentOS-7-aarch64-Minimal-2009.iso,id=cdrom,media=cdrom 和-device scsi-cd,drive=cdrom 这两个参数,因为加上这两个参数就第二次重装了(试了很多次,终于明白这个参数的用途,呜呜呜,哈哈哈哈,查看了qemu参数就明白了)
6.使用shell通过vmware虚拟机ssh端口映射的方式连到套的虚拟机里边,采用如下的开机命令
qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 6 -M virt -bios /usr/share/AAVMF/AAVMF_CODE.fd -nographic -device virtio-scsi-device -drive if=none,file=/var/lib/libvirt/images/test.img,id=hd0 -device virtio-blk-device,drive=hd0 -net user,hostfwd=tcp::5678-:22 -net nic
看到了么,与第5步的开机命令多一个参数:-net user,hostfwd=tcp::5678-:22 -net nic,这样就可以把VMware虚拟机的5678端口号与arm版虚拟机的22端口号映射开通,接着直接通过finalshell、xshell等各种shell连接到arm版的虚拟机里下载文件或者安装包等。
记得xshell的连接IP和端口号为:vmware虚拟机的IP,端口号为5678,用户名密码为你qemu安装arm版本centos的用户名密码。ok到此完事。
具体原理参考:在QEMU虚拟机和宿主机之间传输文件_qemu共享文件夹_远小帅的博客-CSDN博客
(其中直接给qemu的arm虚拟机通过桥接的方式,也就是 windows-桥接--vmware(centos虚拟机)--桥接-qemu(arm版centos))
7.通过两层桥接直接给qemu嵌套的虚拟机供网
首先配置win10宿主机和vmware虚拟及通过桥接方式联网,保证vmvare虚拟机IP与win10宿主机在同一个网段里。
其次,通过在vmware虚拟机centos里配置网桥和虚拟网卡的方式给qemu的arm-centos系统供网,具体设置如下
首先安装 bridge-utils 和 tunctl
yum install bridge-utils
tunctl安装参考:CentOS 7 Tunctl 安装 虚拟网卡_tom.ma的博客-CSDN博客
# 配置 YUM 源
vim /etc/yum.repos.d/nux-misc.repo
[nux-misc]
name=Nux Misc
baseurl=http://li.nux.ro/download/nux/misc/el7/x86_64/
enabled=0
gpgcheck=1
gpgkey=http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
yum --enablerepo=nux-misc install tunctl
(1)备份并配置网桥:
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33.bark
备份后修改ens33网卡为如下配置:
vi ifcfg-ens33
TYPE="Ethernet"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
BRIDGE=br0
修改网桥配置:(修改配置文件重启不用再次添加网桥)
cp ifcfg-ens33 ifcfg-br0
vi ifcfg-br0
TYPE="Bridge"
BOOTPROTO="static"
NAME="br0"
IPADDR=192.168.1.47
NETMASK=255.255.255.0
GATEWAY=192.168.1.254
DEVICE="br0"
ONBOOT="yes"
DNS1=8.8.8.8
配置好之后重启网卡:
systemctl restart network
ip a 查看网桥br0,并开启网桥 ifup br0 或者 ifconfig br0 up
查看网桥网络连接是否正常,保证可以ping通win10宿主机内网。
(2)VMware-centos虚拟机(也就是qemu-arm的宿主机)创建虚拟网卡,并添加进网桥
tunctl -t tap0 #创建虚拟网卡
ifconfig tap0 up #开启tap0虚拟网卡
brctl addif br0 tap0 #添加虚拟网卡到网桥br0中
brctl stp br0 yes #开启网桥stp
brctl show #查看网桥结果
ifdown ens33 #关闭网卡
ifup ens33 #启动网卡
下图表示网桥设置成功。
ifconfig 查看vmware虚拟机中网络状态
其中网桥br0与win10内网地址在同一网段,ping win10 物理机可ping通,www.baidu.com也可ping通,说明网络配置正确。
ping baidu 域名还需要设置dns。
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=xxxx #名字随便了
GATEWAY=192.168.1.254 #默认网关和宿主机相同
vi /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.0.254 #DNS,跟宿主一样也可以直接写 8.8.8.8
(3)启动qemu,启动命令如下
qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 6 -M virt -bios /usr/share/AAVMF/AAVMF_CODE.fd -nographic -device virtio-scsi-device -drive if=none,file=/var/lib/libvirt/images/test.img,id=hd0 -device virtio-blk-device,drive=hd0 -net nic -net tap,ifname=tap0,script=no,downscript=no
其中最后一句-net nic -net tap,ifname=tap0,script=no,downscript=no 配置以tap0虚拟网卡作为qemu-centos-arm的网络,启动后开始配置嵌套的arm-centos网络:(如果启动后已经联网,则不需要在设置下图eth0网卡配置。)
cd /etc/sysconfig/network-scripts/
vi ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
TYPE=Ethernet
USERCTL=yes
PEERDNS=yes
IPV6INIT=no
ONBOOT=yes
IPADDR=192.168.1.63
NETMASK=255.255.255.0
GATEWAY=192.168.1.254
DNS1=8.8.8.8
#重启网卡:
systemctl restart network
ficonfig 查看arm网络连接
ping www.baidu.com 测试发现可以百度,接着可用各种xshell工具直接连接。
感谢各位大佬的文章,完美解决了小弟的问题,小弟在此表示感谢大佬。