飞豹客 · 课能看,资料也能带走
飞豹客测试运维 会员免费

中国科学技术大学 软件学院Linux内核分析

这门课到底讲什么 中国科学技术大学软件学院的这套 Linux 内核分析课程,核心内容不是教你写内核模块,也不是带你刷驱动面试题,而是聚焦一个很具体的问题: Linux 内核从加电到启动完成,究竟发生了什么 。课程从 start_kernel 这个入口函数切入,配合 gdb 远程调试,一步步跟踪内核初

单课价¥29.90新品 上架
会员价 会员免费开通会员后本篇可直接下载套餐详情
64 人关注 更新于 2026-09-01 永久有效
发货

网盘链接 · 支付成功后自动发货

保障

永久有效 · 链接失效免费补发

客服

每日 9:00-21:00 在线客服 联系客服

会员可免费下载本篇月会员可免费领取。

开通会员 ›
购买本课销量 0 · 永久有效
会员价 · 单课标价 ¥29.90

会员 · 按档位

永久免费可领
年免费可领
月免费可领

游客按标价购买,不享受上表折扣。

支付成功后自动发放网盘链接,链接失效可找客服免费补

正版保障 极速发货 售后无忧

这门课到底讲什么

中国科学技术大学软件学院的这套 Linux 内核分析课程,核心内容不是教你写内核模块,也不是带你刷驱动面试题,而是聚焦一个很具体的问题:Linux 内核从加电到启动完成,究竟发生了什么。课程从 start_kernel 这个入口函数切入,配合 gdb 远程调试,一步步跟踪内核初始化的执行路径。整个教学重心放在"看懂内核代码怎么跑起来"这件事上,而不是泛泛地讲操作系统概念。

换句话说,这是一门偏"解剖"的课,不是偏"使用"的课。如果你期待学完能马上部署一套生产环境,它可能不对路;但如果你想搞清楚内核启动阶段各个子系统按什么顺序初始化、代码之间的调用关系为什么是这样设计的,它的针对性很强。

学完能独立做什么

课程里有一条很实在的主线:构造一个简单的 Linux 系统。这个环节的价值在于,它会逼你把内核镜像、根文件系统、启动参数这几样东西真正拼到一起跑起来,而不是停留在看代码的层面。做完这一步,你至少能独立完成以下几件事:

  • 用 gdb 挂载到 QEMU 或类似环境,在内核启动过程中打断点、单步跟踪,观察某个函数被调用时的上下文;
  • 读懂 start_kernel 之后的初始化调用链,知道某段内核代码大致处于启动的哪个阶段;
  • 自己编译一个精简内核并让它在模拟器里成功启动,理解配置项和启动结果之间的对应关系。

这些能力在排查内核 panic、分析启动卡死、理解发行版内核定制时都用得上,尤其是做测试运维、系统调优、嵌入式方向的人,遇到内核层面的问题时不会完全无从下手。

资料适合什么基础

这套课的门槛不算低,需要你先具备这些前提:

  • 能熟练使用 Linux 命令行,会编译过至少一个 C 项目;
  • 看得懂 C 语言里的指针、结构体、函数指针,内核代码大量使用这些;
  • 对操作系统的基本概念(进程、内存管理、中断)有印象,不需要精通,但不能完全陌生;
  • 愿意在虚拟机或模拟环境里动手敲命令,而不是只看视频。

如果以上有几条不满足,直接啃启动过程会很吃力,建议先补一段 C 和 Linux 系统编程的基础再回来。课程本身不负责从零教 C 语言或 Linux 基本操作。

怎么用这份资料效率更高

内容按"调试方法—启动分析—构造系统"组织,建议按顺序来,不要跳。先用 gdb 调试那一节把工具链跑通,确保你能真的断到内核里;再去跟 start_kernel 的调用流程,这段时间可以对着源代码边看边记调用关系;最后动手构造系统,把前面看的代码和实际运行对应起来。文本参考资料体量不大,适合在跟代码卡住的时候当索引查,不适合通读。

需要提醒的是,内核版本迭代很快,课程使用的代码版本和当前主线内核会有差异,函数名和初始化顺序都可能变化。学的时候重点抓"启动阶段划分"和"调试方法"这两条相对稳定的东西,具体行号不要死记,遇到不一致的地方以你本地的源码为准去核对。

