linux-0.11 研究

本文介绍了如何阅读和学习Linux0.11内核源码,包括选择老版本的原因、源码下载、在Ubuntu上的编译过程、使用QEMU运行以及通过GDB进行调试。此外,还展示了如何利用VSCode配置调试环境,提高代码理解和调试效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

多阅读优秀代码,才能提高快速、深刻理解代码的能力。linux 内核源码无疑是最好的选择,不过当前 linux 内核版本为 6.3,代码量是相当庞大了,别说看完整个代码了,就算是看完一个子系统,都是不太现实的。因此,我的打算是看老版本的内核代码,再加上有《Linux0.11 内核完全注释3.0》这本书,所以,就开始看 linux-0.11 吧。

源码下载

http://www.oldlinux.org/Linux.old/Linux-0.11/sources/system/linux-0.11.tar.Z
这份源码,配合赵炯老师的内核完全注释正好。

编译

在看源码的同时,如何能够编译、运行,就再好不过了,如果还能调试,那就锦上添花了。
所以我们先尝试编译,在
ubuntu编译linux0.11
编译linux-0.11的第二种方法
两份武功秘籍的加持下,最终磕磕绊绊,我终于还是没编过。。。😂
那就转变思路,找一份能编过的,最终找到了
https://github.com/yuan-xy/Linux-0.11
编译方法参考下面这篇博客
Linux 0.11-调试 Linux 最早期的代码-36

运行

编译好后,可以使用 qemu 运行,

$ make start

在这里插入图片描述

调试

在这里插入图片描述
代码不理解的地方,可以使用 gdb 调试,比单纯看书有意思多了。

进阶

经常调试,每次手敲 gdb、打断点、看变量,还是有些呆板和琐碎的,所以我们继续借助工具,vscode 登场,
.vscode 目录下添加文件 launch.json,内容如下

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "qemu-kernel-gdb",
            "type": "cppdbg",
            "request": "launch",
            "miDebuggerServerAddress": "127.0.0.1:1234",
            "program": "/home/liyongjun/project/c/linux-0.11-source/tools/system",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceRoot}",
            "environment": [],
            "externalConsole": false,
            "logging": {
                "engineLogging": false
            },
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                },
                {
                    "description": "设置体系结构",
                    "text": "-gdb-set arch i386:x86-64",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

执行完 make debug 后,在 vscode 上点击调试按钮,打断点,运行,单步。
可以实时显示:寄存器数据、监视变量、调用堆栈、当前执行的代码等,非常方便。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Li-Yongjun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值