hit-oslab 实验环境准备(一)

学习资料:

  1. 李志军 :《操作系统原理,实现与实践》

  2. 中国大学mooc : 李老师本人讲解

  3. 动手实验环节: 蓝桥网course 115

  4. 另外 赵炯的 《linux 内核0.12 完全剖析》

1. 实验环境准备

ubuntu 主机:

下载以下文件

gcc-3.4-ubuntu.tar.gz包含linux-0.11源码,bochs虚拟机等

hit-oslab-linux-20110823.tar.gz编译linux-0.11需要用到的低版本的gcc

1.1 安装配置

  1. 解压linux-0.11 文件:
tar zxvf hit-oslab-linux-20110823.tar.gz
  1. 配置gcc-3.4
cp gcc-3.4-ubuntu.tar.gz /tmp
cd /tmp		
tar zxvf gcc-3.4-ubuntu.tar.gz		
cd gcc-3.4		
sudo ./inst.sh amd64		
  1. 安装as86 汇编器, 链接器 ld86;
sudo apt-get install bin86
  1. C语言编译环境
sudo apt-get install build-essential
  1. 64位系统需要安装32位兼容库
sudo apt-get install libc6-dev-i386
  1. 编译内核
cd oslab/linux-0.11
make

重新编译

make clean & make all

在多处理器的系统上,可以用 -j 参数进行并行编译,加快速度。例如双 CPU 的系统可以;

$ make -j 2

1.2 运行 linux-0.11系统

回到可执行文件所在的目录位置;

ubuntu:~/os/oslab/linux-0.11$ cd ..
~/os/oslab$ ./run
./bochs/bochs-gdb: error while loading shared libraries: libSM.so.6: cannot open shared object file: No such file or directory
  1. 打印出动态链接的配置 ldconfig -p | grep .so.6
$ ldconfig -p | grep libSM.so.6
	libSM.so.6 (libc6,x86-64) => /lib/x86_64-linux-gnu/libSM.so.6
  1. 搜索文件对应的库: apt-file search
:~/os/oslab$ apt-file search libSM.so.6
libsm6: /usr/lib/x86_64-linux-gnu/libSM.so.6
libsm6: /usr/lib/x86_64-linux-gnu/libSM.so.6.0.1
  1. 安装对应缺少的库 apt-get install :i386 代表安装对应的32位的库。
~/os/oslab$ sudo apt-get install libsm6:i386

1.3 再次运行

./run
./bochs/bochs-gdb: error while loading shared libraries: libX11.so.6: cannot open shared object file: No such file or directory
  1. 使用 dpkg-query -S xxxx 搜索对应的库。
dpkg-query -S libX11.so.6
libx11-6:amd64: /usr/lib/x86_64-linux-gnu/libX11.so.6
libx11-6:amd64: /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
ubuntu:~/os/oslab$ ldconfig -p | grep libX11.so.6
	libX11.so.6 (libc6,x86-64) => /lib/x86_64-linux-gnu/libX11.so.6
$ apt-file  search libX11.so.6
libx11-6: /usr/lib/x86_64-linux-gnu/libX11.so.6
libx11-6: /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
nxagent: /usr/lib/x86_64-linux-gnu/nx/X11/libX11.so.6
nxagent: /usr/lib/x86_64-linux-gnu/nx/X11/libX11.so.6.3.0
  1. 得到其对应的包名为libx11-6,安装对应的32位库:
sudo apt-get install libx11-6:i386

1.3 第三次运行,

:~/os/oslab$ ./run
./bochs/bochs-gdb: error while loading shared libraries: libXpm.so.4: cannot open shared object file: No such file or directory

ubuntu:~/os/oslab$ dpkg-query -S libXpm.so.4
libxpm4:amd64: /usr/lib/x86_64-linux-gnu/libXpm.so.4
libxpm4:amd64: /usr/lib/x86_64-linux-gnu/libXpm.so.4.11.0


ubuntu:~/os/oslab$ sudo apt-get install  libxpm4:i386

1.4 多次运行

如果出现 缺少依赖:

sudo apt-get install lib32stdc++6

1.5 FINally:

successed !
在这里插入图片描述

2. 环境与工具介绍

2.1 主要平台

本操作系统实验的硬件环境是 IA-32(x86) 架构的 PC 机,主要软件环境是 Bochs + gcc + 你最喜欢的编辑器 / IDE + 你最喜欢的操作系统 + Linux 0.11 源代码。

实验的基本流程是根据实验要求编写应用程序、修改 Linux 0.11 的源代码,用 gcc 编译后,在 Bochs 的虚拟环境中运行、调试目标代码。

上述实验环境涉及到的软件都是免费且开源的,具有较强的可移植性,可以在多种计算机的多种操作系统上搭建。

为方便实验者,我们在最常见的平台 Ubuntu(最流行的 GNU/Linux 发行版之一)——上制作了 hit-oslab 集成环境,它基本包含了实验所需的所有软件,安装过程非常简单,基本上是直接解压就可以使用。

2.2 x86机器 硬件模拟器 Bochs

Bochs 是一个免费且开放源代码的 IA-32(x86)架构 PC 机模拟器。在它模拟出的环境中可以运行 Linux、DOS 和各种版本的 Windows 等多种操作系统。

而 Bochs 本身具有很高的移植性,可以运行在多种软硬件平台之上,这也是我们选择它做为本书的指定模拟器的主要原因。

Bochs 有虚拟机无可比拟的调试操作系统的能力,所以我们更建议您选用 Bochs。

hit-oslab 已经内置了 bochs,本实验后文假定的缺省环境也是 Bochs。

关于 Bochs 的更详细的介绍请访问它的 主页 及 Bochs 使用手册。

2.3 GCC 编译器

GCC 是和 Linux 一起成长起来的编译器。Linux 最初的版本就是由 GCC 编译的。现在 GCC 也是在自由软件领域应用最广泛的编译器。所以,我们也选择 GCC 做为本书实验的指定编译器。

2.4 GDB 调试器

GDB 调试器是 GCC 编译器的兄弟。做为自由软件领域几乎是唯一的调试器,它秉承了 Unix 类操作系统的一贯风格,采用纯命令行操作,有点儿类似 dos 下的 debug。

关于它的使用方法请看 GDB 使用手册。

我们强烈建议您在 Ubuntu 下做实验。因为有些实验内容涉及到在自己改进的 Linux 0.11 下,运行自己编的应用程序。被改进的功能都是高版本 Linux 内核已经具有的,在其上确认自己编写的应用程序无误后,再用之测试自己改进的 Linux 0.11,可以更有信心些。

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值