<audio id="audio" title="结束语 | 第一次看内核代码，我也很懵逼" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/ab/1d/ab07dfbe00f970ab868fb9dfyy31481d.mp3"></audio>

你好，我是邵亚方。

我们的专栏就要接近尾声了，一路走来，非常感谢你的支持。我在这里想跟你分享一下我学习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内核技术实战课》就要结束了，这里有一份[毕业问卷](https://jinshuju.net/f/mwe1E9)，题目不多，希望你能花两分钟填一下。十分期待能听到你说一说，你对这个课程的想法和建议。

[<img src="https://static001.geekbang.org/resource/image/38/52/38d6dbba408db9d4a3fe34857de5d652.jpg" alt="">](https://jinshuju.net/f/mwe1E9)
