x86的openEuler使用qemu搭建ARM64架构问题汇总

前言:夏季学期参与openEuler操作系统内核实验的项目,由于网络上缺乏相关的参考资料,所以走了很多弯路,所以将问题整理后进行分享以供大家避坑。

(成功安装的示例会发布在另一篇文章中,这篇文章的尝试都是直接在windows下使用Virtualbox安装openEuler

项目环境:

1、VirtualBox-6.1.22(直接在网络上或者软件管家中下载即可)

2、openEuler-20.03-LTS-x86_64-dvd
(安装镜像网站:ISRC - 镜像站

问题一:不可以安装增强工具

(1)无论是自动挂载; ——不行

image-20210706155411577

image-20210706154458377

(2)还是手动挂载;——还是不行

image-20210706155638063

(3)而这一切都是建立在已经打开Windows的共享,并且建立了共享文件夹,同时虚拟机设置-存储-控制器SATA-勾选"使用主机输入输出(I/O)缓存",也在存储-控制器SATA-点击 “.vdi-勾选"固态驱动器"~总之能尝试的方法几乎都试过,毫无意外!全都失败了。最终的结果都显示VirtualBox功能增强包在openEuler的虚拟机中不可以使用——应该算是目前的漏洞吧

image-20210706155919985

image-20210706160905755

问题二:openEuler中使用yum命令出现报错

image-20210706163138207

解决方法:(根据码云的yum源)

vi /etc/yum.repos.dopenEuler_x86_64.repo

然后将下列内容填写到其中即可

#generic-repos is licensed under the Mulan PSL v2.
#You can use this software according to the terms and conditions of the Mulan PSL v2.
#You may obtain a copy of Mulan PSL v2 at:
#    http://license.coscl.org.cn/MulanPSL2
#THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
#IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
#PURPOSE.
#See the Mulan PSL v2 for more details.

[OS]
name=OS
baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/OS/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/OS/$basearch/RPM-GPG-KEY-openEuler

[everything]
name=everything
baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/everything/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/everything/$basearch/RPM-GPG-KEY-openEuler

[EPOL]
name=EPOL
baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/EPOL/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/OS/$basearch/RPM-GPG-KEY-openEuler

[debuginfo]
name=debuginfo
baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/debuginfo/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/debuginfo/$basearch/RPM-GPG-KEY-openEuler

[source]
name=source
baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/source/
enabled=1
gpgcheck=1
gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/source/RPM-GPG-KEY-openEuler

[update]
name=update
baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/update/$basearch/
enabled=0
gpgcheck=1
gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/OS/$basearch/RPM-GPG-KEY-openEuler

但是问题也来了如果不能安装增强功能,那也就意味着不仅不能拥有鼠标集成功能(即需要 Right Ctrl键来实现鼠标到Win10 与 openEuler的切换),同时也不能实现指令的“复制-粘贴”功能,这对于命令行输入的界面着实有点难受。

两种考虑:

(1)为openEuler配置图形化界面,但是对中文字体的解码很不友好,而且间距什么的调整略微麻烦(同时,还需要自添加软件源,因为openEuler 20.03没有自带软件源);

详见

https://blog.csdn.net/weixin_43873801/article/details/108889967

(2)openEuler的终端控制

  1. 在虚拟机上安装系统,并且进行联网,然后我们再配yum;

  2. 这时虽然能使用,但是文件操作以及代码编辑特别不方便;

  3. 所以我们用mobaxterm通过SSH进行连接该系统;

  4. 使用ip addr(ip a)查看相应的ip地址;

    image-20210706165052768

  5. 连接openEuler的IP地址以及端口号需要根据网络模式来决定,打开虚拟机的网络设置,设置端口转发规则:

    主机IP:    127.0.0.1    # localhost
    主机端口:  10122         # 自己设置,避开特定的那些端口
    子系统IP:  10.0.2.15    # 通过“ip addr”获取的IP地址
    子系统端口: 22           # SSH服务的默认端口
    

    image-20210206143915209

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7eltNuBG-1627105381719)(C:\Users\1\AppData\Roaming\Typora\typora-user-images\image-20210706165833511.png)]

  6. 打开自己的mobaxterm,点击session,打开一个会话,点击SSH,在第一个框里输入ip地址,第三个框内输入端口号(之后会验证你的root用户名,密码),正确之后,就建立了会话;

    image-20210706165241085

  7. 下图是结果,文件夹里的东西可以与windows桌面互传,接下来继续实验。

image-20210706165925882

问题三:openEuler虚拟机缺少yum源

没有yum 仓库可以下载qemu-system-aarch64组件的安装依赖包

