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

简介: 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实验环境

相关文章
|
3月前
|
Ubuntu Linux 开发工具
Linux下的IMX6ULL——环境搭建与软件安装(一)
Linux下的IMX6ULL——环境搭建与软件安装(一)
76 0
Linux下的IMX6ULL——环境搭建与软件安装(一)
|
6月前
|
关系型数据库 MySQL Linux
linux环境搭建mysql5.7总结
linux环境搭建mysql5.7总结
65 0
|
5月前
|
SQL 数据可视化 Linux
ClickHouse【环境搭建 03】Linux环境离线安装 clickhouse-22.3.3.44 配置参数说明+可视化界面使用(离线安装文件分享百度云盘)
ClickHouse【环境搭建 03】Linux环境离线安装 clickhouse-22.3.3.44 配置参数说明+可视化界面使用(离线安装文件分享百度云盘)
124 0
|
2月前
|
Java Linux
Flume【环境搭建 01】CentOS Linux release 7.5 安装配置 apache-flume-1.9.0 并验证
【2月更文挑战第16天】Flume【环境搭建 01】CentOS Linux release 7.5 安装配置 apache-flume-1.9.0 并验证
39 0
|
6月前
|
Ubuntu Linux 网络安全
1. Linux环境搭建及创建共享文件的方法
1. Linux环境搭建及创建共享文件的方法
163 1
|
2月前
|
网络协议 Ubuntu Linux
如何在Linux环境搭建本地SVN服务器并结合cpolar实现公网访问
如何在Linux环境搭建本地SVN服务器并结合cpolar实现公网访问
|
3月前
|
Java Linux 网络安全
【极数系列】Flink环境搭建&Linux版本 (03)
【极数系列】Flink环境搭建&Linux版本 (03)
|
5月前
|
Unix Linux 程序员
ClickHouse【环境搭建 01】Linux环境单机版在线安装 Code:210.DB::NetException + Init script is already running 问题处理
ClickHouse【环境搭建 01】Linux环境单机版在线安装 Code:210.DB::NetException + Init script is already running 问题处理
81 0
|
5月前
|
Java Linux Go
Golang环境搭建指南(Windows和linux)
Golang环境搭建指南(Windows和linux)
41 0
|
5月前
|
Linux 数据安全/隐私保护 虚拟化
Linux 环境搭建以及xshell远程连接
Linux 环境搭建以及xshell远程连接