一切技术都需要基础,而linux就是其中不可或缺的一部分。一种操作系统对应的是一系列的软件生态,而linux生态的学习始终是绕不开linux的。学习Linux源码是绕不过的!

你对你现在做的事真的了解吗?了解到什么程度?这两个问题很关键。所谓成长,就是知道自己目前在哪里,清楚将要去往哪里,然后通过学习和行动到达目的地。

熟练使用Linux命令行


习惯“命令行+文件”。-h命令,man命令。推荐书籍《鸟哥的Linux私房菜》、《Linux系统管理手册》

操作系统其实就是一组程序,用于管理计算机的所有活动以及驱动系统中的所有硬件。而其中最重要就是操作系统内核(用于管理硬件和提供相关能力,如存取硬盘、网络功能、CPU资源获取),内核收到保护,开机后一直在内存中运行。BIOS也是一套程序,但是它写死到内存芯片上了。
通过这种方法开发软件就从参考硬件函数变成了参考内核函数,但还是很麻烦。但还是很麻烦,于是操作系统就出来救世,提供了一整组开发接口来给工程师开发软件。而再往上就是编程语言去调函数接口了。于是核心需要包含的功能有:系统呼叫接口(system call)、程序管理(控制CPU分配给多进程)、内存管理、文件管理、装置驱动(当然为了让驱动能在操作系统上用,会由操作系统厂商提供接口)。

使用Linux进行程序设计

通过系统调用或者 glibc,学会自己进行程序设计。命令行工具也是工具,只不过是别人写的程序;而自己通过调用Linux内核或者相关库编写程序来操作Linux。而对Linux程序设计入门需要《Unix/Linux编程实践教程》、《UNIX环境高级编程》

了解Linux内核机制

已经可以自己使用代码操作Linux时,你当然就想知道平时调用的Linux内核是怎么设计的。而内核实现经常各部分相互关联,可以先学内核机制再上代码。推荐书籍《深入理解Linux内核》(版本较老)。可以跟着MOOC一起自己动手搭建Linux内核

阅读Linux内核源码

看源码主要聚焦核心逻辑和使用场景。研究虚拟化,看KVM;研究网络,看内核协议栈。推荐书籍《Linux内核源代码情景分析》(版本较老)

实验定制Linux组件

参考现有实现,定制自己的模块。如实现自己的系统调用或文件系统。

生产实践