记录Deepin 15.11系统安装运行Egos-2000创新项目的各种问题

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

前段时间有缘看到有人分享了Egos-2000的github创新项目,本着学习的心态下载了该项目,先在Windows7系统里折腾了几天,估计是自己水平有限无法理解,始终是无法在win7系统下运行qemu虚拟机跑egos-2000,各种试后,最终放弃在win7系统下跑。感觉白折腾了几天,但又不死心,我改变思路,发现之前在win7下有安装VM虚拟机,里面正好有个之前学习体验的Deepin15.11系统,正好这个系统核心是Linux,只是年代久远,姑且一试,就发现了各种问题,解决起来也学到了很多东西,给大家分享下,自己也记录下问题。


提示:以下是本篇文章正文内容,下面案例可供参考

一、egos-2000是什么?

项目地址:https://gitcode.com/yhzhang0128/egos-2000
Egos-2000 是一个开源项目,由开发者 yhzhang0128 创建,这个教学操作系统是为了让学生能够全面学习操作系统的原理和内部结构而设计的。它的代码是开源的,意味着学生可以自由地阅读、修改和分享。这样的设计旨在鼓励学生积极参与学习过程,通过实践来加深对操作系统原理的理解。

在这个未来中,学生们将能够利用这个教学操作系统进行各种实验和学习活动。他们可以探索操作系统的内存管理、进程调度、文件系统和网络通信等方面的知识。通过实际编写代码和调试程序,学生们将能够更好地理解操作系统的运行机制和原理。

此外,这个教学操作系统还将提供丰富的学习资源和工具,以支持学生的自主学习和合作学习。学生们可以通过在线论坛、学习社区等方式与其他学生交流心得和经验,共同解决问题和学习新知识。

二、win7下的折腾,已失败告终,qemu始终无法把egos-2000跑起来

1.win7下运行qemu,跑egos-2000失败

图如下:
win7下qemu跑egos-2000失败
F:\Program Files\qemu>qemu-system-riscv32 -M sifive_u -kernel tools/qemu/qemu.elf -nographic
尝试了各种参数,均卡下面不动,估计是自己太菜了。

2.win7下用wm虚拟机运行Deepin15.11系统跑qemu再跑egos-2000

图如下:
最终egos-2000是跑起来了
最终egos-2000是跑起来了,又折腾了几天才好。
期间下载,获取,编译,安装,配置,各种Linux折腾,最终qemu安装好了,也跑起来了egos-2000系统。

3.Deepin15.11编译egos-2000遇到的问题

按照egos-2000的编译说明

cd E G O S t a r − z x v f r i s c v 64 − u n k n o w n − e l f − g c c − 8.3.0 − 2020.04.1 − x 8 6 6 4 − x x x − x x x . t a r . g z e x p o r t P A T H = EGOS tar -zxvf riscv64-unknown-elf-gcc-8.3.0-2020.04.1-x86_64-xxx-xxx.tar.gz export PATH= EGOStarzxvfriscv64unknownelfgcc8.3.02020.04.1x8664xxxxxx.tar.gzexportPATH=PATH:$EGOS/riscv64-unknown…/bin
cd $EGOS/egos-2000
make

在第一个包make的时候就报GCC版本低

因为Deepin15.11系统默认使用的Python是3.0而gcc是6.0,编译第一个包的时候就报错,各种办法升级GCC7.5.0才好,借鉴了https://bbs.deepin.org/post/190244这个文章的部分资料,在清华园里下载的gcc7.5.0才升级好,关键是最后Deepin里有2个gcc,搞了半天才把新安装的设置成默认的,主要是新安装的gcc在Deepin系统里默认放在了/usr/local/bin/gcc目录下

# wget https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-7.5.0/gcc-7.5.0.tar.gz
# tar -xvf gcc-7.5.0.tar.gz
# cd gcc-7.5.0
# ./contrib/download_prerequisites
# cd ..
# mkdir gcc-build-7.5.0
# cd gcc-build-7.5.0
# ../gcc-7.5.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
# make -j4
# make install
#--下面是设置默认新版的GCC
#sudo update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/gcc 80 --slave /usr/bin/g++ g++ /usr/local/bin/g++
#验证GCC版本:
#gcc --version

编译好的GCC7.5.0
一个编译好的GCC7.5.0就有4.3G,以后还是找个搞版本的Linux系统,来的简单,这个Deepin15.11的版本太老了,好多包版本都不够编译qemu
gcc7.5.0

在第一个包make的时候就报Python也是版本低

Python也是同样的问题,版本太多且老,最后升级成了3.7.4
Python
这里借鉴了weixin_39713814博主的内容,链接如下:
https://blog.csdn.net/weixin_39713814/article/details/110399596
一、在安装之前建议先更新深度Deepin 15.11操作系统,同时安装必需的依赖包,这样在编译Python-3.7.4.tgz的过程中就非常顺利了,在系统终端中运行以下命令:
sudo apt update
sudo apt install -y make build-essential libssl-dev zlib1g-dev
sudo apt install -y libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm
sudo apt install -y libncurses5-dev libncursesw5-dev xz-utils tk-dev

