共计 1184 个字符,预计需要花费 3 分钟才能阅读完成。
你好,欢送来到我的厨房。
我是 Anakin,一名操作系统工程师,曾先后就任于华为和腾讯的 Linux 发行版研发团队,参加过 openEuler 和 openCloudOS 两大国产发行版社区的创立工作,同时也是一名开源文化爱好者。
正如名字所说,这儿并不是一个一般的厨房,咱们要学习的不是烹饪食材,而是 如何创立一个操作系统,兴许你很快就会发现,这两者有着殊途同归之处。
做开源操作系统就像开一家餐厅,首先要明确餐厅的定位,是做西餐、中餐还是日料,也就是说要面向服务器市场、嵌入式市场还是桌面市场,面向不同的市场,意味着要提供的菜肴(软件包)的品种和数量都齐全不一样。
明确了餐厅的定位,也就明确了要做哪些菜,而做出可口饭菜的第一步也是最重要的一步,是选取优质的食材(开源软件选型),咱们要抉择的供应商(上游社区)肯定是口碑好的、服务好的(品质过硬、社区沉闷),能力确保做出的菜能满足客户的要求。但仅有食材是不够的,咱们还要为每种食材编制菜谱(编写 Spec 文件),将它们烹制为可口的菜肴(构建),客户不须要感知烹饪(构建、配环境、解决简单的软件包依赖关系)的过程,只需点菜(装置)和品味(运行)即可。
制作 RPM 包,俗称打包,是指编译并捆绑软件与元数据(例如软件全名、形容、失常运行所需的依赖列表等等)的工作,目标是让软件使用者能够通过包管理器简略地装置、删除或者降级他们所应用的软件。
要成为一名优良的零碎工程师,就像成为一名顶级大厨,任何大厨成长的第一步肯定不是上手学做菜,而是要相熟、辨认各类食材,可能纯熟的洗菜、切菜,把握各类菜式的品性。同样,打包也是零碎工程师的基本功,学习打包的过程就是学习筛选食材、解决食材的过程,这一过程是简短繁琐却又无奈绕过的,只有这样能力逐步理解食材的特点、造就做菜的品尝(把握开源软件的选型、构建、装置、配置、依赖关系解决),烹制出真正的美味。
为什么要写这样一个专栏呢?因为时至今日,国内操作系统和根底软件相干的人才仍然很单薄:
- 尽管国内程序员的数量一劳永逸,但大多集中在前端、Java/Go、人工智能等热门畛域,懂根底软件和操作系统的程序员仍然是多数;
- 尽管大学里的计算机专业很热门,操作系统也是必修课,但课程内容通常局限于讲授理论知识,这些理论知识也集中在内核(kernel)层面,没有一门课程教给学生如何去构建一个残缺的操作系统,Ubuntu、Fedora、SUSE 等国外支流发行版仍然是最风行的。
在这个专栏,我将分享对于构建一个 Linux 发行版的所有内容,包含但不限于打包、构建、许可证、破绽治理、生命周期、版本路线等常识。这些常识间接来自于我在华为和腾讯的实际所学,我自己也在致力成为更好零碎工程师的路线上,所学无限,旨在为中国操作系统人才培养奉献一点绵薄之力,欢迎批评和倡议。
如果你筹备好了,就请走进零碎厨房,和我一起,烹饪最美味的 OS 发行版吧!