在阿里云Ubuntu 14.04上搞定哈工大Linux-0.11实验环境:从依赖报错到Bochs成功启动的完整记录

📅 2026/7/3 10:41:48 👁️ 阅读次数 📝 编程学习
在阿里云Ubuntu 14.04上搞定哈工大Linux-0.11实验环境:从依赖报错到Bochs成功启动的完整记录

阿里云Ubuntu 14.04搭建Linux-0.11实验环境全攻略:从依赖报错到Bochs完美运行

在操作系统学习过程中,动手实践是理解内核原理的最佳途径。哈工大李治军老师的Linux-0.11实验环境为学习者提供了绝佳的实践平台,但在64位Ubuntu系统上搭建这一环境时,32位兼容性问题常常成为拦路虎。本文将带你一步步解决这些棘手的依赖问题,最终让Bochs虚拟机成功运行起来。

1. 环境准备与基础配置

搭建Linux-0.11实验环境需要一些基础工具和库文件的支持。首先确保你的阿里云Ubuntu 14.04系统已经更新到最新状态:

sudo apt-get update sudo apt-get upgrade -y

接下来安装必要的编译工具链,这是后续所有工作的基础:

sudo apt-get install build-essential bin86

对于64位系统,32位兼容库是必不可少的。许多初学者容易忽略这一点,导致后续出现各种奇怪的错误:

sudo apt-get install libc6-dev-i386

提示:在Ubuntu 14.04中,libc6-dev-i386包提供了32位开发所需的C库支持,这是运行老版本32位程序的关键。

2. 实验材料获取与解压

从哈工大课程网站获取实验材料包后,我们需要正确解压并组织文件结构:

tar zxvf hit-oslab-linux-20110823.tar.gz cd oslab

对于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

安装完成后,验证gcc版本是否正确:

gcc-3.4 --version

3. 常见依赖错误分析与解决

3.1 libSM.so.6缺失问题

当首次运行./run命令时,最常见的错误就是缺少32位的libSM.so.6库:

./bochs/bochs-gdb: error while loading shared libraries: libSM.so.6: cannot open shared object file: No such file or directory

排查步骤:

  1. 首先检查系统中是否存在该库的64位版本:

    ldconfig -p | grep libSM.so.6
  2. 确定对应的软件包名称:

    apt-file search libSM.so.6
  3. 安装32位版本:

    sudo apt-get install libsm6:i386

3.2 libX11.so.6缺失问题

解决完第一个依赖问题后,通常会遇到第二个障碍:

error while loading shared libraries: libX11.so.6: cannot open shared object file: No such file or directory

这次我们可以使用dpkg-query工具更精确地定位问题:

dpkg-query -S libX11.so.6

输出结果会显示库文件对应的软件包,然后安装对应的32位版本:

sudo apt-get install libx11-6:i386

3.3 其他常见依赖问题

类似的依赖问题可能还包括:

  • libXpm.so.4缺失:

    sudo apt-get install libxpm4:i386
  • lib32stdc++6缺失:

    sudo apt-get install lib32stdc++6

下表总结了常见的依赖问题及解决方案:

错误信息缺失库解决方案
libSM.so.632位SM库sudo apt-get install libsm6:i386
libX11.so.632位X11库sudo apt-get install libx11-6:i386
libXpm.so.432位Xpm库sudo apt-get install libxpm4:i386
其他C++相关32位stdc++sudo apt-get install lib32stdc++6

4. 系统依赖修复与最终测试

在安装完所有必要的32位库后,建议运行以下命令修复可能的依赖关系问题:

sudo apt-get -f install

最后,编译Linux-0.11内核:

cd linux-0.11 make

运行测试:

./run

如果一切顺利,你将看到Bochs虚拟机成功启动,并运行Linux-0.11系统。在实际操作中,可能会遇到一些细微差别,这时候查看具体的错误信息并针对性解决是关键。

5. 经验分享与实用技巧

经过多次环境搭建实践,我总结出以下几点经验:

  1. 保持耐心:依赖问题看似复杂,但通常有固定解决模式。每个错误信息都提供了关键线索。

  2. 工具熟练度:掌握ldconfigapt-filedpkg-query等工具能极大提高排查效率。

  3. 文档记录:建议将每次遇到的问题和解决方案记录下来,形成自己的知识库。

  4. 环境隔离:考虑使用Docker容器来隔离实验环境,避免污染主系统。

# 示例:使用Docker创建隔离环境 docker run -it ubuntu:14.04 /bin/bash
  1. 备份意识:在关键步骤前创建系统快照或备份重要文件,以防操作失误导致需要重头再来。