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