Ubuntu20.04+gem5环境搭建记录

项目场景:

实验室台式机win7系统下,重装Ubuntu20.04系统,安装gem5(v21.1.2.0)


问题描述

在3.31完整的配置完全套之后,我成功的在4.1(一个平平无奇的愚人节)把它玩崩了。
由于还没有怎么使用,所以重装一遍是比修复它更明智的选择。
但还是简单说一下崩坏原因:
起因:启动Ubuntu20.04时黑屏,只有光标,但盲目输入密码可以登入系统。
尝试:抱着“有事没事,CSDN一下”的心态,我决定试着查查解决方案修修它。
查到可能存在的两种解决方案:

  1. 修改两个系统文件 /boot/grub/grub.cfg和 /etc/default/grub
  2. 更换显示管理器
    我最终选择了方法2(考虑到不到万不得已,不改系统文件)
    终端输入:
apt-get update # 更新源
apt-get remove gdm3 # 如果没有gdm3,看看是否有gdm
apt-get autoremove # 删除其他与gdm相关的依赖
apt-get install lightdm # 安装lightdm
reboot # 重启系统

原因分析:

崩坏是必然结果,果然,不要试图在晚上头脑不清醒的时候做决定

reboot后,Ubuntu系统启动卡在转圈阶段,按f12后可以看到报错信息(以failed开头)

仔细看,提示信息就是说“找不到显示管理”,然后一直重复找,重复失败。

回想在apt-get install lightdm的时候,好像有报过几个包下载有问题,应该就是其中的依赖包下载出错导致lightdm并不好用,然后gdm3还被卸载了,最终导致系统起不来了。

至此,回想一下之前安装Ubuntu20.04的全过程,出黑屏问题,极大可能是显卡驱动的原因
在我新拿到的这台台式机上,先是无法进入BIOS
尝试把显卡拔了之后,成功f12进入BIOS,并成功清了win7,装了Ubuntu
分析可能是显卡启动顺序不对,先启动显卡导致无法进入BIOS
装了Ubuntu之后,想着这回可以把显卡再插上了,插上之后,是可以正常使用的
但是,出现了在启动后黑屏,只有光标的问题
尝试顺序输入“enter–password-enter”是可以登入的,证明其实黑屏是用户登入界面无法正常显示
综上分析,问题应该出在显卡驱动上


解决方案:

“小事重启,大事重装”

好在还没开展什么工作,我还可以推翻再重来。
于是,在这里重新记录一下整个环境搭建的全过程。

Ubuntu系统部分

http://t.csdn.cn/Qqcmb

CSDN中有很多Ubuntu安装教程可以参考,这里贴一个较为完整的win10+Ubuntu20.04双系统教程。
我在装系统时选择清除了原有系统,所以整体步骤简单了很多,不需要再进行分区,只需要进入BIOS,然后选择USB之后直接安装就好。

gem5部分

https://www.gem5.org/documentation/general_docs/building

这是gem5官网中给出的Building gem5的教程,大致过程就是安装依赖、获取gem5源码、编译运行测试。

http://t.csdn.cn/CGpzm

这篇博客是同学推荐给我的,实际执行的版本,大体上可以顺利编译运行。

问题:

  1. 安装依赖时报错“Ubuntu无法定位软件包”
    如果直接按教程sudo apt install 会有这个报错
    可以通过联网执行sudo apt-get update,对资源进行更新,然后再按教程下载就可以了

  2. 第一次配置gem5时,按照上面同学推荐的csdn执行的,但在build时会报两个问题(由于第一次配置时没有详细记录,这里仅靠回忆来提供一些参考)

首先,是python默认版本的问题,在使用scons构建教程中的文件时,需要python3.6以上的版本,而默认python版本是2.7,我们需要改默认为系统中的python3.8,具体可以使用 update-alternatives 来为整个系统更改 Python 版本

// 报错信息
Checking python version... 2.7.18
Error:embedded python libarary 3.6 or newer required,found 2.7.18.

在更改了默认python版本为3.8.10后,再执行scons进行构建时,还是会报python版本的错误,但此时系统默认python版本已经确认没问题了
经过请教同学,最后发现是需要更新一下pip3,然后再scons构建时就可以成功编译了

  1. 第二次配置gem5,想到之前出的python版本的一系列问题,再加上参考了gem5官网中给出的Building gem5的教程,发现相比csdn上的教程,在依赖包的下载上有出入,而且体现在python上,所以这次决定综合一下这两个教程,把这些依赖包全部下载再scons,这次没有报第一次时的error,取而代之的是三个warning

尚未解决
但是看一下warning的具体内容,大致就是缺了些库,既然不报错,那就继续让他编译

Ubuntu20.04+gem5环境搭建记录_第1张图片

但是按照gem5官网中的教程,多安装几个依赖包之后,关于第一次安装中的Python版本的一系列问题没有了,证明还是最后补几个有关于Python的包是很必要的

Ubuntu20.04+gem5环境搭建记录_第2张图片

模型编译完成后,输出如下统计信息,就是上面的3个warning

// 具体输出
scons: done building targets.
*** Summary of Warnings ***
Warning: Header file <png.h> not found.
         This host has no libpng library.
         Disabling support for PNG framebuffers.
Warning: Deprecated namespaces are not supported by this compiler.
         Please make sure to check the mailing list for deprecation
         announcements.
Warning: Couldn't find HDF5 C++ libraries. Disabling HDF5 support.

然后运行测试程序:./build/X86/gem5.opt ./configs/example/se.py -c tests/test-progs/hello/bin/x86/linux/hello
这是gem5自带的测试文件,使用刚刚编译好的x86模型,在se模式下运行这个文件,可以正确输出Hello world!

Ubuntu20.04+gem5环境搭建记录_第3张图片

在这里简单记录一下./build/X86/gem5.opt ./configs/example/se.py -c tests/test-progs/hello/bin/x86/linux/hello的含义

gem5 可以在两种不同的模式下运行,称为“系统调用仿真”和“完整系统”或se和fs模式。
在fs模式下,gem5模拟整个硬件系统并运行未修改的内核(完整系统模式类似于运行虚拟机)。
相对的,se仿真模式并不仿真系统中的所有设备,而是专注于仿真 CPU 和内存系统。
se仿真模式更容易配置,因为不需要实例化真实系统中所需的所有硬件设备。但是,se仿真模式仅仿真 Linux 系统调用,因此仅对用户模式代码进行建模。

总结:当不需要对操作系统进行建模,并且需要额外的性能,则应该使用 SE 模式。当需要对系统进行高保真建模,应该使用fs模式。(理解:fs模式仿真更加细化)

通过下面的命令可以查看se模式和fs模式下的各种可用选项
./build/X86/gem5.opt ./configs/example/se.py -h
./build/X86/gem5.opt ./configs/example/fs.py -h
例:在se模式下执行helloworld
./build/X86/gem5.opt ./configs/example/se.py -c ./gem5_test/helloworld

!!!完结撒花!!!
整个配置过程可以说是一波三折…
简单总结一下:“不要怕失败,大不了重来”
接下来,进入到正式的gem5学习中叭!!!

你可能感兴趣的:(环境配置,ubuntu)