二、下载Python-3.7.4.tgz包并编译安装
在终端中运行以下命令下载源码包:
wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz
或到 https://www.python.org/downloads/ 下载:
从压缩包解压Python-3.7.4.tgz源代码:
tar xvf Python-3.7.4.tgz
进入到目录,运行./configure配置构建文件:
cd Python-3.7.4
./configure --enable-optimizations

三、运行以下命令编译安装
make -j8 && sudo make altinstall
sudo make clean
到了这里,安装Python 3.7.4已经全部完成,你可以在终端中执行python3.7了。

用official GNU toolchain的riscv-gnu-toolchain工具2次编译egos-2000

这里问题不大,就是时间太久,我编译了6个小时才把riscv-gnu-toolchain和riscv32-unknown-elf-gcc编译好
在这里插入图片描述

在这里插入图片描述

# Prepare the environment
> sudo apt-get install autoconf automake autotools-dev curl python3 python3-pip libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev ninja-build git cmake libglib2.0-dev
> cd $EGOS
> mkdir riscv32-unknown-elf-gcc
> export PATH=$PATH:$EGOS/riscv32-unknown-elf-gcc/bin

# Compile and install the GNU toolchain
> git clone https://github.com/riscv-collab/riscv-gnu-toolchain.git
> cd riscv-gnu-toolchain
> ./configure --with-arch=rv32imac --with-abi=ilp32 --prefix=$EGOS/riscv32-unknown-elf-gcc
> make
......
# Compile egos-2000 with the official GNU toolchain
> cd $EGOS/egos-2000
> make TOOLCHAIN=GNU

编译qemu的时候glib报错

Program cgcc found: NO
Library m found: YES
Run-time dependency threads found: YES
Library util found: YES
Run-time dependency appleframeworks found: NO (tried framework)
Found pkg-config: YES (/usr/bin/pkg-config) 0.29
Dependency glib-2.0 found: NO found 2.50.3 but need: '>=2.56.0'
Run-time dependency glib-2.0 found: NO 

../meson.build:729:10: ERROR: Dependency lookup for glib-2.0 with method 'pkgconfig' failed: Invalid version, need 'glib-2.0' ['>=2.56.0'] found '2.50.3'.

A full log can be found at /home/ghx/egos/qemu/build/meson-logs/meson-log.txt

ERROR: meson setup failed

主要是QEMU需要Glib 2.56.0或更高版本,但Deepin15.11的系统中安装的Glib版本是2.50.3,这导致了版本不兼容的问题。
更新软件包列表:首先,确保你的软件包列表是最新的。对于Debian或Ubuntu系统,你可以使用以下

试着常规方法解决
命令:
sudo apt-get update
对于其他系统,请使用相应的包管理工具来更新软件包列表。
安装Glib的更新:然后,尝试安装或升级Glib库。在Debian或Ubuntu系统上,你可以使用以下命令来安装最新版本的Glib:
sudo apt-get install libglib2.0-dev
这个命令会安装Glib的开发文件,包括头文件和库文件,这对于编译依赖Glib的软件是必要的。
检查Glib版本:安装或升级完成后,再次检查Glib的版本以确保它满足QEMU的要求:
pkg-config --modversion glib-2.0
发现问题依旧,glib版本无法升级

最后按照JayTan_1992博主提供的办法如下:
1.下载
http://ftp.acc.umu.se/pub/GNOME/sources/glib/
2.配置
./configure

问题 1:

configure: error: Package requirements (libffi >= 3.0.0) were not met: 

No package 'libffi' found 

Consider adjusting the PKG_CONFIG_PATH environment variable if you 
installed software in a non-standard prefix. 

解决方法:
sudo apt-get install libffi-dev

问题 2:
configure: error: *** Could not find libmount

解决方法:
./configure --enable-libmount=no

最后的配置命令,解决问题2,并且指定安装位置:
./configure --enable-libmount=no --prefix=install-prefix
3.编译
make

4.安装
rm -rf /install-prefix/include/glib.h /install-prefix/include/gmodule.h #删除之前安装的头文件
make install # install GLIB

5.简单使用
5.1 查看安装路径下的文件:
在这里插入图片描述
5.2 编写测试程序:
//hello.c
#include <glib.h>
#include <glib/gprintf.h>

int main(int argc, char** argv)
{
g_printf(“hello world!!!\n”);
return 0;
}

5.3 编译
gcc -L/install-prefix/lib -I/install-prefix/include/glib-2.0 -I/install-prefix/lib/glib-2.0/include/ hello.c -o hello -lglib-2.0
如果是默认安装也可以使用
gcc hello.c pkg-config --cflags --libs glib-2.0 -o hello
进行编译。