值不值得花时间

如果你的工作会碰到内核启动异常、系统定制、底层性能问题,或者你正在准备偏系统方向的面试,这套课的内容密度和实操性是够的,值得投入。如果你只是想泛泛了解操作系统,或者目标是应用层开发,它的投入产出比就不高——内核分析本身是一件需要持续动手、周期偏长的事,选之前先确认自己确实有这个场景需求。

课程目录

课程目录19 集
  • 📁 9.跟踪调试Linux内核的启动过程 2.简单分析一下start_kernel.avi [53.8 MB] 1.使用gdb跟踪调试Linux内核的方法_3100_1793.avi [35.7 MB] Linux内核启动过程相关的参考资料.txt [1.3 KB] 📁 8.构造一个简单的Linux系统 1.构造一个简单的Linux系统MenuOS_3100_7994.avi [55.5 MB] 8.构造一个简单的Linux系统说明.zip
  • [1.8 MB] 实验指导.txt [1.7 KB] 📁 7.Linux内核源代码简介 1.Linux内核源代码_3100_7139.avi [61.8 MB] 7.Linux内核源代码简介必看.png [493.5 KB] 📁 6.在mykernel基础上构造一个简单的操作系统内核 2.一个简单的操作系统内核源代码.avi [89.9 MB] 3.运行这个精简的操作系统内核_3100_3502.avi [12.5 MB] 1.C代码中嵌入汇编代码的写法_3100_6020.avi [55.9 MB] 6.在mykernel基础上构造一个简单的操作系统内核必看.png [493.5 KB] 📁 5.利用mykernel实验模拟计算机硬件平台 2.利用mykernel实验模拟计算机硬件平台.avi [37.5 MB] 1.mykernel实验背后涉及的思想.avi [26.4 MB] 5.利用mykernel实验模拟计算机硬件平台文档.zip
  • [1.8 MB] mykernel实验指导_3100_1674.txt [284.0 B] 📁 4.操作系统是如何工作的? 3.参数传递与局部变量.avi [86.8 MB] 2.深入理解函数调用堆栈.avi [51.3 MB] 1.三个法宝.avi [34.2 MB] FoundationsForHackingLinux_3100_9493.pdf
  • [659.0 KB] 计算机是如何工作的?(总结)——三个法宝.txt [454.0 B] 📁 3.反汇编一个简单的C程序分析其汇编指令执行过程 3.完整汇编程序执行过程分析_3100_7154.avi [116.9 MB] 2.C程序和对应的汇编指令.avi [28.5 MB] 1.反汇编一个简单的C程序_3100_4280.avi [31.8 MB] 执行过程演示.gif [706.2 KB] 3.反汇编一个简单的C程序分析其汇编指令执行过程文档.zip
  • [1.8 MB] 📁 23.linux系统架构和执行过程概览 从CPU和内存的角度看linux系统的执行.wmv [8.1 MB] linux操作系统架构概览.wmv [17.9 MB] 最简单也是最复杂的操作--执行ls命令.wmv [7.6 MB] 23.linux系统架构和执行过程概览必看.zip
  • [1.8 MB] LinuxArchitectureAndSystemExecution.pdf
  • [256.8 KB] 📁 22.Linux系统的一般执行过程 内核与舞女.wmv [88.5 MB] linux系统的一般执行过程分析.wmv [56.6 MB] linux系统执行过程中的几个特殊情况.wmv [31.1 MB] Linux系统的一般执行过程.txt [925.0 B] 22.Linux系统的一般执行过程资料.png [493.5 KB] 📁 21.进程切换的关键代码switch_to分析 进程调度与进程调度的时机分析.wmv [66.1 MB] 进程上下文切换相关代码分析.wmv [55.9 MB] 21.进程切换的关键代码switch_to分析必看.zip
  • [1.8 MB] 进程的调度时机与进程的切换.txt [3.8 KB] 📁 20.可执行程序的装载 可执行程序的装载相关关键问题分析.wmv [88.2 MB] 浅析动态链接的可执行程序的装载.wmv [78.0 MB] 可执行程序的装载与庄生梦蝶的故事.wmv [38.3 MB] 使用GDB跟踪sys_execve内核函数的处理过程.wmv [43.2 MB] sys_execve的内部处理过程.wmv [61.5 MB] 可执行程序的装载_3100_5313.txt [1.9 KB] 📁 2.X86汇编基础 5.分析几个汇编指令片段(二_3100_8891.avi [17.3 MB] 3.X86汇编指令二(push、pop、call、ret_3100_5208.avi [43.1 MB] 4.分析几个汇编指令片段(一).avi [26.7 MB] 2.X86汇编指令一(mov指令及几种内存寻址方式).avi [36.6 MB] 1.X
  • 86 Registers.avi [29.6 MB] 参考资料.txt [264.0 B] 2.X86汇编基础必看.png [493.5 KB] 📁 19.可执行程序共享库和动态链接 装载时动态链接和运行时动态链接应用举例.wmv [41.9 MB] 装载可执行程序之前的工作.wmv [43.2 MB] 可执行程序共享库和动态链接.txt [2.4 KB] 📁 18.预处理编译链接和目标文件的格式 目标文件的格式ELF.wmv [31.1 MB] 静态链接的ELF可执行文件和进程的地址空间.wmv [13.8 MB] 可执行程序是怎么得来的.wmv [31.7 MB] 预处理编译和链接相关命令参考.txt [2.8 KB] 18.预处理编译链接和目标文件的格式文档.png [493.5 KB] 📁 17.进程的描述 进程描述符task_struct数据结构(二).wmv [50.7 MB] 进程描述符task_struct数据结构(一).wmv [32.1 MB] 17.进程的描述资料.zip
  • [1.8 MB] 📁 16.进程的创建 理解进程创建过程复杂代码的方法.wmv [61.0 MB] 进程的创建概览及fork一个进程的用户态代码.wmv [39.8 MB] 浏览进程创建过程相关的关键代码.wmv [62.4 MB] 创建的新进程是从哪里开始执行的.wmv [25.2 MB] 使用GDB跟踪创建新进程的过程.wmv [32.1 MB] 进程的创建的创建和撤销资料参考_3100_6461.txt [1.7 KB] 📁 15.系统调用在内核代码中的处理过程 3.简单浏览system_call到iret之间的主要代码_3100_6989.mp4
  • [22.4 MB] 2.简化后便于理解的system_call伪代码_3100_8977.mp4
  • [39.3 MB] 1.系统调用在内核代码中的工作机制和初始化_3100_1171.mp4
  • [15.3 MB] 15.系统调用在内核代码中的处理过程资料.zip
  • [1.8 MB] 📁 14.使用gdb跟踪系统调用内核函数sys_time 1.使用gdb跟踪系统调用内核函数sys_time.mp4
  • [42.8 MB] 14.使用gdb跟踪系统调用内核函数sys_time文档.png [493.5 KB] 📁 13.给MenuOS增加time和time-asm命令 1.给MenuOS增加time和time-asm命令.avi [32.3 MB] 📁 10.用户态、内核态和中断 1.用户态、内核态和中断_3100_5029.avi [66.4 MB] 10.用户态、内核态和中断资料.zip
  • [1.8 MB] 📁 12.使用库函数API和C代码中嵌入汇编代码触发同一个系统调用 3.使用C代码中嵌入汇编代码触发系统调用获取系统当前时间_3100_3993.avi [19.2 MB] 2.C代码中嵌入汇编代码的写法_3100_6711.avi [55.9 MB] 1.使用库函数API获取系统当前时间.avi [10.8 MB] 12.使用库函数API和C代码中嵌入汇编代码触发同一个系统调用必看.zip
  • [1.8 MB] 📁 1.存储程序计算机工作模型 存储程序计算机工作模型.avi [43.4 MB] HowtheComputerWorks.pdf
  • [606.0 KB] 1.存储程序计算机工作模型说明.png [493.5 KB] 📁 11.系统调用概述 1.系统调用概述.avi [57.7 MB] SystemCall_3100_6326.pdf
  • [228.9 KB] 11.系统调用概述资料.png [493.5 KB] 适合人群 Linux内核开发者 系统运维工程师 对内核原理有深入探究的爱好者 学习收获 掌握Linux内核分析技巧 深入理解Linux内核原理 提升系统运维能力 祝您学习愉快! 学有所成,前程似锦!