linux-0.11调试教程,源起,从linux内核完全注释的几处错误说起

2024-01-02 21:48

本文主要是介绍linux-0.11调试教程,源起,从linux内核完全注释的几处错误说起,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        本系列文章调试linux-0.11,大部分都是一些新内容,小部分是对代码的一些印证。

        另写了一些调试工具,比如readizone,readblock,readinode这些工具对学习linux-0.11操作系统很有帮助。当然还需要stat和hexdump工具的配合。

       fdisk for linux-0.11

         开始到-13/3/15的文章导出的pdf文件下载

        http://pan.baidu.com/share/link?shareid=382827&uk=453348606    

       另写了一些工具源代码分析,比如mkfs.c源代码分析和df.c源代码分析,从这些工具的源代码可以更好的认识文件系统。

下面是linux内核完全注释的电子版(3.0)中的一个插图


        图中说将信号处理程序句柄插入到用户堆栈中。从linux-0.11调试教程,task3(04),restore函数可以看出插入到用户堆栈的并不是信号处理程序句柄sa_handler,而是sa_restore和oldeip!

          但是,linux内核完全注释的电子版2003的1.1到现在3.0已有近十年的历史,这个错误还没有人指出,可见大家代码的深度不够,或者说光读而不实践得不到真东西。可以说,“纸上得来终觉浅,绝知此事要躬行”下面是本系列文章作者修改后的图:






        如有问题可以发帖子到百度贴吧oldlinux贴吧,大家一起讨论。

转载请注明来自:linux-0.11调试教程

调试软件包下载


第二处错误(2013/1/21发现by sitelist:chenghao0511##gmail.com)

应该改为:第一个硬盘参数表的地址。详细参见:linux-0.11调试教程,setup.s中的硬盘参数表


第三处:敢指出linus的一处注释错误(main.c中)

linux-0.11,任务1的用户态堆栈,copy-on-write之后的堆栈!

查看硬盘分区表信息工具fdisk0 for linux-0.11

百度网盘下载地址:http://pan.baidu.com/share/link?shareid=218125&uk=453348606

第四处错误:(2013/1/29发现by sitelist:chenghao0511##gmail.com)


3.0版的515页,上图中第二行”对应的i节点0都闲置不用“是错误的。其实没有i节点0,根目录对应的1号i节点放置在了第一个i节点块的头32个字节。

详细请看:linux-0.11调试教程,mkfs.c源代码分析(1



bash-1.05 by gcc-1.40 in minix-386 百度网盘共享下载:

http://pan.baidu.com/share/link?shareid=254696&uk=453348606

you can run in linux-0.11

cp bash /bin/sh 


处错误:(2013/2/07发现by sitelist:chenghao0511##gmail.com)

电子版3.0,310页,把SIGCHILD的值弄错了,不是18应该是17

#define SIGCHLD        17

具体请看:linux-0.11调试教程,信号处理方式


第六处:关于s_log_zone_size的值,

(2013/12/31发现by sitelist:chenghao0511##gmail.com)参加下面的链接:

linux-0.11调试教程,df.c源代码分析,自己写了个super for linux-0.11

第七处:bmap()函数block的含义不对。

(2013/12/31发现by sitelist:chenghao0511##gmail.com)


第八处:关于用shoelace启动linux-0.11时的映像img参数的问题,其实和硬盘的参数(c h s)没有关系。

fdisk in minix 源代码分析

(2014/1/4发现by sitelist:chenghao0511##gmail.com)     



bash源代码分析【readline部分】中的比较重要的文章:

http://blog.csdn.net/sitelist/article/details/8607523

这篇关于linux-0.11调试教程,源起,从linux内核完全注释的几处错误说起的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/563731

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

内核启动时减少log的方式

内核引导选项 内核引导选项大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导选项说明。大多数选项是通过"_

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta