Chinaunix
标题:
内核开发的前途在什么地方,发展方向有哪些?
[打印本页]
作者:
剑魂箫心
时间:
2015-11-25 22:34
标题:
内核开发的前途在什么地方,发展方向有哪些?
本帖最后由 剑魂箫心 于 2016-11-16 09:00 编辑
2016年11月16日更新:
这篇帖子是我大四上学期找工作时发布的,距今已有一年,现在我从事的工作虽然和内核没什么关系,但是我依然在业余时间继续学习内核,跨过了0.12内核,学过了2.4内核的内存管理,现在借着2.6内核的书在研究4.4.30内核的MM子系统。时至今日,我依然是一个菜鸟,我想一定有很多内核学习者在学习的道路上踽踽独行、苦苦摸索,内核开发的速度越来越快,内核文档少之又少,几乎所有的资料都被时代远远地抛在后面,入门内核开发的难度越来越大,如果能在这条道路上得到各位高手、前辈的指点,不管是关于职业生涯还是关于技术路线,我们都将感激不尽!
-----------------------------------------------
以下是原贴:
-----------------------------------------------
我现在是一名大四学生,专业学的是软件工程,已经基本看完了《Linux 0.12内核完全剖析》这本书,但是这本书与现在内核差异比较大,现在也编译过2.4内核(毛德操先生的书中所用内核),但是毛德操先生的书也是比较厚,所以在开始研究之前先来请教下各位先辈。
在今年校招时我也是一心想做内核,但是无奈各大企业这方面招的人太少,移动、前端、Java岗位那么多,内核岗位根本找不到,即使有,那也是研究生岗位。曾经兴致冲冲去投了360的Linux内核工程师,结果做的笔试题全是Windows内核,至今不明白咋回事。
目前拒掉了一份深圳8000的offer,因为工作内容是机顶盒C/C++语言开发,想了想还是喜欢内核相关,又获得了一份与操作系统有关的offer,公司名就不说了,工资加上补贴有点低,也就5000吧,毕竟是二线城市,已经签了。我很想去红帽,可惜他不收应届生。现在在我看来,研究内核似乎并没有很大的出路,无非是为系统编程增加了点基础而已。我确实喜欢内核,但是在工资薪水面前还是有点不甘心,毕竟同学做前端的做移动的都那么高,所以我在想是不是应该向Linux系统编程发展一下,学学C++,学学服务器编程,毕竟生存乃是大事......
希望各位大侠能够根据自己的职业经历给点指导,小弟感激不尽。
作者:
amarant
时间:
2015-11-26 09:10
很多人都是这么迷茫,徘徊过来的。说说我自己的一些理解。
最近常想计算机是什么东西,计算机其实就是一个解决问题的工具。计算机包括硬件,软件。对于许多固定的问题寻求一种解决方法,可以调整的点很多,可能会设计专用芯片,可能会在软件上进行设计。而操作系统就是一个为了方便解决问题提供的一种通用平台。归根结底,kernel 只是为了服务其他软件的一种基础软件。所以可想,为什么做应用的公司这么多,而做 kernel 的公司很少。
kernel 的门槛很高。做 kernel 的工程师不像一个程序员,反而像一个学习系统架构的人。大部分人只是改改defconfig,dts文件,或者在某一个模块加几行代码。更多的时间是去弄懂一个子系统的工作原理。
kernel很多特性都是出于用户的需求而增加的,即在一个应用中,有些东西在userspace不能做了,那么在kernel中增加相关的支持。所以我认为,一个Linux Kernel工程师首先就要会进行系统编程。例如,如果如果研究调度,至少需要明白 user space 进程需要哪些管理机制吧。我看了不少 kernel 的大牛都有一些其他运行在 user space 的软件作品。
当然要写出优秀的软件,还是必须理解 kernel 的工作原理的。我有点倾向于把 kernel 当作和 算法 一样的课程,当作对自己提升功力的必修课,而不是专注在kernel上。到了对计算机理解到一定层次,想做什么就做什么。多注意平时的编程锻炼,多写代码。编程这事光看代码是不够的,之前也有说了,搞kernel是很少会有自己操刀的时候的,门槛太高,而且让一个新手来重构大牛的代码想想也是不可能。所以我认为在学习kernel 的同时,可以做一些user space的开源项目,不要把编程能力落下。还有一种可能就是,你进入了搞kernel 社区中feature的公司,有mentor手把手带你怎么搞kernel,例如先分派一些简单的改函数名字,移除废弃接口。如果有这些的机会那是最好的了。
对于做kernel的公司,二线城市肯定是不行的。只有大城市才有好的机会,一部分是芯片公司,专注点有体系架构,性能功耗;有些是网络公司,做虚拟化,安全,文件系统之类的。至于芯片的下游公司做的大都是驱动集成。
因为kernel是非常好的一个开源项目,里面问题很少。一般的公司都没有能力去改里面核心的东西。国内好像intel/ibm做的挺好的
作者:
yoyosys
时间:
2015-11-26 09:43
楼主大黄小号
作者:
九阳神功爱喝茶
时间:
2015-11-26 09:46
同样很疑惑啊。我从大四保研开始就跟着实验室做无线网卡的ath9k驱动的研究,还完成了一个小小的项目。两年里面我研究了具体是怎么MAC层是怎么封装成帧,驱动层是怎么设置传输参数,数据帧,beacon帧,探测帧,认证帧的发送与接收流程及其功能等等。
在科研中遇到过很多问题,如浩如烟海的代码,往往一个函数被几十个函数调用,一个函数也是往往调用几十个函数,怎么debug,无法连接等等问题,最后也终于解决了。我师姐的博士论文中有一个章节的实验部分都是用我的数据完成的,也是蛮有成就感的。
到了今年九月份师兄找工作的时候,发现几乎没公司招收linux内核开发,更不必说无线网卡驱动这一块了,对应届生的要求基本就是算法,感觉自己学的在工作中好没用啊,不禁茫然了。
好茫然啊,求大神指导。。。
作者:
shang2010
时间:
2015-11-26 10:45
神信息都是哪里挖掘的啊
作者:
剑魂箫心
时间:
2015-11-26 11:20
本帖最后由 剑魂箫心 于 2015-11-26 11:21 编辑
回复
2#
amarant
是极,我当初想学这个是因为看Linux C语言开发的书中有很多函数不知道内部原理,用起来有点晕,所以想看看内核了解一下,结果这一看就是一年,其实才懂了点皮毛。看来内核不能急功近利,要通过进行Linux系统编程逐渐深入。其实我现在的公司也是围绕内核做上层应用开发,能真正在内核上动手的公司恐怕只有红帽、Intel这类的了。我要时刻准备好向北京进军。。。
多谢版主老大回复
作者:
剑魂箫心
时间:
2015-11-26 11:21
回复
3#
yoyosys
哪有。。。我就这一个号
作者:
剑魂箫心
时间:
2015-11-26 11:24
回复
4#
九阳神功爱喝茶
你这个研究的也的确是太深入了,感觉你这个应该算是硬件通信范畴了,软件公司和互联网公司需求量不大,也许手机公司会需要一些,比如小米这类。
作者:
剑魂箫心
时间:
2015-11-26 11:25
本帖最后由 剑魂箫心 于 2015-11-26 11:25 编辑
回复
5#
shang2010
什么意思啊 ?
作者:
九阳神功爱喝茶
时间:
2015-11-26 14:19
研究生都这样,学的东西不一定在工作中有用,没让去弄仿真已经是够好的了
回复
8#
剑魂箫心
作者:
amarant
时间:
2015-11-26 14:24
回复
6#
剑魂箫心
北京压力太大。房子户口很难搞定。不建议去。其实做技术嘛,只要自己有心,在哪都可以做的很好。在二三线城市生活压力小,如果一心扑向内核,每天看mail-list,读lwn。坚持几年下来,多少也能慢慢参与到里面去。
作者:
剑魂箫心
时间:
2015-11-26 16:54
回复
11#
amarant
其实大部分有心去北京的基本上都是干几年再去二线城市,房价让人无法留下。。。
作者:
amarant
时间:
2015-11-26 17:16
回复
12#
剑魂箫心
小城市工作比较轻松,有很多时间去折腾技术,只要有心,能很牛
大城市工作很忙,很多工作内容对自己并无多大能力上的帮助,几年下来,可能反而技术不怎么样。
其实技术也不等于一切,很多人琢磨技术都是为了赚钱,如果最终目的是赚钱的话,走技术路线反而歪了
作者:
剑魂箫心
时间:
2015-11-26 18:31
回复
13#
amarant
真是个纠结的问题
作者:
dorodaloo
时间:
2015-12-03 13:34
很多人都是这么疑惑的
一般的公司
都没有能力去改里面核心的东西。
这样,学的东西不一定在工作中有用
作者:
kerryxi
时间:
2015-12-08 21:53
业界的10000小时,才可以算专家。真是内核,至少值得4年实际经验才能算熟悉(再读一个本科),8年才能算专家(再读一个硕博连读)。
开始从设备驱动入手,单一的比较简单,就可以在各大设备开发公司,嵌入系统、通信系统、穿戴设备、智能设备公司干活了。
然后扩展Kernel的实际经验,对内核lock,debug, process schedule, timer, clock, filesystem, memory等逐步拓展了。
技术学习关键是建立自己的核心技术优势,先专注方向,做到最精,然后再扩展其他能力。
作者:
mordorwww
时间:
2016-01-17 11:02
本帖最后由 mordorwww 于 2016-01-17 11:03 编辑
有两个方向,arm和x86,前者驱动多,后者云计算
差别还是有一些
作者:
wp22_justdo
时间:
2016-01-18 16:05
和你又类似的疑惑啊,不说内核开发,我2015年本科毕业想找个嵌入式驱动开发的工作都难,当初在班上也算是佼佼者,同学些搞游戏的搞数据库的搞安卓 java的混的风生水起,而我却在为了生活而犯愁。。。感觉好迷茫
作者:
darling54454
时间:
2016-01-20 10:37
回复
19#
wp22_justdo
一样一样的。也是15年毕业生,不过工作还是很多和内核相关的,支持flash阿,或是其他一些设备。
也就一个小公司吧,人数就70-80人,没几个学习内核的。
还有就是做Linux下的程序开发了。。
不过都会在空闲时间看看内核这个玩意。。
作者:
剑魂箫心
时间:
2016-01-27 21:03
回复
19#
wp22_justdo
校招的时候我同学都拿offer拿到手软,室友一个做IOS去了腾讯,一个做java去了同花顺,同班同学还有去博雅互动的,去华为的。我当时写个简历都犯愁,做内核没个三五年哪有拿得出手的东西。
作者:
剑魂箫心
时间:
2016-01-27 21:05
回复
16#
kerryxi
内核这东西就是短时间不见成效,学习路线非常陡峭,需求量很小。
作者:
chouxiaoya8100
时间:
2016-02-16 22:36
mark, 悲催额额额
作者:
bensenq
时间:
2016-02-18 16:27
回复
12#
剑魂箫心
找到工作没?来我们公司吧,虽说是二线城市,但研究系统架构的,有你好玩的,绝对能够满足你的兴趣!
作者:
剑魂箫心
时间:
2016-02-18 20:15
回复
24#
bensenq
难道是南大富士通
作者:
bensenq
时间:
2016-02-18 20:17
回复
25#
剑魂箫心
不是。
作者:
剑魂箫心
时间:
2016-02-18 20:23
回复
26#
bensenq
济南浪潮?
作者:
ychhj
时间:
2016-04-20 09:18
不可能一口吃成一个胖子的,做内核只能一步步来。内核太庞大了,没有个四五年的知识与实践累积做不出什么来的。可以边做应用边研究内核,等到了有一定实力了再去搞内核也不错。至少不会让自己饿肚子
作者:
剑魂箫心
时间:
2016-04-20 09:29
回复
28#
ychhj
对,吃饭是第一大事。。。
作者:
wangguohao_2009
时间:
2016-05-21 21:09
目前还是打算做内核开发?
据我所知,大陆内核开发知名的地方:redhat,intel,IBM,南大富士通,华为,阿里.这些公司这些都是在每年内核开发者会议上面有演讲的(有大牛).
发展方向,无非就是kernel的一些子系统,想学的好,还是要有人和环境很重要.
Team的话,我知道的不多,也就是redhat大陆这边有kdump相关的,富士通有btrfs.其余的子系统我并不知道大陆的开发.
有朋友去做内核开发了(南京),导致我对内核开发一般是先从修bug发patch开始.
其实我的第一份实习就是做kernel相关的工作,我感觉第一步开始就是蛮难的,所有能先进入具有开源氛围的公司(rhel,ubuntu)慢慢接触,有人可以给你解惑,然后找到自己感兴趣的子系统多和upstream的人混混脸熟,尽量发点patch还是蛮好的.
作者:
剑魂箫心
时间:
2016-05-22 12:29
回复
30#
wangguohao_2009
我现在签了一家。。。嗯。。国产操作系统相关的企业
。。。虽然工作内容和内核关系不大,但是我想环境氛围应该有利于我进一步学习。
作者:
我爱你我的菜
时间:
2016-06-03 09:21
回复
13#
amarant
这个说的在同意不过了,技术核心是为工作服务的,不要为了学习技术而学技术,个人工作能力的体现是锁定目标,解决问题的能力
作者:
我爱你我的菜
时间:
2016-06-03 09:22
回复
31#
剑魂箫心
咱俩可能认识。。。
作者:
jy15569597
时间:
2016-06-07 16:15
本帖最后由 jy15569597 于 2016-06-07 16:17 编辑
有些迷茫,毕业四年,都是在做防火墙、负载均衡相关的东西。为实现具体需求做过一些内核二三层的修改,也做过一部分用户空间精简协议栈的内容。因为一直喜欢网络安全,所以想找个安全相关的工作,但很难找到需要我这样经历的。不知道下一步该怎么走。。。
作者:
_nosay
时间:
2016-07-01 09:17
回复
24#
bensenq
在哪
?
作者:
goingstudy
时间:
2016-07-14 23:22
是啊,大牛门现身说法阿,我等菜鸟真是迷茫阿
作者:
mordorwww
时间:
2016-07-22 13:38
goingstudy 发表于 2016-07-14 23:22
是啊,大牛门现身说法阿,我等菜鸟真是迷茫阿
是啊,大牛门现身说法阿,我等老菜鸟真是迷茫阿
作者:
1285994968
时间:
2016-11-05 13:36
本科生工作已经找完了,对于找工作的同学,建议学好基础,网络,操作系统,常用数据结构与算法等,然后先学好系统编程吧。。。。总感觉,系统编程都不熟悉,对别人张口内核闭嘴内核,怪怪的。
作者:
剑魂箫心
时间:
2016-11-05 13:55
回复
38#
1285994968
这帖子是我去年校招发的,我现在已经工作了4个月了。
系统编程我在大二下学期学过,正是因为学了系统编程并且对API的实现很好奇,这才促使我在大三开始学习内核的。我大一时想学网络来着,但是那时候有人说学网络要用Linux,这才开始学Linux,后来一步步走来离网络越来越远,直到现在依然决定在内核这条路上继续走下去。
作者:
学到老lll
时间:
2017-08-07 14:10
想问一下楼主现在还在做内核?还是去作应用层开发了?分享一下这几年的经验,在帮分析分析Linux开发的各个方向的前途,谢谢
作者:
915086731
时间:
2018-03-15 15:35
做内核的,很多事芯片厂商的驱动修改,一定要去一流公司,至少华为一个级别的。
或者去互联网公司做内核调优,一定要做网络方向的。比如协议栈。
市场上没有其他太多的需求了。
作者:
剑魂箫心
时间:
2018-03-22 08:58
回复
40#
学到老lll
把内核当兴趣了,很难找工作的
作者:
btrace
时间:
2019-09-20 15:50
阿里云常年都在招内核开发的,不知是人难找,还是要求高
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2