linux0.11+Bochs环境搭建和使用

Posted 特立独行的猫a

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux0.11+Bochs环境搭建和使用相关的知识,希望对你有一定的参考价值。

Linux 系统的创始人在一篇新闻组投稿上所说的,要理解一个软件系统的真正运行机制,一定 要阅读其源代码(RTFSC – Read The Fucking Source Code)。系统本身是一个完整的整体,具有很多看似 不重要的细节存在,但是若忽略这些细节,就会对整个系统的理解带来困难,并且不能真正了解一个实 际系统的实现方法和手段。

目前的 Linux 内核源代码量都在几百万行的数量上,2.6.0 版内核代码行数约为 592 万行,而最近的 4.20 版内核代码行数已超过 2500 万行。所以对这些版本进行阅读几乎不可能。而 0.11 版内 核不超过 2 万行代码量,因此完全可以在一本书中解释和注释清楚。麻雀虽小,五脏俱全。

《Linux 内核 0.11 完全注释》最新版本5.0.1下载地址:

http://www.oldlinux.org/download/CLK-5.0.1-WithCover.pdf

 环境准备

linux0.11环境下载

git clone https://github.com/Wangzhike/HIT-Linux-0.11.git

不想克隆的,可用去GitHub - Wangzhike/HIT-Linux-0.11: 网易云课堂选的操作系统课实验的代码及相关记录下载。 

gcc-3.4安装

首先下载gcc-3.4,地址:http://old-releases.ubuntu.com/ubuntu/pool/main/g/gcc-3.4/

下载三个文件,分别是

cpp-3.4_3.4.6-6ubuntu2_amd64.deb

gcc-3.4-base_3.4.6-6ubuntu2_amd64.deb

gcc-3.4_3.4.6-6ubuntu2_amd64.deb

也可打开想要保存到的文件夹后,使用下面的命令直接下载

wget http://old-releases.ubuntu.com/ubuntu/pool/main/g/gcc-3.4/cpp-3.4_3.4.6-6ubuntu2_amd64.deb
wget http://old-releases.ubuntu.com/ubuntu/pool/main/g/gcc-3.4/gcc-3.4-base_3.4.6-6ubuntu2_amd64.deb
wget http://old-releases.ubuntu.com/ubuntu/pool/main/g/gcc-3.4/gcc-3.4_3.4.6-6ubuntu2_amd64.deb

下载完成后,安装

sudo dpkg -i cpp-3.4_3.4.6-6ubuntu2_amd64.deb gcc-3.4-base_3.4.6-6ubuntu2_amd64.deb gcc-3.4_3.4.6-6ubuntu2_amd64.deb

此时gcc-3.4已安装完成,但仍缺少相关类库做支撑,运行

sudo apt install gcc-multilib

此外编译bootsect和setup需要使用as86和ld86用于编译链接,在bin86中就有提供

sudo apt install bin86

倘若仍无法运行,追加安装

sudo apt install lib32z1 libsm-dev:i386 libx11-6:i386 libxpm4:i386 libstdc++6:i386

编译Linux 0.11

cd ~/oslab/linux-0.11
make

此时会生成镜像文件Image

运行

cd ~/oslab
./run 

这里的run也是一个脚本,其最后一行的命令是启动Bochs

$OSLAB_PATH/bochs/bochs-gdb -q -f $OSLAB_PATH/bochs/bochsrc.bxrc

调试

汇编语言级别

./dbg-asm

通过Bochs进行汇编语言级别调试。

C语言级别

先运行

./dbg-c

再开一个终端,运行

./rungdb 

则可以通过gdb进行C语言级别调试。

引用

https://jiaming.blog.csdn.net/article/details/119921424

Oldlinux.org -- Linux plinux - Early Linux Kernel Analysis and Comments

阿里云ubuntu系统配置linux-0.11(哈工大 李治军)实验环境搭建-阿里云开发者社区

linux0.11-文件系统_~怎么回事啊~的博客-CSDN博客_linux0.11根文件系统详解

GitHub - hoverwinter/HIT-OSLab: S - 哈工大《操作系统》实验

Ubuntu 20.04(64位)如何配置gcc-3.4用于编译linux-0.11 - 知乎

Oldlinux.org -- Linux plinux - Early Linux Kernel Analysis and Comments

Linux内核对比学习系列(3)——进程调度_DaHuangXiao的博客-CSDN博客_linux0.12比0.11

浅析Linux中的进程调度 - jack.chen - 博客园

Linux 0.11 实验环境搭建_kunkliu的博客-CSDN博客_linux0.11实验环境

以上是关于linux0.11+Bochs环境搭建和使用的主要内容,如果未能解决你的问题,请参考以下文章

bochs运行早期linux0.11和linux0.98内核

Ubuntu14.04下搭建Bochs仿真平台,同时用该平台安装Linux0.11内核

Ubuntu安装bochs运行Linux 0.11

bochs调试linux内核学习4 - bochs配置文件的$BXSHARE变量bochs的System BIOS must end at 0xfffff错误运行内核0.00版本

在linux搭建操作系统实战的学习环境

搭建 Linux kernal0.11 环境