写在前面
实验环境的搭建(HIT操作系统课程的实验环境)真的是历经千辛万苦,光Ubuntu18.04我就重装了无数遍,配置了无数遍(还是我太蠢...)
先截个成功的图
git clone https://github.com/Wangzhike/HIT-Linux-0.11.git ~/hit-oslab
如果没有git,则先安装git
sudo apt-get install git
或者去https://github.com/DeathKing/hit-oslab直接下载。
进入文件夹hit-oslab,运行脚本setup.sh
cd hit-oslab
./setup.sh
本脚本会将实验环境安装在当前登录用户的家目录下,文件名为oslab
,即我们的实验目录是~/oslab
之所以让大家使用这个脚本,是因为它会帮助大家安装很多软件包,比如
gcc-3.4
bin86
libc6-dev-i386
build-essential
libsm6:i386
libx11-6:i386
libxpm4:i386
(如果大家是和我一样的Ubuntu18.04版本,则有可能出现一些问题,后面会讲如何解决)
cd ~/oslab/linux-0.11
make #在linux-0.11目录下编译
cd ~/oslab
./run #在oslab目录下运行
如果大家可以运行成功(如第一个图,则可以直接使用,不需要多余配置。)
若出现如下图所示的情况,则说明仍然缺少文件
4.1因为直接run上述的linux-0.11系统会出现上图的黑框,没有任何错误信息,所以我重新在课程资源处(链接: https://pan.baidu.com/s/1rP0Bc1_DUVCL-7_g_YJHeQ 提取码: u3nb )下载了hit-oslab
4.2在新建的文件夹下解压,编译,运行。
tar zxvf hit-oslab-linux-20110823.tar.gz
cd oslab/linux-0.11
make
cd ~/oslab
./run
4.3会出现错误
./bochs/bochs-gdb: error while loading shared libraries: libSM.so.6: cannot open shared object file: No such file or directory
4.4打印动态链接配置
ldconfig -p | grep libSM.so.6
#下面是打印结果
libSM.so.6 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libSM.so.6
4.5我们需要的是32位的,搜索库的对应名称
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
4.6如果没有安装apt-file,则
sudo apt install apt-file
4.7得到其对应的包名为libsm6,安装对应的32位库
sudo apt-get install libsm6:i386
4.8再次尝试,出现错误
./bochs/bochs-gdb: error while loading shared libraries: libX11.so.6: cannot open shared object file: No such file or directory
4.9同样可以按照步骤11来解决,不过这里用了另一个工具
dpkg-query -S libX11.so.6
#下面是打印结果
libx11-6:i386: /usr/lib/i386-linux-gnu/libX11.so.6.3.0
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
libx11-6:i386: /usr/lib/i386-linux-gnu/libX11.so.6
4.10得到其对应的包名为libx11-6,安装对应的32位库
sudo apt-get install libx11-6:i386
4.11再次尝试,出现错误
./bochs/bochs-gdb: error while loading shared libraries: libXpm.so.4: cannot open shared object file: No such file or directory
4.12继续使用步骤4.9的工具
dpkg-query -S libXpm.so.4
#下面是打印结果
libxpm4:i386: /usr/lib/i386-linux-gnu/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
libxpm4:i386: /usr/lib/i386-linux-gnu/libXpm.so.4.11.0
4.13得到其对应的包名为libxpm4,安装对应的32位库
sudo apt-get install libxpm4:i386
4.14再次尝试,运行成功!如开篇第一张图。
本文参考
https://github.com/DeathKing/hit-oslab
https://github.com/Wangzhike/HIT-Linux-0.11/blob/master/0-prepEnv/%E5%87%86%E5%A4%87%E5%AE%89%E8%A3%85%E7%8E%AF%E5%A2%83.md
非常感谢前人总结的各种解决办法,我这里只是做了一个总结,希望后来者能更顺利的配置好实验环境。