5.4 执行
在这里插入图片描述
原文链接:https://blog.csdn.net/TA_tan/article/details/79310984

======================================
按照博主的方法,我们只需要下载wgit,配置./xonfigure,编译make,安装make install,这4部就好了,主要是在配置的时候要执行下面这句有关libmount参数的配置

./configure --enable-libmount=no

这句话,不然老提示libmount问题,尝试升级libmount都没有成功,最后直接用这个配置文件的参数就可以正常编译Glib 2.56.0这个版本了

编译qemu的时候Ninja 报错

Subprojects
    berkeley-softfloat-3                         : YES
    berkeley-testfloat-3                         : YES
    dtc                                          : YES
    keycodemapdb                                 : YES
    libvduse                                     : YES
    libvhost-user                                : YES

  User defined options
    Native files                                 : config-meson.cross
    prefix                                       : /usr/local
    werror                                       : true
    docs                                         : disabled


ERROR: Could not detect Ninja v1.8.2 or newer

A full log can be found at /home/ghx/egos/qemu/build/meson-logs/meson-log.txt

ERROR: meson setup failed

从提供的日志中,我们可以看到构建过程中的一个关键错误:ERROR: Could not detect Ninja v1.8.2 or newer。

Ninja是一个小型的构建系统,它通常与Meson这样的构建系统一起使用来执行实际的编译步骤。Meson生成Ninja可以理解的构建文件,然后Ninja执行这些文件来构建项目。

这个错误表明系统中没有安装足够新版本的Ninja。要解决这个问题,需要安装Ninja 1.8.2或更高版本。

根据操作系统,安装Ninja的方法可能会有所不同。以下是在一些常见系统上安装Ninja的方法:

在Ubuntu/Debian上安装Ninja
你可以使用apt来安装Ninja:

sudo apt update
sudo apt install ninja-build

从源代码编译Ninja
如果上述方法都不适用,或者你需要特定版本的Ninja,你可以从Ninja的官方网站下载源代码并手动编译它:

wget https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-1.10.2.tar.gz
tar xzf ninja-1.10.2.tar.gz
cd ninja-1.10.2
./configure.py --bootstrap
sudo cp ninja /usr/local/bin/

请注意,上面的命令是下载和安装Ninja 1.10.2版本的示例。你应该根据你的需要选择合适的版本。

安装完Ninja之后,再次尝试运行meson setup命令,这次它应该能够检测到Ninja并继续构建过程。

最后qemu终于安装好了

> git clone https://github.com/yhzhang0128/qemu.git
> cd qemu
> git checkout stable-8.1-egos
> ./configure --target-list=riscv32-softmmu
> make -j4
# You may also -j8 or other numbers depending on how may cores you have
> make install
> qemu-system-riscv32 --version
QEMU emulator version 8.1.0 (v8.1.0-2-gb03aabdf98)
Copyright (c) 2003-2023 Fabrice Bellard and the QEMU Project developers

qemu-system-riscv32 --version
终于把qemu安装好了

> cd $EGOS
> tar -zxvf riscv-qemu-5.2.0-xxxxxx.tar.gz
> export PATH=$PATH:$EGOS/riscv-qemu-5.2.0-xxxxxx/bin
> cd $EGOS/egos-2000
> make qemu
-------- Simulate on QEMU-RISCV --------
cp build/release/earth.elf tools/qemu/qemu.elf
riscv64-unknown-elf-objcopy --update-section .image=tools/disk.img tools/qemu/qemu.elf
qemu-system-riscv32 -readconfig tools/qemu/sifive-e31.cfg -kernel tools/qemu/qemu.elf -nographic
[CRITICAL] --- Booting on QEMU ---
......

最后终于可以在Deepin15.11系统里运行qemu跑egos-2000系统了

> cd $EGOS
> tar -zxvf riscv-qemu-5.2.0-xxxxxx.tar.gz
> export PATH=$PATH:$EGOS/riscv-qemu-5.2.0-xxxxxx/bin
> cd $EGOS/egos-2000
> make qemu
-------- Simulate on QEMU-RISCV --------
cp build/release/earth.elf tools/qemu/qemu.elf
riscv64-unknown-elf-objcopy --update-section .image=tools/disk.img tools/qemu/qemu.elf
qemu-system-riscv32 -readconfig tools/qemu/sifive-e31.cfg -kernel tools/qemu/qemu.elf -nographic
[CRITICAL] --- Booting on QEMU ---
......

cd $EGOS/egos-2000
make qemu
在这里插入图片描述
按0选择SD,再按0默认模式就进去egos-2000系统了
在这里插入图片描述
可以使用egos-2000提供的几个命令运行试试
在这里插入图片描述
最后按ctrl+a后再按x退出模拟器
在这里插入图片描述


总结

经过几天的摸索终于在win7下用VM模拟机下的Deepin15.11系统里运行qemu模拟器跑起来了egos-2000系统,这个迷你系统后续有待继续研究。

  • 27
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值