1、简介
最近两天在搞arm架构的应用部署工作,但是我们只有一台arm的服务器,是华为的taishan200,cpu架构是arm的,型号是920。一开始打算使用的是esxi,esxi可以说是虚拟化的老大,但是由于其仅支持x86和一些国外的arm服务器,不支持国内的cpu,所以只能放弃。想过租阿里的arm云服务器,但是大环境啊,租不起了。
随后又调研了一些开源和国内的虚拟化平台,比如:FreeVM、Proxmox VE,但是free vm在免费版的情况下,只支持虚拟4c4g的虚机,这不满足我们的需求;Proxmox VE 虽然可以做到支持国产服务器arm的方案,但是由于需要更改太多的东西,容易把机器玩废了,所以也只能放弃。
哦,这里说下,虽然可以安装debian后,在安装Proxmox,但是这个没有尝试过,可能也需要较长的时间,而且不能保证在改动之后,可以成功虚拟虚机,所以这个不是我的选择。
最终在个人调研情况下,决定采用较为稳妥的方式:
服务器开启虚拟化安装可以展示界面的linux操作系统(openeuler)在openeuler操作系统中,安装kvm qemu以及虚拟化管理工具创建虚机,完成虚拟化任务2、服务器查看是否开启虚拟化
我这里的服务器是华为taishan 200,cpu架构arm,cpu型号 kunpeng920
2.1 开机进入bios
这一步其实没什么好说的,就是关闭服务器,然后按下开机按钮,稍等片刻
出现上图的时候,疯狂按“Delete”或“F4”(或者开机之后,就开始按也行),顺利的话,可能会让你输入密码
初始的密码应该是admin@9000(如果你没有改过的话)
2.2 查看虚拟化是否开启
执行完2.1的步骤之后,就会进入bios的mian界面
之后需要通过键盘上的←和→来移动选项,进入 Advanced,然后选择pcle config,回车
进入pcie config界面后,如下图,选择sriou,将其改为enable。
相关参数说明:
启用或停用Single Root Input/Output Virtualization(SRIOV),菜单选项为: Enable 启用Disable 停用之后后退,然后F10,保存并退出。
3、下载openeuler镜像,并写入U盘
3.1 下载openeuler镜像
华为的机器,使用华为的操作系统,这非常nice。可以搜索openeuler,进下载页面
筛选一下各自机器的资源配置,比如架构 aarch64、我想要的lts版本(长期维护支持)
我选择的是“openEuler 22.03 LTS SP4”,如果后续在页面中找不到了,可以评论留言要下载地址。点击“openEuler 22.03 LTS SP4”后面的前往下载,进入下图的页面。
然后选择aarch64和服务器,筛选一下,在点击立即下载,就可以下载iso了。这里不建议下载第二个全部安装,因为在安装的时候有冲突,而且写入的时间太长了。
3.2 镜像写入U盘
我习惯使用rufus工具写入iso,这是一个非常好用的工具,按照下图中的选项进行选择即可
点击开始后,会提示如下内容,提前说明,需要将U盘中的数据进行保存哈
接下来就是一个漫长的等待,毕竟需要进行:格式化U盘,设置卷标,写入文件一系列操作
出现上图,已经表示写入成功,就可以到服务器上插U盘了
4、进到服务器从U盘启动
注:此步骤执行前需要备份服务器中的数据(我这里确认不需要保存后,就直接格式化了)
比较幸运的是,taishan200可以在启动后通过F2,选择启动盘
在开启出现这个界面或出现之前,疯狂按F2(按“F2”进入选择启动项界面)
之后就是输入密码,默认密码在上面写了,这里不重复
输入密码之后选择插入的U盘
5、安装openeuler
在出现下图时,选择“Test this media & install openEuler 22.03-LTS-SP4”
选择“Test this media & install openEuler 22.03-LTS-SP4”之后,稍等片刻,会出现下图
接下来就是选择使用的语言、硬盘、开启网络、主机名、设置时区、创建用户等步骤。
安装的目的地,就选择服务器上的硬盘就可以,如果是已有数据的硬盘,可能会剩余空间不足,在选择磁盘后,点击回收空间,确定不需要保存数据,就选择后,有个全部删除,然后openeuler会自动重置了。
然后就是开启root用户,输入密码,然后选择安装,等完成后,重启系统就可以了。
6、配置服务器为静态ip
进入服务器后,编辑/etc/sysconfig/network-scripts/ifcfg-enp125s0f0文件,我这里是这个名字,有几个网卡选择那个就行,这里如何确定,你使用的是哪个文件呢
6.1 确定需要修改的网络文件
通过shell连接服务器后,执行
ip addr show
可以通过这个方式,看到使用的网卡名称,然后进行编辑就可以了
6.2 编辑文件
vi /etc/sysconfig/network-scripts/ifcfg-enp125s0f0TYPE="Ethernet"BOOTPROTO="static"NAME="enp125s0f0"DEVICE="enp125s0f0"ONBOOT="yes"IPADDR="192.168.1.253"GATEWAY="192.168.1.1"PREFIXn="255.255.255.0"DNS1="8.8.8.8"
相关参数说明:
vi xxxx:通过vi编辑网卡文件TYPE=Ethernet:网络类型 以太网BOOTPROTO=static:使用静态ipNAME:网卡名称(与编辑的文件后缀一样)DEVICE:系统逻辑名(与编辑的文件后缀一样)ONBOOT:是否开机启动网卡,这是是yesIPADDR:指定的ip地址GATEWAY:网关DNS1:指定的第一个DNS服务器PREFIXn:这个参数需要说明,openeuler不能是netmask,和centos不太一样6.3 重启网络或重启系统
设置文件后,重启网络,让其生效
systemctl reload NetworkManagersystemctl restart NetworkManager# 如果你那里通过上面两个命令,执行后已经生效,则不用重启。否则重启服务器reboot
这个地方和centos不太一样,不可以通过service network restart重启
7 安装dde,也就是桌面
如果你自信能用命令行启动虚机,那是厉害的,可以不用在看了,如果你想像在windows使用vmware一样,创建虚机,则继续按我的文档执行
7.1 更新源
DDE是统信软件团队研发的一款功能强大的桌面环境。包含数十款功能强大的桌面应用,是真正意义上的自主自研桌面产品。我比较喜欢这个
dnf update
7.2 安装dde
dnf install dde
7.3 设置以图形界面方式启动
systemctl set-default graphical.targetreboot
重启之后,就会发现可以使用桌面的方式进入openeuler了,界面就长这个样子,我觉得还是比较好看的
8 安装虚拟化工具
由于openeuler内核已经集成了kvm,所以这里不需要单独安装kvm
8.1 安装qemu组件
yum install -y qemu
8.2 安装libvirt组件
yum install -y libvirt
8.3 启动libvirtd服务
systemctl start libvirtd
8.4 验证8.1-8.3的安装结果
8.4.1 确认kvm安装
查看内核是否支持KVM虚拟化,即查看/dev/kvm和/sys/module/kvm文件是否存在,命令和回显如下:
ll /dev/kvmll /sys/module/kvm
若上述文件存在,说明内核支持KVM虚拟化。若上述文件不存在,则说明系统内核编译时未开启KVM虚拟化,需要更换支持KVM虚拟化的Linux内核。
8.4.2 确认qemu
rpm -qi qemu
8.4.3 确认libvirt
rpm -qi libvirt
查询下是否启动
systemctl status libvirtd
8.5 安装虚拟机管理工具
在这里有教程会说安装 qemu-img、virt-install libvirt virt-manager-common等,其实不需要,只需要执行
yum install virt-manager
然后需要的内容,都会自动更新并安装,输入y,等待安装完成
8.6 启动虚拟系统管理器
有两种启动方式,一种是在shell中执行 virt-manager,就会自己弹出来管理界面。第二种就是在桌面上,找到虚拟系统管理器
9 使用虚拟系统管理器
9.1 打开虚拟系统管理器
通过8.6 的任意一种方式打开,他会长成下图的样子,当然我这里有我创建的虚机
9.2 点击+,或者文件—新建虚拟机
通过点击+,或者文件—新建虚拟机,都可以创建虚机
9.2.1 解决failed to setup uefi 不能为aarch64 找到任何uefi 二进制路径
如果你是arm架构的cpu,而且使用的是openeuler操作系统,会遇到一个错误,就是上述的错误“解决failed to setup uefi 不能为aarch64 找到任何uefi 二进制路径”。而且不能勾选本地安装介质,network install 网络引导等。
这个错误是因为openeuler没有将“edk2.git-aarch64”工具集成,所以需要单独安装。我看了很多教程,有的是更新源,然后yum 去安装,但是我不建议这样做,因为这样可能会导致之后安装不了任何东西,国产操作系统,能不换源,就不换。
我这里是到外网下载的“https://www.kraxel.org/repos/jenkins/edk2/”,如果没有外网,评论我要也可以。下载下图红框中的内容
将其上传到服务器的任意一个目录,执行
rpm -ivh edk2.git-aarch64*.rpm
之后,关闭虚拟系统管理器,重新打开,就可以创建虚拟机了。
这里解决了一个坑,后面还一个。
10 创建虚拟机演示
很多教程在这里就结束了,其实后面还有一个坑,需要解决,我在这里演示一下,方便真正的使用linux arm 虚拟机
10.1 选择本地安装介质,点击前进。
这个意思就是,你把一个iso镜像,传到服务器的一个目录。
这里我建议找一个大一点的目录,分开放iso文件和虚机磁盘的文件。
10.2 选择镜像,点击前进
由于支持arm的镜像有限,尤其是国产cpu的,封锁较为严重
注:这里会发现,你选择镜像后,并没有识别,然后就报错了。
解决方式:所以去掉“automatically ....” 这个选项,在文本框中,输入ge,然后选择generic default(generic)
10.3 选择内存和cpu,点击前进
这一步骤没什么说的,根据自己需要进行设置,但是不能超过宿主机(主机)的最大值
10.4 勾选“选择或创建自定义存储”
点击管理,然后创建个存放虚机磁盘的目录
10.5 开始错误的安装(特别注意)
这一步是个坑,如果你按照默认的内容走,这台虚机就装不上了
比如如果你的选择是上图,你设置完名字,点击完成,然后就开始安装了
那么你的结局就是,卡在“reached target basic system”这里了
10.6 开始正确的安装
现在说下正确的操作
第一,勾选在安装前自定义配置,这个选择是为了让你可以正常安装
第二,点击选择网络,选择主机设备,原模式为桥接,这个选择是为了让你安装虚拟机后,可以让在与宿主机同一网段的机器发现;如果你选择default,那么进去之后,只有这个宿主机能够访问虚机
然后点击完成,进入下图界面
这个时候,会有四个动作
10.6.1 添加设备—输入—通用USB
选择左下角的添加设备—选择输入—选择通用usb—点击完成
10.6.2 添加设备—输入—Evtouch usb 图形数位板
选择左下角的添加设备—选择输入—选择Evtouch usb 图形数位板—点击完成
10.6.3 添加设备—图形—VNC
选择左下角的添加设备—选择图形—选择VNC—点击完成
10.6.4 添加设备—视频—virtio
这一步也是10.5那个错误的步骤,那就是你要加一个视频,这样才能使用图形界面安装操作系统
选择左下角的添加设备—选择视频—选择virtio—点击完成
10.6.5 开始安装
执行完10.6.1-10.6.4后,点击开始安装
然后发现,熟悉的安装操作系统出现了
通过上图可以发现,其实10.5中卡在那,后面已经执行了,但是没有视频流,所以后面无法安装
熟悉的选择语言界面之类的内容出来,之后就是重复第5步和第6步的配置网络
11 结束语
到这里,基于华为taishan200服务器, ARM架构的cpu,实现虚拟化的过程就结束了。如果有需要的同伴,参考该文档就可以。
需要注意的两个坑,就是9.2.1 和 10.5 中这两个地方.