大厂程序员推荐的linux内核学习路线

第一步,了解 linux 的发展历史、设计思想、与其他操作系统相比其特点和优势,了解国内外发展现状。

什么是开源软件?什么是闭源软件?什么是自由软件?什么是 GPL 协议?什么是一切皆文件的设计?什么是内核?什么是发行版?各个发行版的区别特色?什么是 POSIX 标准?什么是 GNU 计划?哪些你喜欢的软件可以运行在 linux 吗?为什么国内很多厂商不愿意为 linux 开发软件?为什么玩 linux 需要各种改配置文件?什么是软件包?什么是包管理器?什么是 github ?为什么会有这么多种桌面环境?

如果你有一定的C语言编程基础,那么更好了,你还可以以 C语言为基础去进一步了解:

什么是编译?什么是动态库?什么是静态库?什么是可执行文件?什么是依赖?为什么会依赖?什么是配置文件?为什么配置文件总是文本代码要这么麻烦得自己改?

上述只是举了一些我暂时能想到的,需要提前做好功课的问题,应该还有很多我没想到的甚至我不知道的。

如果你不善于百度和谷歌,那我劝你放弃 linux ,千万别折磨自己,也别指望一两本书能让你玩转 linux 。互联网在发展知识越来越海量,习惯用百度和谷歌来解决疑惑才是学习这些的唯一出路。

很多人可能会认为了解这些没用,还不如多去学一些命令。而我建议,在你还没能适应日常使用 linux 之前,最好把学习 linux 中的 80% 以上的时间精力全都用来研究了解这些。因为:

当你还不知道 linux 适合做什么的时候,盲目使用它会导致遇到各种不方便时,你会容易抱怨它不好用,实际上你抱怨的东西很可能正好是它的一个特性,人家就是这么设计的,换一种方式使用才能发现新大陆。

当你真正了解它的优势的时候,你才容易把它的优势发挥到极致,从而尝到很多甜头,越来越感兴趣,越玩越起劲。反观那些不怎么了解就盲目使用,遇到的全是 linux 的各种坑,充分发挥其劣势导致痛苦,人生苦短啊放过自己吧,早知道是这样的结果,Windows 它不香吗?

总之,获取这些信息不但不是浪费时间,反而能帮助你节省很多时间,它总能指引你走向正确的方向。前期这些功课做得越多,后续踩的坑浪费的时间越少困惑也越少,达到事半功倍的效果。

第二步,上手一个适合自己的发行版,先掌握其包管理器

在这一步,你就必须开始实践了,不管用虚拟机也好,还是装成实体机也好,或者远程的服务器也好,都得想办法实践起来。千万别想着看看书就行了,想得美不实际干那就是浪费时间。

因为你有了第一步的功课作为基础,你一定知道了什么是包管理器。真正实践的过程中,你第一个要学习的就是如何使用这个发行版的包管理器,包管理器是一个发行版的核心,只有掌握了包管理器,你才能:

  1. 知道如何安装一个软件(而不是傻到每次用百度搜着下载)
  2. 知道如何卸载一个软件
  3. 自己缺少某个命令的时候知道用它安装相应的软件包
  4. 知道如何更新软件,知道什么时候需要更新软件。

当然以上只是最基础的,还有能让你更方便的:

  1. 如何搜索某个命令属于哪个软件包?
  2. 如何搜索查询系统里某个文件属于哪个包?
  3. 如何卸载自己不再需要的包包括其依赖?

连一个桌面环境都是一系列软件包来组成,你说重不重要?充分掌握了包管理器,相当于你能够任意 diy 你的系统,就像搭积木一样,想让它成什么样就成什么样。

你一般只需要通过百度或者谷歌途径,了解到你想要安装的软件对应的包名,你就能用包管理器安装它(提醒一下别忘了换成国内源不然慢死你)。

需要注意的一点是,千万不要用图形化界面的“软件商店”,一定要用命令行的诸如 apt 命令 rpm 命令 pacman 命令等管理软件,也别问为什么,你有了第一步的功课你应该懂。

