hit-oslab环境搭建
基于Ubuntu 22.04 LTS
准备工作
官方仓库
将官方的仓库下载到本地
git clone https://github.com/hoverwinter/HIT-OSLab.git
进入目录,后续工作均在HIT-OSLab/Resources/
下完成。
cd HIT-OSLab/Resources/
安装低版本gcc编译器(gcc-3.4),因为Linux-0.11不能在gcc 4.x版本编译
解压包gcc-3.4-ubuntu.tar.gz
,并执行安装脚本
tar zxvf gcc-3.4-ubuntu.tar.gz
cd gcc-3.4
sudo ./inst.sh amd64 # 32位系统将amd64改为i386
若出现如下错误:
正在解压 gcc-3.4 (3.4.6-8ubuntu2) 并覆盖 (3.4.6-8ubuntu2) ...
dpkg: 依赖关系问题使得 gcc-3.4 的配置工作不能继续:
gcc-3.4 依赖于 binutils (>= 2.16.1-3);然而:
未安装软件包 binutils。
dpkg: 处理软件包 gcc-3.4 (--install)时出错:
依赖关系问题 - 仍未被配置
正在处理用于 man-db (2.10.2-1) 的触发器 ...
在处理时有错误发生:
gcc-3.4
使用
sudo apt-get install binutils
安装依赖,会提示有未满足的依赖关系
使用:
sudo apt --fix-broken install
来修复。然后再执行inst.sh
。
安装其他必备工具:
sudo apt-get install build-essential bin86 manpages-dev
64位系统额外安装:
sudo apt-get install libc6-dev-i386 ia32-libs ia32-libs-gtk
安装时报错:
没有可用的软件包 ia32-libs,但是它被其它的软件包引用了。
这可能意味着这个缺失的软件包可能已被废弃,
或者只能在其他发布源中找到
然而下列软件包会取代它:
lib32z1
E: 软件包 ia32-libs 没有可安装候选
E: 无法定位软件包 ia32-libs-gtk
那就安装lib32z1
sudo apt-get install lib32z1
再次运行安装,报错:
E: 无法定位软件包 ia32-libs-gtk
暂时忽略这个包,
运行:
sudo apt-get install libc6-dev-i386
环境搭建
回到~/HIT-OSLab/Resources
目录,解压hit-oslab-linux-20110823.tar.gz
tar zxvf hit-oslab-linux-20110823.tar.gz
cd oslab
编译内核
进入目录linux-0.11
,并编译内核,出现sync
提示即编译成功
cd linux-0.11/
make all
测试运行
返回目录oslab
运行run
./run
报错:
./bochs/bochs-gdb: error while loading shared libraries: libSM.so.6: cannot open shared object file: No such file or directory
问题由libSM.so.6
引发,查看系统中的libSM.so.6
:
ldconfig -p |grep -i libsm.so.6
输出为:
libSM.so.6 (libc6,x86-64) => /lib/x86_64-linux-gnu/libSM.so.6
说明系统中只有64位的 libSM.so.6
,所以需要安装32位的libSM.so.6
sudo apt-get install libsm6:i386
若无法定位软件,执行sudo apt-get upgrade
等待更新完成重试。
libsm6:i386
安装完成后再次查看:
kongdeli@2020212336:~/HIT-OSLab/Resources/oslab$ ldconfig -p |grep -i libsm.so.6
libSM.so.6 (libc6,x86-64) => /lib/x86_64-linux-gnu/libSM.so.6
libSM.so.6 (libc6) => /lib/i386-linux-gnu/libSM.so.6
再次运行run
,
出现libX11.so.6
, libXpm.so.4
缺失,同上,安装32位运行库即可
sudo apt-get install libx11-6:i386
sudo apt-get install libxpm4:i386
./run
参考资料:
error while loading shared libraries: libSM.so.6: cannot open shared object file: No such file or di