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

news2024/9/25 1:17:40

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/130223.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

声明式事物的属性之只读、超时、回滚策略

声明式事物的属性之只读、超时、回滚策略 1. 事务属性:只读 ①介绍 对一个查询操作来说,如果我们把它设置成只读,就能够明确告诉数据库,这个操作不涉及写操作。这样数据库就能够针对查询操作来进行优化。 ②使用方式 Overri…

zabbix报警方式,邮件报警和微信报警。

整理csdn时候发现了一篇2016年整理zabbix报警不知道当时啥情况没有发布出去,凑个数重新发布 最近这些天都在弄Zabbix不再只是简单的监控物理硬件,服务端口,流量图等。让Zabbix的功能发挥到极致。 本篇博客只做笔记介绍zabbix的报警&#xff…

【数据结构与算法】顺序队列与环形队列

文章目录一 顺序队列1 应用场景2 基本概念(1)基本介绍(2)队列的顺序实现(3)队列的入队和出队操作(4)使用数组模拟队列3 代码实现(1)初始化队列(2&…

React Native windows环境搭建

1.首先准备下载必须的依赖:Node、JDK 、Android Studio、夜神模拟器 ①Node可以直接到 官网 下载,版本必须大于14,我这边用的是v16.15.1 ②Jave JDK,我直接在360软件管家安装的,搜的是JDK 11,React Nativ…

【算法】双指针、位运算、离散化、合并区间

文章目录1.双指针2.位运算3.离散化4.区间合并1.双指针 双指针的算法可以优化时间复杂度,双指针,指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向( 快慢指针 )或者相反方向&#xff08…

SQL调优SQLSERVER 数据页

1. 什么是数据页 一般来说,对大块资源或者数据进行高效管理都会按照一定粒度来划分的,比如说 Windows 对内存的管理就是按照 内存页 (4k) 来进行划分,言外之意就是 SQLSERVER 对 mdf 的管理也是按照 数据页 (8k) 来划分的&#x…

(小记)matlab散点图

Matlab散点图两种画法一、plot画散点图二、scatter画散点图三、matlab工具画散点图plot画我可以设置坐标轴之类的,方便论文使用;scatter没设置成功。一、plot画散点图 参考:matlab中二维散点图,MATLAB实例:二维散点图 自用代码 …

一站式迁移,人大金仓助力保险业务无感升级

2021年3月,国家发布《中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要》,纲要明确提出“稳妥发展金融科技,加快金融机构数字化转型”、“推进金融业信息化核心技术安全可控,维护金融基础设施安全”。2022年…

如果通过股价均线分析股票

目录如果通过股价均线分析股票获取数据为什么要计算均价计算均价分析结果如果通过股价均线分析股票 获取数据 股票数据获取渠道非常丰富,可以通过上一篇文章 各大股票开放接口介绍中接口获取数据,需要提供技术支持的可以私聊。 为什么要计算均价 股票…

MongoDB:基础概述

MongoDB 是一个开源的、跨平台的、面向文档的、基于分布式文件存储的数据库系统,MongoDB 是由 C 语言开发,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。在高负载的情况下,通过添加更多的节点,可以保证服务器性能。 本篇内…

【技术分享】无纸化会议|智慧教室同屏走RTSP组播还是RTMP?

技术背景 我们在做内网多人同屏(比如无纸化会议、智慧教室同屏)技术方案的时候,遇到个问题:到底使用轻量级RTSP服务实现组播,还是基于RTMP的解决方案? 先说为什么大家喜欢组播吧: 组播技术方…

js实现复制粘贴剪切功能

文章目录js实现复制粘贴功能方式一:原生方式实现复制粘贴剪切(不推荐)方式二:浏览器自带clipboard API实现复制粘贴(推荐)简介特点clipboard对象及相关APIClipboard.readText()Clipboard.read()Clipboard.w…

二叉树之红黑树

红黑树的起源 二分查找具有Ologn的时间复杂度,使用二分查找的基础是数据有序。很明显数组可以完成这一条件,但是数组也有缺点,扩容,增加,删除非常不方便。而链表则没有这些缺点,但是链表却不满足随机存取&…

第二十七讲:神州路由器PPP CHAP认证的配置

实验拓扑图如下所示 操作步骤: 步骤1:连接网络拓扑图。 步骤2:RouterA基本配置。 Router>enable !进入特权模式 Router#config !进入全局配置模式 …

React jsx 简介与一些语法规则

什么是 Jsx 简单例子&#xff1a; //create virtual dom , single quotes is not needconst VDOM <h1> Hello, React </h1> //appy virtual dom to pageReactDOM.render(VDOM, document.getElementById("test")) //first parameter is virtual dom, …

2022,我们追逐群星,也在追逐AIGC的无尽可能

2022年&#xff0c;是中国人追逐群星的里程碑之年。今年10月31日&#xff0c;中国天宫空间站的第二个科学实验模块——梦天实验舱&#xff0c;搭载长征五号B遥四运载火箭发射升空。随着之后天实验舱成功与之前发射的天和核心舱完成精准对接&#xff0c;中国空间站历史性地完成了…

使用支付宝沙盒 nodejs

1、 进入官网 https://auth.alipay.com/login/index.html 登录 2、下载秘钥转换工具 https://render.alipay.com/p/f/fd-jwq8nu2a/pages/home/index.html 3、生成密钥 注意&#xff0c;此时得到的应用私钥的格式是不对的&#xff0c;应用格式转换转换格式 4、通过3中的应用公钥…

并发编程——2.Java 线程

目录2.Java 线程2.1.创建和运行线程2.1.1.方法一&#xff1a;直接使用 Thread 类2.1.2.方法二&#xff1a;使用 Runnable 接口配合 Thread2.1.3.方法三&#xff1a;使用 FutureTask 配合 Thread2.2.观察多个线程同时运行2.3.查看进程线程的方法2.4.原理之线程运行2.5.线程的常见…

React学习06-React Router 6

React Router 6 概述 React Router 以三个不同的包发布到 npm 上&#xff0c;它们分别为&#xff1a; react-router: 路由的核心库&#xff0c;提供了很多的&#xff1a;组件、钩子。react-router-dom: 包含react-router所有内容&#xff0c;并添加一些专门用于 DOM 的组件&…

Elasticsearch处理表关联关系的N种方式

Elasticsearch处理表关联关系是比较复杂的问题&#xff0c;处理不好会出现性能问题、数据一致性问题等&#xff1b; 今天我们特意分享一下几种方式&#xff0c;对象类型&#xff08;宽表&#xff09;、嵌套类型、父子关联关系、应用端关联&#xff0c;每种方式都有特定的业务需…