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环境搭建和使用相关推荐

  1. Linux 0.11 实验环境搭建与调试

    缘起 之前我写过一篇博文:Linux 0.11 实验环境搭建 本以为有了这个环境(gcc-3.4 & gdb-6.8),就可以调试无忧了.谁知遇到了以下问题: (1)用 gdb 调试 main ...

  2. Linux 0.11 实验环境搭建

    如果想学习Linux 0.11,实验环境是必不可少的.最好是能编译,能运行,能调试. 如今大家都是用64位的Linux操作系统,而且是高版本的GCC(4.0以上),所以环境搭建是个难题.要么就是编译后 ...

  3. Linux-0.00运行环境搭建【转】

    转自:http://blog.csdn.net/rosetta/article/details/8933240 这里的Linux-0.00由Linus Torvalds写的Linux最初版本,只是打印 ...

  4. QT5.11 + VS2017 环境搭建

    因为一系列原因没有文档国内开发搭建环境全靠自己摸索,网上七零八散不完整,遂写此文,方便需要的人: 说明1:visual studio 2017已经全新升级,如果只需要c和c++开发环境在线下载只需要1 ...

  5. linux0.11学习笔记-技术铺垫-简单AB任务切换程序(1)-实现一个简单的bootloader

    直接看代码,即使已经理解了代码,但是还是会有种没有学到手的感觉.真正的掌握来自实践,来自己动手做出来."简单AB任务切换程序"系列文章的目的是,在bochs下,实践出简单AB两个任 ...

  6. Linux0.11学习研究

    Linux0.11 环境搭建: 我参考的是这个博客:http://blog.csdn.net/u014688145/article/details/50575588 下载的文件:点击打开链接http: ...

  7. main() 函数解析(一)——Linux-0.11 剖析笔记(六)

    文章目录 1. 宏定义`_syscall0` 2. `setup.s`读取的参数 3. 读取CMOS实时时钟信息 3.1 `outb_p(value,port)` 3.2 `inb_p(port)` ...

  8. main函数解析(一)——Linux-0.11 学习笔记(五)

    main()函数解析(一)--Linux-0.11 学习笔记(五) 经过了前面的各种铺垫,终于来到了main函数.这篇博客的任务是把init/main.c讲清楚.由于牵扯到很多的函数调用,要想一次就说 ...

  9. linux看火狐的安装目录,linux下firefox+geckodriver环境搭建

    2.将Firefox-latest-x86_64.tar.bz2拷贝到linux环境下 3.执行 tar -xjvf Firefox-latest-x86_64.tar.bz2 解压安装文件,.删除系 ...

最新文章

  1. 1小时学会:最简单的iOS直播推流(八)h264/aac 软编码
  2. python代码案例详解-Python综合应用名片管理系统案例详解
  3. 092_元素的几种宽度和高度
  4. OpenGL延迟着色之一
  5. Slave_SQL_Running:No的两种解决办法
  6. OpenStack组件
  7. 任意阶魔方阵matlab程序,【精品】任意阶魔方阵算法(c语言)
  8. 《零基础》MySQL 数据类型(八)
  9. OpenSessionInViewFilter 对 lazy 加载 的配置及作用
  10. 杭电1713相遇周期
  11. Android状态栏语言,Android实现3种Notification(状态栏通知)
  12. docker启动出现 hardware assisted virtual
  13. 什么是网络通信协议?(七层功能介绍)
  14. linux版本的火狐浏览器,火狐浏览器Linux版本
  15. 腾讯云弹性MapReduce
  16. MySQL 教程(三)函数
  17. 新零售背景下“农村淘宝“线下和线上服务
  18. 混合高斯模型(Gaussian Mixture Model,GMM)
  19. python应用——将raw文件转化为jpg文件,并显示图像
  20. 阻感性负载和反电动势负载——看似简单的整流电路详解

热门文章

  1. 第七讲:基于模型的系统工程(MBSE)|达索系统
  2. vue页面使用多个定时器
  3. 信息学奥赛一本通(c++版)1000
  4. 页面中实现轮播图效果
  5. 2023.05.30-ubuntu22.04多卡服务器卸载cuda重新安装(踩坑不断版本)
  6. jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
  7. svn服务器日志在哪个文件夹,SvnLog(svn日志导出工具)
  8. 第一篇博客,python爬取淘宝信息
  9. 连接机器打造智能工厂?请看虹科ASEM UNIQO解决方案!
  10. (四)DepthAI-python相关接口:OAK Messages