上图是公众号冠名参加的篮球赛

对我来说,要搞好Linux内核,首先要做的就是买一块Linux开发板,然后就使劲捣鼓。下面是一位大神对于入门Linux内核的看法。

以下的「我」不是公众号作者

=====

作者:Coly Li
https://www.zhihu.com/question/304179651/answer/545396428

步入殿堂,我的理解就是自己能靠这手艺养活自己,不仅饿不死,还有碗饱饭吃。对于资质平平的普通人来说,这也不难,就是坚持和时间的问题。大家看到的高手都是聪明人,他们不做内核开发做其他工作也会是很牛X,我们这些普通人之所以说要坚持和时间,是因为我们不管做什么事情,能有口饱饭吃都得靠坚持和时间。

内核开发也是写软件代码,和其他的软件代码开发工作没啥区别:创造有人用的代码。这就是一份工作,把工作做好,领薪水买米面油气交房前。可能不同的是内核软件没有用户界面,普通用户没法直接看到效果。

这份工作的好处是稳定和灵活,因为市场上工作岗位数量远远超过从事内核开发的聪明人,所以普通人如果能够达到基本的工作要求,也可以得到一份稳定而且灵活的工作。

稳定是指,薪水比较稳定,岗位也比较稳定,不会出现短期内快速加薪升职的情况。灵活是指,有很多此类岗位是可以提供远程办公的,所以如果不强求留在北上广深,而是回到老家和家里人一起生活,找一个彼此相爱的人厮守,这份薪水可以在当地过上娇纵淫欲的生活妥妥没问题。此外,只要能完成工作,时间都是自己安排的。如果真想做内核开发(其实绝大多数人并不感兴趣),这种氛围还是很有助于能力的成长的。

聪明人的例子就不说了,扎心。大家分享一下我自己这个普通人是如何走上做内核开发这条路,还至今没有饿死的。

我是97年上的大学,学校比较一般,刚入学的时候我满脑子想的是如何毕业之后和老家亲戚们一起经营农村土特产。大概是大二下学期有一次在图书馆看书,无意中看到了一本介绍Linux的薄书,作者写的很有意思,我居然就在图书馆一直看到很晚把那本书给看完了。然后我就决定,要去找Linux来玩玩。当时学校的机房里还没有Linux,我自己也没有电脑,只能是残念了。后来大三暑假我去了一家叫美商网虎的Linux公司实习,算是真正接触了这个系统,感觉很酷。关键是编程也是黑屏幕和我学DOS编程的环境很像,上手很顺利,呵呵。再后来就是在沈树镛教授指导下,在学校计算中心开课跟大家介绍这个系统的使用,自己也利用计算中心的网络环境和设备环境,很深入的了解了这个系统的使用和配置,以及基本的编程概念。

然后就开始进去了学习Linux内核编程的大坑,哈哈,什么不懂学什么,一转眼就十几年过去了。从驱动开始做起,然后做应用,然后做系统管理工具,然后做文件系统,然后去互联网公司做了几年工程管理,现在又回到一线岗位继续做Linux内核开发。

一眨眼,从我98年第一次知道Linux到现在,已经20年过去了。现在还能依然靠开发Linux内核养家糊口,还把自己吃成了胖子,我觉得已经蛮开心了。如果把这种状态称之为步入殿堂的哈,可能最重要的一条就是不要放弃自己。Linux内核代码是由一群优秀的工程师开发的,里面还会尝尝夹杂很多其它领域专业知识。普通开发者(譬如我)看不懂或者需要学习其它知识是家常便饭,时时会觉得自己和其他开发者比起来简直就是一头蠢猪,做这一行完全不适合没出路。这种感觉会经常冒出来  然而,对于系统软件开发的喜爱是由心而生的,随着越来越深入,我也么逐渐接受了自己没有预期那么优秀的现实,并鼓励自己蠢也不妨碍我喜欢这个技术

做Linux内核开发和其他软件开发差别不太大,要做到优秀都是要付出努力的,没什么高低之分。这毕竟只是一份工作,要认真对待,但它也不是生活的全部。作为一个工程师,一个中国人,如果通过参与这个技术,从很具体的细节做起,让生活更美好,让世界更美好,让我们彼此之间更和谐,这是很有乐趣的事情,也是我认识的很多比我优秀的多的内核开发者们发自内心的动力。

上图右一胖子是本人。

系统软件开发,坦诚说并不适合绝大多数人,但如果有缘能够参与其中,养家糊口没问题的。如果有朋友觉得好难,或者好苦,只要你还喜欢就不要放弃。你不孤单,还有很多“蠢货”和你一样,一边挠头苦逼,一边傻乐傻笑。


推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

专辑|C语言

我的知识小密圈

