Linus Torvalds上个月正式发布了新版本的Linux Kernel 5.0。虽然版本号直接从4增加到5,但它实际上是一种“故意操作”,Linus不喜欢颠覆号太大。
大型版本升级是否意味着Linux内核也发生了重大变化?
目前,Linux在物联网,云计算,超级计算机,人工智能等领域发挥着越来越重要的作用.5G和边缘计算等技术正在开始普及,技术创新将如何为Linux从业者带来。机遇与挑战?作为一个“超级”的开源项目,虽然Linux总是在幕后而且对普通人来说不是很熟悉,但作为开发人员我们应该关注它。
为此,我们邀请了资深的Linux内核开发人员Uncle Uncle来讨论Linux开发人员的职业前景,Linux的未来发展以及如何为Linux内核贡献代码等主题。
以下是访谈的内容。
你好,愚蠢的叔叔,让我先介绍一下自己,并与大家分享最近与Linux内核相关的工作。
大家好,我是一个笨叔叔。我目前在上海紫竹的一家芯片公司担任FAE职位。 FAE是现场应用工程师,技术支持工程师,负责客户支持。
我从大学到现在已经工作了15年,我的工作基本上与Linux有关。第一项工作恰好是客户支持,当时英特尔的XScale移动处理器非常受欢迎,我们为XScale处理器开发了开发板。在那之后,我还在研发工作了一段时间,现在我必须回到FAE的旧路线。
除了在工作中使用Linux内核之外,我还利用业余时间编写书籍并记录与Linux内核相关的相关视频。多年来我一直在考虑一个问题:作为一个有兴趣进入Linux内核领域的小伙伴,我怎样才能快速入门?最近我刚刚发表了《奔跑吧Linux内核 *入门篇》,分享了我在这个问题上的经验和经验。多年来在Linux内核领域,您如何看待Linux开发人员的职业发展?
总体而言,Linux开发人员在中国的职业道路非常光明。因为除了桌面领域,Linux现在是操作系统的绝对霸主,而国内对Linux工作的需求也非常强劲。
另一方面,自去年中兴事件发生以来,国家越来越重视芯片和操作系统领域。尽管操作系统已经开发多年,但目前还没有完全自行开发的通用操作系统。据了解,许多大公司正在秘密开发自己的操作系统。例如,据报道,华为一直在开发备份操作系统。
Linux内核作为底层项目,那么Linux开发人员的工作也相对较低,主要有哪些?
Linux内核有很多工作要做,具体取决于公司和不同的工作。
例如,如果现任公司是云服务器供应商或游戏制造商,并且该部门是IT基础架构部门,那么您的基本工作是Linux操作和维护,这通常称为“网络管理”。
对于Linux操作和维护,业界也建立了评估标准,大致分为三个级别:初始,中级和高级:
初学者:掌握主要Linux服务器发行版的安装,如RHEL和CentOS;维护多个服务器,熟悉常见的Linux命令和RHEL公共服务。
中级:精通SHELL脚本或Python语言,为操作开发自动化脚本。
高级:了解有关Linux内核代码的更多信息。了解模块的核心并根据企业的需求优化代码级别。
在BAT和华为等公司的Linux运营和维护中,有许多Linux内核专家对内核的某些核心模块有深入的了解和了解,例如内存管理,文件系统,IO性能和虚拟化。他们通常积极参与Linux社区的技术讨论,并向Linux内核提交许多补丁。这部分国内阿里巴巴和华为做得最好。在工资方面,主要的运营和维护工资普遍较低,上述先进的运营和维护基本上是一百万年的工资开始。
除Linux操作外,还有另一种类型的公司使用Linux来构建消费者嵌入式产品,移动电话,可穿戴设备,物联网和工业嵌入式产品。在中国,这些公司恰好是Linux用户社区的主力军。
一般来说,这些公司有一个共同点,那就是最终交付给客户的是产品,而Linux只是一个基本平台或载体。最终用户可能甚至不知道该产品使用Linux内核,但这并不妨碍他们需要大量的Linux开发人员——,包括Linux内核驱动程序和Linux应用程序开发人员。对于Linux内核开发人员,该公司提供这些类型的工作,工作需求是最大的Linux驱动程序开发工程师,测试工程师,其次是Linux,最后是Linux内核优化工程师。此外,这些公司通常使用第三方芯片提供的解决方案,如Qualcomm,MTK,TI等。芯片公司将提供一套可用的Linux板级开发板(BSP),其中包括参考计划的BOM,驱动程序和源代码。但是,通常开发产品的公司会取代参考设计的外围设备,一个用于降低成本,另一个用于区分产品。如相机,屏幕和WiFi芯片。因此,这些进行产品开发的公司需要大量的Linux驱动程序工程师才能进行迁移。
使用第三方芯片解决方案的公司的另一个特点是芯片公司提供的参考代码仅可用,并且尚未在工业产品级别进行压力测试和复杂环境测试,这项工作要求公司开发产品独立。所以他们还需要很多Linux测试人员和开发人员。
最后,还有一类值得一提的公司,即高通,英特尔,MTK,海思和展讯等芯片公司,他们对Linux内核的底层开发人员有着长期的需求。要知道开发SoC不仅仅是开发与SoC相关的Linux驱动程序。为了吸引客户,芯片公司需要开发一个名为Thorkey Solution的完整解决方案,该解决方案涉及许多Linux开发人员。可以完成。
这是Linux内核的一部分,Linux开发人员经常与社区密切联系,但也会优先考虑大公司开发自己提交给Linux内核社区的驱动程序,以获得更好的支持。
有兴趣为Linux内核贡献代码的开发人员可以获得哪些经验分享或指导?
这是一个很好的目标。我的建议是先爱这份工作。其次,您应该逐步实现目标,而不是急于为Linux内核贡献代码:
设备的驱动程序相对简单,因此请从您熟悉或感兴趣的驱动程序开始,并尝试阅读Linux社区的最新驱动程序代码。
阅读完代码后,您可以尝试调试代码并探索可以修改的区域,例如编译警告,不合理的代码等。
对于有问题的代码,您可以向社区提交自己的补丁,但请注意,在提交补丁之前,您应该了解Linux社区的文化和git工具的使用。相关内容在《奔跑吧Linux内核*入门篇》中描述。如果您从未接触过Linux,那么它完全是白色的,所以从Linux系统开始,比如Ubuntu,并将其用作主操作系统。
实际上,Linux内核开发涉及多个域交叉,例如C语言,汇编语言,操作系统和体系结构。有兴趣的学生可以逐点学习和提高。
Linux内核的更新速度相对较快。是否有必要保持与社区一致的生产环境的进展?升级需要考虑哪些因素?
Linux Kernel 5.0于上个月正式发布。整体变化并不大,从Linux内核4.20到5.0只是一个后期版本升级。 Linus自己也说过直接升级主版本的原因是因为他不喜欢非常大的颠覆号码。他觉得手脚都不算数。
至于版本节奏是否应与社区保持一致,我认为这与产品选择有关。以云服务器供应商为例。他们通常使用RHEL或CentOS系统,但现在最新的CentOS 7.6使用3.10内核。建议不要升级到最新的Linux内核,因为风险太大。
重要的是要知道这些发行版中使用的3.10内核已经过Red Hat的大量Linux内核工程师和测试人员的严格测试。这是一个相对可靠的版本。毕竟,一般公司缺乏这样的实力。每个人都选择Red Hat的原因是要相信Red Hat在Linux社区中的实力和影响力。
因此,为了稳定起见,最好按照制造商的步伐进行升级。
另外,有些公司需要使用Android系统进行产品开发,这类公司一般都遵循Android版本,或者使用芯片公司提供的BSP包版本进行二次开发,他们不会急于升级到最新版本Linux内核。 。
如果开发人员出于个人兴趣,并且想要将他的个人开发环境升级到最新版本的内核,那么这自然不成问题。