0%

NachOS环境搭建

本实验为在Ubuntu20.04搭建Nachos4.1环境

须知:网上很多使用Linux命令时会在命令前加上sudo表示root权限,由于个人习惯,喜欢在一开始就通过su切换到root用户再执行所有命令(目前不知道是否有什么问题)。不知道root密码的参考这篇文章ubuntu的su初始密码设置 - zxiaocheng - 博客园 (cnblogs.com)以下使用的命令均在root用户权限下执行

当遇到命令报错时不要慌,可能只是没有安装

由于本篇是在完成实验后写的,有些截图缺失或者借用他人的,如有侵权,联系我(github:Seanxz401)马上删除

确定当前环境

确定Ubuntu发行版本

1
lsb_release -a

确定Linux是64还是32位

1
dpkg --print-architecture

image-20220418235250163

因为NachOS依赖32位的编译环境,如果你的linux系统是32位,可以跳过32位编译环境搭建。否则,需要在64位的系统中安装32位编译环境。

搭建32位环境

安装Linux基本开放环境

1
apt install build-essential

打开支持32位支持功能

1
dpkg --add-architecture i386

image-20220418235824675

安装c,c++多平台库

1
apt install gcc-multilib g++-multilib

image-20220419000024203

温馨提醒:apt install下载时速度过慢可以考虑给Ubuntu换源

安装32位开发环境

lib32ncurses6

1
apt install lib32ncurses6

可能已经默认安装

lib32z1

1
apt install lib32z1 lib32z1-dev

注意lib32z1和下面的zlib1g中的1是数字1

zlib1g

1
apt install zlib1g zlib1g-dev

有的版本默认已安装

32位c,c++库

1
2
apt install libc6:i386
apt install libstdc++6:i386

低版本gcc编译器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
gcc -v	# 查看gcc版本号,若低于5.3可不必再安装更低的
#若版本较高,则执行以下命令
#修改源文件
vim /etc/apt/sources.list
#在文件末尾添加以下两行:
deb http://dk.archive.ubuntu.com/ubuntu/ xenial main
deb http://dk.archive.ubuntu.com/ubuntu/ xenial universe
#添加完源头后对gcc版本进行更新:
apt update
#安装低版本的c,c++编译器,以4.8为例
apt-get install libgcc-4.8-dev gcc-4.8 gcc-4.8-multilib g++-4.8 g++-4.8-multilib
#改变符号链接gcc和g++指向的实际编译器:
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 40
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 40

是否成功完成上一步的安装和环境搭建,可通过gcc --version查看gcc版本情况。

搭建NachOS环境

解压

将压缩包nachos.tar.gz放在家目录下,比如我的系统用户为sean,则压缩包位于/home/sean目录。

1
tar xvzf nachos.tar.gz

解压后能看到NachOS-4.1文件夹

image-20220419195427268

编译

进入NachOS-4.1/code/build.linux目录(一定要知道cd命令噢)

1
2
3
4
5
6
7
8
#清除以前的编译结果
make clean
rm -rf nachos
#重新编译
make depend
make
#测试,正确显示如下图
./nachos -u

image-20220419195847097

安装交叉编译器

解压

将压缩包mips-decstation.linux-xgcc.tgz放在根目录下。切换到根目录在命令行是cd /,在文件管理器打开如图:image-20220419200251027

image-20220419200346387

1
2
3
4
#命令行移动压缩包
mv mips-decstation.linux-xgcc.tgz /.
#解压
tar xvzf mips-decstation.linux-xgcc.tgz

编译mips平台可执行文件格式转换工具

进入NachOS-4.1/coff2noff目录

1
./configure	#产生Makefile

修改产生的Makefile文件:添加-m32

image-20220419201634465

ps:关于修改文件的图片变幻多端的原因,那就是我一会儿用vscode远程连接(Remote-SSH扩展),一会儿用vim,一会儿用Ubuntu自带记事本。

交叉编译器路径

进入NachOS-4.1/code/test目录,检查Makefile.dep下的交叉编译器路径是否正确。如果在解压mips那一步是在根目录下进行的,就不用改了。image-20220419202325017

检查上图所示的路径下是否确有这些东西,没有的话建议mips重新解压。(!!!根目录!!!)

测试

NachOS-4.1/code/test目录下

1
2
make	#编译
../build.linux/nachos -x add.noff #noff应该是可执行文件?

image-20220419202604293

Over

装这个的时候我才知道Linux的家目录和根目录不一样。