时政
财经
科技
虚拟货币
其他
登录
#操作系统移植
关注
Andy Stewart
19小时前
你们还是喜欢听故事 我今天给你们讲另外一个Linux系统工程师的故事 还是2015年,我们以前的团队为了适配一款国产芯片,具体芯片的名字我就不讲了 那款芯片就只有三个东西glibc、kernel和gcc,再也没有其他任何东西了,我们要把这款芯片从零撸起来,难度非常高。 很多人说,这不就是LFS嘛,根本没那么简单,一个操作系统ISO预装3000个包,一个仓库要10000个包,这些包如果在X86,确实就是LFS的事情。 但是我们要解决的是,从零构建整个操作系统文件系统,特别是一些底层的软件包,比如数学库、向量库、编程语言相关的库,每个包都有一堆芯片指令集分支,代码里到处都是 ifdef 的宏,用来包括特定CPU平台的平台代码。 我们要移植的工作不光是编译一下,而是要把这个库的X86汇编翻译成国产芯片的汇编语言,这里需要对计算机架构、X86指令集、国产芯片指令集、数学还有对特定编程语言都要了解才能干。 把指令集、国产芯片寄存器和数学算法补齐以后,才能编译,这种级别的编译最大的问题是软件包的循环依赖,因为确实太严重了,比如三个包A、B、C,他的依赖关系不是 A -> B -> C, 他的依赖关系是 A -> B, B -> C, C -> A, A -> C, B -> A。 常规的方法根本无法编译,我们只能把某些包源码分拆了,比如把A分成两部分,伪造了两个A1 A2 的包,先把B依赖A的部分弄好, B1 B2 编译出来,再回头来编译A的缺失部分。 这种底层构建的方法就叫作,多次编译法,多次编译才能解决芯片指令集底层缺失太多包又要从零构建的问题。 30人干了半年,终于干到了X11这一层,可以说所有底层命令行的环境都干好了,这时候已经到合同最后期限了。商务同学说加把劲,我说,这个不是加把劲的问题,你换个团队50人干两年都没法从零启动一个芯片,我们30人干半年到X11已经非常牛逼了,干不了,真干不了,干不动了,赔钱吧,干不了 最后没办法,甲方来武汉,和我们喝一顿酒,问,全部干完要多久? 我说还要给我们半年时间,那半年怎么干的,30人专门移植图形环境的东西,Gtk、Qt、浏览器,浏览器还要移植JavaScriptCore和JIT,浏览器交叉编译要1天1夜,原生芯片编译最少5天一次,错一个参数就要重来,怎么知道参数对没对呢?上一次5天的编译结果会告诉你。 另外一个团队几十人把桌面环境从QML全部用Qt重写,因为国产芯片不支持OpenGL。 最难受的是,干到8个月的时候,GCC有bug,那个bug是生成的汇编代码有问题,会造成我们另外一个桌面环境内存随机崩溃。 哎,就这样一个团队兵分三路:底层包/图形包移植、JIT优化、桌面环境重写,又干了一遍。 一年的时间,从零支持了一款芯片,同时把桌面环境重写了一遍,那一年所有人,包括我,都累垮了。 所以,我从deepin linux出来以后,我记得阿里云一个技术人给我打电话要招募我,炫耀说他们在这款国产芯片用GCC 5.3编译了整个系统,当时我都没理他。 现在这个故事就是当年的答案:整个大树都是我们60人干了一年的工作,底层的数学库、汇编指令集、编译器、桌面环境等等1万个软件包都是我们构建,你们就像余业玩Linux那样,按照LFS的方法重新编译一遍,你也好意思说操作系统是你们做的?这就是国内这些互联网大公司的水平,太low,也是大多数玩Linux的人的现状,水平太差还喜欢攻击人。 好了,喜欢听我创业故事的朋友,欢迎点赞转发 相信我们技术实力的朋友,欢迎私信买懒猫微服,包你满意!
#国产芯片
#操作系统移植
#底层构建
#技术挑战
#团队合作
分享
评论 0
0
个人主页
通知
我的投稿
我的关注
我的拉黑
我的评论
我的点赞