0x01 课程介绍

本课程会从零开始,手把手教你阅读linux内核启动流程源码,因为我会讲的非常详细,所以没有任何基础的小白用户也可以学习。

0x02 课程质量

扫描右侧二维码,关注我的微信公众号,上面有我写过的技术文章,当然本网站也有我写的部分文章。

通过这些文章,你可以了解到我写的每篇文章都是精心打磨的,我会把每一个细节,每一个知识点都讲透。

该课程会延续之前的文章风格,力求给大家带来一个精品课程。

0x03 上课形式

我会提供给大家课程视频,大家看视频时遇到任何问题,可以随时找我咨询。

0x04 课程费用

该课程费用为3999元。

0x05 课程报名

扫描右侧二维码,或者搜索 yt0x01,添加我的微信,备注课程报名即可。

0x06 课程大纲

以下为该课程的大纲,该课程也在持续优化中,真正上课时可能会比这些内容更好。


0x01 了解linux内核

带大家熟悉linux内核的官方网站、官方git仓库、官方文档等,让大家对linux内核及linux社区有个基本的了解。

0x02 下载内核源码

我们会从内核官方git仓库,下载最新代码,以后的课程,我们都是基于最新的内核代码来讲解。

0x03 配置内核的开发环境

我们主要会讲如何将 vim, emacs, vscode 等编辑器,配置成linux内核开发环境,使其可以方便的进行代码检索、代码跳转、代码补全等。

同时我们还会比较 ctags, cscope, gtags, lsp 的优缺点,告诉大家如何生成各种tags文件,以及如何选择及配置lsp服务端等。

我们还会介绍一个网页版的内核代码检索工具 elixir 的使用。

0x04 编译内核

这节分为两个部分,第一部分是配置内核,第二部分是编译内核。

在配置内核时,我们会讲如何使用 make defconfig/nconfig 等命令,对内核进行各种配置,比如开启内核对kvm,对bpf,对rust等的支持。

在编译内核时,我们会讲如何通过 make 命令,构建出一个可运行的内核,以及如何通过 make 命令,只编译内核的某个目录,甚至是某个文件。

0x05 运行内核

本节主要教大家如何用qemu,以各种方式来运行我们自己编译的内核。

比如,以bios方式启动内核,以uefi方式启动内核,以一个完整的虚拟机的方式启动内核,以 -kernel 参数的方式启动内核等。

这部分内容还会详细讲解qemu的使用,比如如何通过安装ovmf插件,使qemu可以通过uefi方式运行内核,比如如何通过参数配置,使qemu虚拟机和物理机之间可以共享文件夹等。

此外,我还会带大家从零开始,制作一个qemu版的archlinux虚拟机,这过程中,大家会学到如何对硬盘进行分区,如何安装配置boot loader等。

另外,我还会教大家如何制作内核的root文件系统等。

0x06 调试内核

带大家动手,使用gdb等工具,调试linux内核。

0x07 源码讲解内核的构建流程

深入内核的Makefile,以一行行代码的方式,详细讲解内核是如何构建出来的,在此过程中,还会画各种流程图、思维导图等,帮大家便于理解内核的构建过程。

此节内容比较重要,所以讲的也会比较详细。

0x08 源码讲解内核的启动流程

这部分是本课程中最重要的内容。

我们会以一行行代码的方式,详细讲解linux内核是如何启动的。

在启动过程中涉及到的一些核心模块,比如进程、调度、内存、网络等,我们也都会展开做一些额外讲解。

因为现在硬件基本都是uefi,所以我们会以uefi启动内核方式来进行讲解,我们会从电脑开机开始,讲uefi如何找到要启动的内核,以及如何分析内核程序格式,找到并运行内核的入口代码。

之后,我们会沿着内核入口代码,一步步的讲解内核启动流程,直到init进程的运行,至此,系统初始化过程就进入到了用户态程序,本课程主要内容也就结束了。

0x09 动手做各种实验

我始终认为,亲自动手才是学习的最好方式,所以在上面各种源码讲解过程中,我会尽量带大家做各种实验,来验证我们源码分析的结果。

0x0a 额外内容

我还会根据大家的兴趣,讲一些课程之外的内容,比如linux的历史趣闻,比如如何为内核提交patch等。

0x0b 写在最后

linux内核是一种内功,一朝一夕你看不到它带给你的好处,但你只要坚持学习,就会发现你的技术能力在成倍的增长。

掌握了linux内核,你就能站在一个全局的角度,真正理解什么是程序,什么是网络,什么是计算机系统,你就能真正的感受到,什么是融会贯通。

如果你想成为一个厉害的技术人,内核绝对是你绕不过去的一项能力,这个对于后端开发来说,尤其重要。

你可以不在我这里付费学习,但你一定要尽早的学习内核技术,你会从此受益的。