结束语|第一次看内核代码,我也很懵逼
文章目录
你好,我是邵亚方。
我们的专栏就要接近尾声了,一路走来,非常感谢你的支持。我在这里想跟你分享一下我学习 Linux 内核的经历,希望我的个人经历能够给你带来一些启发。
我在从事 Linux 内核开发工作之前,几乎没有接触过 Linux 内核源码,只是对 Linux 操作系统略微了解一些,这还得益于大学期间 Ubuntu 的流行。那个时候我对什么都感到好奇,看到 Ubuntu 忽然流行起来,就在自己的电脑上也安装了 Windows+Ubuntu 双系统,天天折腾 Linux 命令和一些 Ubuntu 的使用技巧。然后没过多久,我就觉得自己是一个 Linux 专家了,开始在一些论坛上“指指点点”,觉得自己无所不能。
我们说,从 0 到 1 是一个从无到有的过程,对于发明创造来说这很难,但对于学习新东西而言,从 0 到 1 就相对容易了。不过,我那个时候把“学习”当成了“发明创造”,认为自己跨越了从 0 到 1 的阶段,就算是突破了学习 Linux 最难的部分,再往后就会顺其自然。
直到我开始实现一个 Linux 内核特性,才意识到自己对 Linux 的认知有多么肤浅。我之前掌握的那些 Linux 知识,只是让我从 0 迈出了一小步,而后面实际上还有 99 步要走。好在我及时意识到了自己的狂妄自大,开始埋头对照着 Linux 内核源码学习《深入 Linux 内核》这本书。在我的师傅手把手的指导以及周围同事的热心帮助下,我终于实现了 Linux 内核特性。
后来,在我能够独立实现 Linux 内核特性后,我又开始飘了,认为自己是 Linux 内核专家了。没错,我又在犯之前的错误,以为掌握一个新技能,只要从 0 迈向 1 就是突破了最难的部分,剩下的路就会一马平川。
这种狂妄自大一直伴随着我,直到我开始参与 Linux 社区的工作。当我与来自世界各地的开发者们讨论问题时,我再一次发现自己对 Linux 内核的认知有多肤浅。这并不是说我周围的同事不如社区里的开发者,而是我的同事们会在我遇到困难时帮助我一起想办法解决,与 Linux 社区的开发者们打交道则不同,我需要自己解决他们的质疑。
当然,Linux 内核社区是很开放的,里面也有很多既热心又谦逊的人帮助你。与他们打交道越多,讨论的越多,你就越会觉得自己对 Linux 内核的认知很肤浅。有时候,为了反驳他们的质疑,甚至只是为了单纯指出他们逻辑上的缺陷,我会去看大量的内核代码,写大量的内核代码以及大量的测试用例…每当 Linux 内核子系统的 maintainer 承认他们的观点是错的,而我的观点是正确的时候,我都会感觉很快乐,因为自己的努力没有白费。
不过,即便如此,我并不觉得自己对 Linux 内核的理解已经到了多么深刻的地步,因为我知道我还在从 1 到 99 的道路上艰难前进着,我也不知道自己到底走了多少步,不过,这对我来说已经不重要了。俗话说,事不过三,你会发现我的心态已经变了,我不再犯之前的错误了。
我只是想告诉你,对于 Linux 的学习者而言,从 0 到 1 真的是最简单的一步,往后的每一步会越来越难。走完 99 步之后,你可能才开始面临最艰难的那一步。也许当你从第 99 步正式跨越到第 100 步时,就能够发明创造一个新的东西了?就像 Linus 向社区发布 Linux 内核的第一个版本一样,他从 0 到 1 创造了 Linux。而我们不断地对它学习、研究,在壮大 Linux 的同时,也在走着自己的 0 到 99 步。至于我们从 99 迈向 100 时究竟会实现怎样的突破,我并不清楚,因为我自己还没有达到这样的境界,不过,未来的你和我或许有机会能验证它。
最后,再次感谢你一路以来的支持与陪伴,我们后会有期!
《Linux 内核技术实战课》就要结束了,这里有一份毕业问卷,题目不多,希望你能花两分钟填一下。十分期待能听到你说一说,你对这个课程的想法和建议。
文章作者 anonymous
上次更新 2024-02-18