前言:夏季学期参与openEuler操作系统内核实验的项目,由于网络上缺乏相关的参考资料,所以走了很多弯路,所以将问题整理后进行分享以供大家避坑。
(成功安装的示例会发布在另一篇文章中,这篇文章的尝试都是直接在windows下使用Virtualbox安装openEuler)
项目环境:
1、VirtualBox-6.1.22(直接在网络上或者软件管家中下载即可)
2、openEuler-20.03-LTS-x86_64-dvd
(安装镜像网站:ISRC - 镜像站)
问题一:不可以安装增强工具
(1)无论是自动挂载; ——不行
(2)还是手动挂载;——还是不行
(3)而这一切都是建立在已经打开Windows的共享,并且建立了共享文件夹,同时虚拟机设置-存储-控制器SATA-勾选"使用主机输入输出(I/O)缓存",也在存储-控制器SATA-点击 “.vdi-勾选"固态驱动器"~总之能尝试的方法几乎都试过,毫无意外!全都失败了。最终的结果都显示VirtualBox功能增强包在openEuler的虚拟机中不可以使用——应该算是目前的漏洞吧。
问题二:openEuler中使用yum命令出现报错
解决方法:(根据码云的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的终端控制
-
在虚拟机上安装系统,并且进行联网,然后我们再配yum;
-
这时虽然能使用,但是文件操作以及代码编辑特别不方便;
-
所以我们用mobaxterm通过SSH进行连接该系统;
-
使用ip addr(ip a)查看相应的ip地址;
-
连接openEuler的IP地址以及端口号需要根据网络模式来决定,打开虚拟机的网络设置,设置端口转发规则:
主机IP: 127.0.0.1 # localhost 主机端口: 10122 # 自己设置,避开特定的那些端口 子系统IP: 10.0.2.15 # 通过“ip addr”获取的IP地址 子系统端口: 22 # SSH服务的默认端口
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7eltNuBG-1627105381719)(C:\Users\1\AppData\Roaming\Typora\typora-user-images\image-20210706165833511.png)]
-
打开自己的mobaxterm,点击session,打开一个会话,点击SSH,在第一个框里输入ip地址,第三个框内输入端口号(之后会验证你的root用户名,密码),正确之后,就建立了会话;
-
下图是结果,文件夹里的东西可以与windows桌面互传,接下来继续实验。
问题三:openEuler虚拟机缺少yum源
没有yum 仓库可以下载qemu-system-aarch64组件的安装依赖包
-
首先查看系统内核情况(很明显内核是通用架构版本:x86_64, 而不是鲲鹏架构:aarch64)
uname -a
-
查看原yum源
cd /etc/yum.repos.d/ cat openEuler_86_64.repo
-
开始配置
vi openEuler_x86_64.repo
推荐华为云的文档:如何配置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源
-
更新yum源
yum makecache
更新之后,查看repolist,已有仓库。
PS:
为什么要配置yum仓库呢?
因为:rpm安装和卸载软件,有各种依赖关系,很难处理。yum的出现,让我们安装软件,变更简单。
它自己会在自己的仓库里找依赖。
但是我们需要配置它的仓库地址。我们需要在 /etc/yum.repos.d这个目录下建一个以repo为后缀的配置文件。
5.没有tar 解压工具
刚配好yum源,刚好测试一下:
问题四:包冲突
由于本身自带一个包,所以导致这些全都安装失败
用命令查看相应的包
rpm -qa | grep zlib
rpm -qa | grep glib2
想移除之后再重新安装
毫无意外,都受保护,不让我移动,所以直接下载最新的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库。两者基本上没有太大的联系。
问题五:方案错误或者理解问题
对于这个问题的认识,起初我认为和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
毫无意外,因为版本太旧,已经不适合现在的运行环境!
make 编译
make install 安装
更是惨不忍睹!
之后再去找新版本的
然而这新版本的对于openEuler 20.03更为滑稽(无configure文件,所以我到其中探寻安全方法)
很显然,不是安装方法有误,就是环境不适合,但从开源的角度来看,环境不适合的可能性更大(多方查找资料,略微佐证)
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
我是存在这些编译器的,
搜寻未果,目前找到的资料大多是国外的(但是并没有人提供解决方法),所以如此安装失败!
这时候,我注意到可能并不是包冲突的问题,我可能忽视了 “libffi.so.6()(64bit)”
于是,我就去寻找这个文件
之后按照之前的方法: 下载——上传——编译——安装,仍无效
经过探究,“Libffi” 库提供了最底层的、与架构相关的、完整的”FFI”,那我肯定是有这个文件的。
find -name "libffi.so*"
安装新版本的库都安装不了,何谈建立软链接来让他们通用(因为glib2需要libffi.so.6)呢?
所以最终我认为此种方法是不可取,应该还是需要在ubuntu 18.04 上搭配 openEluer通用架构,再用qemu工具转为鲲鹏架构!