image-20210706182349842

  1. 首先查看系统内核情况(很明显内核是通用架构版本:x86_64, 而不是鲲鹏架构:aarch64)

    uname -a
    

    image-20210706180650004

  2. 查看原yum源

    cd /etc/yum.repos.d/
    
    cat openEuler_86_64.repo
    

    image-20210706181425012

  3. 开始配置

    vi openEuler_x86_64.repo
    

    image-20210706181818039

    推荐华为云的文档:如何配置YUM源?_云存储网关 CSG_常见问题_操作类_华为云 (huaweicloud.com)

    将如下代码加入进去:

    [base]
    name=EulerOS-2.0SP3 base
    baseurl=http://repo.huaweicloud.com/euler/2.3/os/x86_64/
    enabled=1
    gpgcheck=1
    gpgkey=http://repo.huaweicloud.com/euler/2.3/os/RPM-GPG-KEY-EulerOS
    

    配置完记得查看yum源

    image-20210706182020523

  4. 更新yum源

    yum makecache
    

    image-20210706182053875

    更新之后,查看repolist,已有仓库。

    image-20210706182155109

PS:

为什么要配置yum仓库呢?
因为:rpm安装和卸载软件,有各种依赖关系,很难处理。yum的出现,让我们安装软件,变更简单。
它自己会在自己的仓库里找依赖。
但是我们需要配置它的仓库地址。我们需要在 /etc/yum.repos.d这个目录下建一个以repo为后缀的配置文件。

5.没有tar 解压工具

image-20210706183500015

刚配好yum源,刚好测试一下:

image-20210706183521172

问题四:包冲突

image-20210707091619125

由于本身自带一个包,所以导致这些全都安装失败

image-20210707092248087

用命令查看相应的包

rpm -qa | grep zlib
rpm -qa | grep glib2

image-20210707092440861

image-20210707092526585

想移除之后再重新安装

image-20210707092556063

毫无意外,都受保护,不让我移动,所以直接下载最新的zlib源码包,然后编译安装

wget http://zlib.net/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make
make install

GLib是Gtk +库和Gnome的基础。GLib可以在多个平台下使用,比如Linux、Unix、Windows等。GLib为许多标准的、常用的C语言结构提供了相应的替代物。
GLib中定义了好多有用的数据结构,如单(双)向连表,可变长的数组等,线程池等有用的东西。使用GLib库的程序都应该包含GLib的头文件glib.h。

Glibc 是提供系统调用和基本函数的 C 库,比如open, malloc, printf等等。所有动态连接的程序都要用到它。是GNU开发的C库。

相同点:
两者都是供调用的类库。
不同点:
glib是GTK+调用的类库。glibc中定义了好多有用的数据结构,如单(双)向连表,可变长的数组等。
glibc是GNU开发的C库。两者基本上没有太大的联系。

问题五:方案错误或者理解问题

image-20210708145523809

对于这个问题的认识,起初我认为和zlib包一样是包冲突

于是,我不再采用yum仓库安装的方法,而是从资源站点找到glib-2.XX.X版本的tar.gz文件进行上传压缩后进行编译

tar.gz 文件解压
    tar -zxvf glib-2.22.5.tar.gz
tar.xz 文件解压
    tar -xvf glib-2.60.6.tar.xz

image-20210708150258033

毫无意外,因为版本太旧,已经不适合现在的运行环境!

image-20210708163922312

make  编译
make install 安装

更是惨不忍睹!

1

2

之后再去找新版本的

3

4

然而这新版本的对于openEuler 20.03更为滑稽(无configure文件,所以我到其中探寻安全方法)

5

很显然,不是安装方法有误,就是环境不适合,但从开源的角度来看,环境不适合的可能性更大(多方查找资料,略微佐证)

Meson(The Meson Build System)是个项目构建系统,如Makefile,automake,CMake…。Meson是一个Python实现的开源项目,其思想是,开发人员花费在构建调试上的每一秒都是浪费,同样等待构建过程直到真正开始编译都是不值得的。

因此,Meson的设计目的是在用户友好的同时不损害性能,Meson提供客户语言(custom language)作为主要工具,用户可以使用它完成项目构建的描述。客户语言的设计目标是简单(simplicity)、清晰(clarity)、简洁(conciseness),其中很多灵感来源于Python语言。

Ninja是一个轻量的构建系统,主要关注构建的速度。它与其他构建系统的区别主要在于两个方面:1. Ninja被设计成需要一个输入文件的形式,这个输入文件则由高级别的构建系统生成;2. Ninja被设计成尽可能快速执行构建的工具。

meson构建项目是可以的:Meson构建系统(一)_u010074726的博客-CSDN博客 ,但是!

meson _build
meson setup build

6

我是存在这些编译器的,

7

搜寻未果,目前找到的资料大多是国外的(但是并没有人提供解决方法),所以如此安装失败!

这时候,我注意到可能并不是包冲突的问题,我可能忽视了 “libffi.so.6()(64bit)”

8

于是,我就去寻找这个文件

9

之后按照之前的方法: 下载——上传——编译——安装,仍无效

image-20210708214930239

经过探究,“Libffi” 库提供了最底层的、与架构相关的、完整的”FFI”,那我肯定是有这个文件的。

find  -name "libffi.so*"

image-20210708215208088

安装新版本的库都安装不了,何谈建立软链接来让他们通用(因为glib2需要libffi.so.6)呢?

所以最终我认为此种方法是不可取,应该还是需要在ubuntu 18.04 上搭配 openEluer通用架构,再用qemu工具转为鲲鹏架构!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值