Linux内核工程师是怎么步入内核殿堂的?相关推荐

  1. Linux系统工程师--(1)Vsftpd服务的部署及优化与linux中内核级加强型火墙的管理

    Linux系统工程师 实验所用系统为Redhat-rhel8.2. 目录 Linux系统工程师 Linux的系统工程师--Vsftpd服务的部署及优化 一.ftp介绍 二.vsftpd安装及启用 三. ...

  2. linux内核工程师必须知道的三十道题

    1)      Linux中主要有哪几种内核锁? 2)      Linux中的用户模式和内核模式是什么含意? 3)      怎样申请大块内核内存? 4)      用户进程间通信主要哪几种方式? ...

  3. linux环境编程从应用,linux环境编程:从应用到内核

    <UNIX环境高级编程>(简称APUE)几乎是Linux领域程序员人手必备的一本书.但在掌握和理解APUE的内容后,又该如何继续提高自己的技能,如何更深入地理解Linux环境编程及其背后的 ...

  4. linux查看安装的所有内核,Linux怎么查看系统已安装内核

    当我们需要在Linux系统中安装一些软件而去下载安装文件时,一般都需要确认到底下载哪个版本的安装包,这就需要我们知道自己的Linux系统到底是什么版本.什么内核,下面跟着学习啦小编一起来了解一下Lin ...

  5. 【Linux 内核 内存管理】优化内存屏障 ③ ( 编译器屏障 | 禁止 / 开启内核抢占 与 方法保护临界区 | preempt_disable 禁止内核抢占源码 | 开启内核抢占源码 )

    文章目录 一.禁止 / 开启内核抢占 与 方法保护临界区 二.编译器优化屏障 三.preempt_disable 禁止内核抢占 源码 四.preempt_enable 开启内核抢占 源码 一.禁止 / ...

  6. 【Linux 内核】Linux 内核体系架构 ( 硬件层面 | 内核空间 | 用户空间 | 内核态与用户态切换 | 系统调用 | 体系结构抽象层 )

    文章目录 一.Linux 内核体系架构 二.内核态与用户态切换 ( 系统调用层 ) 三.体系结构抽象层 一.Linux 内核体系架构 Linux 内核最初的源码不足一万行 , 当前的 Linux 内核 ...

  7. linux netlink 编程示例(一)内核端

    Netlink是一种内核层与应用层通信的一种机制,比如说在做一个内核模块的时候,往往会需要应用层提供一些配置信息,这时候就可以使用netlink.netlink包括内核层和应用层,内核层注册一个net ...

  8. 十天学Linux内核之第九天---向内核添加代码

    原文:十天学Linux内核之第九天---向内核添加代码 睡了个好觉,很晚才起,好久没有这么舒服过了,今天的任务不重,所以压力不大,呵呵,现在的天气真的好冷,不过实验室有空调,我还是喜欢待在这里,有一种 ...

  9. linux下的系统调用函数到内核函数的追踪

    Original from: http://blog.chinaunix.net/uid-28458801-id-3468966.html 使用的 glibc : glibc-2.17 使用的 lin ...

最新文章

  1. PostgreSql与sqlserver对比杂记
  2. mui汉字图标_MUI从入门到项目实战(三)增加自定义icon图标
  3. Scrapy从理论到爬图
  4. 大数据解密之你的同事都跳槽到了哪些公司
  5. 动态模型之增压暂停【FunTester测试框架】
  6. c++ 实现outlook itemsend_2021智能C端冬季科创训练营作业已发布,请注意查收~
  7. Helm 3 完整教程(十):Helm 函数讲解(4)加密函数、编码和解码函数
  8. Springboot2.x 拦截器
  9. SQL2043N 与 linux的randomize_va_space特性
  10. WINDOWS10经常莫名其妙的卡死一会
  11. 聚合直播源码原生播放器php分享,原生聚合直播搭建源码
  12. 经典Flash MX 2004教程全集
  13. js日期格式化(Date format)
  14. 制造业IT规划与需求分析
  15. 修改电脑开机徽标教程
  16. Chrome浏览器安装本地插件
  17. centOS7下实践查询版本/CPU/内存/硬盘容量等硬件信息
  18. Bezier、B样条曲线曲面
  19. AHCI导致启动win7蓝屏的解决
  20. PTA Python程序设计-02

热门文章

  1. 单例模式到Java内存模型
  2. 轻操作动作休闲单机游戏《狂斩三国2》评测
  3. 从常识看中国经济社会-再续之续:套利
  4. Oracle 制造死锁和查询死锁
  5. 场景应用题目常见面试真题详解
  6. php按照文件名字排序,php readdir 排序问题,如何按照日期进行排序
  7. 通信与计算机网络FSC,数据通信与计算机网络概述信道习题.pdf
  8. Linux samba的配置和使用
  9. 大数据之Kafka入门简介
  10. 数据库函数依赖及范式