第三步:掌握 linux 的基本组成结构,深入理解设计思想

这是一切皆文件的环节,你需要知道什么是根目录,根目录下每个子目录是干嘛的?什么是挂载点?什么是设备块文件?什么是虚拟文件系统?什么是家目录,家目录有什么用?什么是 xdg 规范?什么权限机制?为什么这个文件是这样的权限?什么是用户?什么是组?为什么要设计用户和组?

经历了这个环节,你才能知道你的音乐视频应该放哪,你的代码应该放哪,你才知道如何解决找不到D盘的困惑。也就是,能让你真正日常融入 linux ,而不会被 Windows 的习惯干扰学习。

第四步:根据自己的具体需求发展更深层次的学习方向

你为什么要来 linux ,做日常使用吗?做开发吗?做服务器吗?为了装逼吗?

不同的需求不同的学习方向,不过基本命令是通用的,诸如文件管理的很多命令。建议是需要什么命令就查什么命令,要是不考试的话,切莫死记硬背,学会用 man 和 --help 还有百度和谷歌查询自己需要的,因为海量的命令你不可能背得完,而常用的命令你多查几次自然会。也别和我说 command not found ,回到第二步去。

这一环节方向比较多,所以我就不展开了。当你到这一步的时候,你其实已经不需要人为指导你了,百度谷歌就足够。

学习的过程就如同一个公司的发展:一切由需求驱动,先调研再计划再实现。盲目做事情的公司都倒闭了因为没市场,盲目学习一些命令的都已经想逃离 linux 了因为迷茫学不动。

作为近年来运用越来越广泛,被互联网企业越来越认可的技术,内核底层原理技术该如何学习呢?
这里给大家推荐零声教育 全网独家的【Linux内核源码 课程体系,通过 20项目案例,2W+行手写代码,全面解析6个内核技术方向。

大厂程序员推荐的linux内核学习路线_第1张图片

  • 进程管理专题
  1. 操作系统与汇编基础
  2. 进程管理基础
  3. 进程调度模块

大厂程序员推荐的linux内核学习路线_第2张图片

  • 内存管理专题
  1. 内存管理基础部分
  2. 内存管理进阶部分

大厂程序员推荐的linux内核学习路线_第3张图片

  • 网络协议栈专题
  1. 网络基础架构
  2. 网络协议栈架构

大厂程序员推荐的linux内核学习路线_第4张图片

  • 设备驱动管理专题
  1. 设备驱动基础架构
  2. Linux设备模型
  3. 资源分配
  4. 字符设备操作
  5. 块设备操作
  6. NIC网络接口卡

大厂程序员推荐的linux内核学习路线_第5张图片

  • 文件系统及内核组件专题
  1. 虚拟文件系统
  2. 磁盘文件系统
  3. 数据同步
  4. 内核活动
  5. 开源社区

大厂程序员推荐的linux内核学习路线_第6张图片

大厂程序员推荐的linux内核学习路线_第7张图片

五:零声服务与内核书籍参考资料

  1. 零声服务

学习方法:

  • 每次课的知识体系 总提到技术博客
  • 不理解的技术点 与老师们进行沟通

面试跳槽

  • 简历梳理 技术凸显
  • 模拟面试 技术表示
  • 薪资谈判 福利争取
  • offer选择 职业规划

内核参考书籍资料

  • 《Linux设备驱动开发详解》 作者:宋宝华 编著
  • 《深入Linux内核架构》 (德) 作者:莫尔勒著 郭旭 译
  • 《Linux内核设计与实现》 原书第3版 作者:拉夫(RobertLove)
  • 《深入理解Linux网络技术内幕》 (意) 作者:Christian Benvenuti 著
  • 《深入理解Linux内核》 第三版(美) 博书 著,陈莉君 张琼声 张宏伟 译

你可能感兴趣的:(C/C++,Linux内核,大厂,linux,学习,服务器)