Skip to main content

项目1 搭建系统开发环境

本课程实验基于开源教学操系统pintos,后续实验课内容将围绕pintos展开。实验中,我们将在现有pintos项目代码的基础上,开发完善操作系统功能。 为了能够顺利开发与调试系统,首先需要搭建实验环境。系统开发的操作系统平台为Ubuntu 20.04,实验环境为开发调试pintos需要两类工具集:

  • 32位架构的80x86交叉编译工具链(ToolChain),包含C语言编译器、汇编器、链接器和调试器。

  • X86虚拟机软件QEMU和Bochs。

提示

无特别说明时,实验所在文件夹为用户家目录即/home/whoami,其中whoami为当前用户名。

获取pintos项目代码#

开始实验,你需要从Gitee源代码管理网站克隆或下载pintos的项目源代码,操作如下:

git clone https://gitee.com/ctguhzy/pintos.git

1. 系统开发环境#

本课程实验项目在Ubuntu系统下进行,你可以使用16.04、18.04、或20.04版本。实验课时,你可以将Ubuntu系统安装在 你自已的笔记本电脑上,你可以自己决定是安装成双系统或将Ubuntu安装到虚拟机中。

如果你有云主机,你也可以直接在你的云主机上进行实验操作。

我们也将尽力争取提供学校的云服务器供大家使用。

在后续步骤开始前,我们假设你已经安装好了Ubuntu系统。

2. 编译器工具链(ToolChain)#

自已动手编译开发工具#

事先准备好的osutil项目提供了pintos工具链(Tool Chain)的源码包及编译脚本;另外此项目中还包含bochs虚拟机源码包及其编译脚本。 按下述步骤操作可以获得pintos项目所需的工具链和虚拟机。

  1. 安装依赖包

在执下面操作前,你需要为Ubuntu系统更新国内镜像源

sudo apt update
sudo apt install build-essential
sudo apt install libncurses-dev
sudo apt install libx11-dev
sudo apt install libxrandr-dev
  1. 获取工具链程序源代码 我们已经将工具链程序gcc, gdb等的源代码放在了Gitee上的osutils项目中,直接clone项目即可获得各工具链程序的源代码。
git clone https://gitee.com/ctguhzy/osutils.git
  1. 运行工具链(Tool Chain)编译脚本编译安装工具链(需将whoami换成你的用户名)
cd osutils./toolchain-build.sh --prefix /home/whoami/OSToolChain /home/whoami/OSToolChain
  1. 编译安装Bochs虚拟机
./bochs-2.6.2-build.sh /home/whoami/OSToolChain

验证系统环境#

  1. 系统工具链应该被安装在/home/whoami/OSToolChain文件夹中(whoami为用户名),且i386-elf-gcc的版本需要为6.2.0

  2. 验证前需设置好环境变量PATH

echo "export PATH=/home/whoami/OSToolChain/bin:$PATH" >> ~/.bashrc
  1. 并闭终端并重新打开一个终端,并运行下面的命令验证系统环境。
which i386-elf-gcci386-elf-gcc --version

3. 虚拟机#

QEMU#

QEMU是一款现代而又高效的虚拟机平台,我们在后续项目实验中会使用它。使用如下命令安装QEMU:

sudo apt-get install qemu

Bochs#

  • Bochs比QEMU运行速度慢,但他的模拟精度更高.
  • 除了项目2默认的虚拟用Bochs外,后续项目默认的虚拟机为QEMU. 尽管这样,在项目3至6中,你也可以选用Bochs作为虚拟机。
  • 课程项目使用的Bochs的版本是6.2.0.

4. pintos实用工具#

pintos源码中附带有一些方便易用的工具脚本。它们位于pointos项目代码的src/utils文件夹中。最常用的一个是Perl语言的pintos脚本, 你经常需要使用它来运行和测试你编译的pintos操作系统。

另外,在src/misc/gdb-macros中提供了大量的GDB调试宏,当你调试pintos时,你会发现它非常有用。pintos-gdb是对i386-elf-gdb 的封装,它起动时读取了gdb-macros中的调试宏。

提示

无特别说明时,实验所在文件夹为用户家目录即/home/whoami,其中whoami为当前用户名。

安装pintos实用工具的命令如下:


cd pintos
dest=/home/whoami/OSToolChain/x86_64
mkdir -p $dest/bin
cd src/utils && make
cp backtrace pintos Pintos.pm pintos-gdb pintos-set-cmdline pintos-mkdisk setitimer-helper squish-pty squish-unix $dest/bin
mkdir $dest/misc
cp ../misc/gdb-macros $dest/misc

再次设置环境变量

echo "export PATH=/home/whoami/OSToolChain/x86_64/bin:$PATH" >> ~/.bashrc

5. 其它#

  • 必须安装Perl 5.8.0或更新版本。