那天下午我本来只是去软件园附近找人吃饭,结果被一个穿灰色卫衣的程序员拉住聊了两个钟头。他裤子上全是猫毛,头发像三天没洗,开口第一句就是:“你知道国产操作系统这东西,其实比互联网公司那套历史有意思多了吗?”我一开始以为他要推销什么开源项目,结果他从背包里掏出一摞旧光盘,从红旗Linux的启动盘一路讲到最近的统信UOS,像翻家里的老相册一样,把二十年的国产操作系统往事全扯了出来。
这个人的身份很普通——一个接外包的自由职业程序员,做过银行网点终端适配、做过政务系统的信创迁移、帮老牌国企把跑了十几年的业务系统搬到国产环境里。他既不是核心研发,也不是行业高管,但他这二十年基本没离开过这条赛道。他说的一句话让我印象特别深:“国产操作系统的历史,不是发布会讲的,是无数个我们在客户现场改Bug改出来的。”这篇文章,就是那天聊天的记录,加上我后来自己补的功课。如果你是程序员,或者对国产OS这二十年的真实状态有好奇,那这篇应该能给你一个完全不同于官方口径的视角。
1. 一个穿卫衣的程序员,是怎么被“国产OS”缠上二十年的
1.1 他说他1999年就在装Linux,原本只是为了不花钱
老周,也就是那位卫衣程序员,1999年大二,计算机专业的。那时候Windows 98正红火,但学校机房的机器有一个共同特点:内存只有32兆,跑Windows经常卡到鼠标飘移。老周在一个周末逛电脑城时,从一个卖盗版盘的摊子底下翻出一张光盘,上面手写着一行字,“Linux 6.0,免费”。他以为是不要钱的Windows,回去装在宿舍的旧电脑上,结果开机看到的是一个黑底白字的登录界面,他傻眼了。
那张盘其实就是后来的红旗Linux前身相关的那批早期发行版之一。老周说,他当时为了进这个系统,去图书馆翻了两个月资料,最后在BBS上问到一个师兄,才知道登录名写root,密码自己设。他说那会儿没有人想什么“国产化战略”,大家的想法特别朴素——Windows要钱,Linux不要钱,能装成功就算本事。“我们当时觉得,这东西早晚能成,因为便宜。”
这个开头很重要,因为后来我会发现,很多如今做国产OS商业化的团队,早期记忆都是这样的:从盗版盘、从BBS、从老旧的实验室机器上长出来的。它一开始不是国家任务,而是一群技术青年的业余折腾。
1.2 他后来接的第一个外包活,就是给政务系统做国产化适配
老周毕业后没进大厂,他的第一份正经工作在一个做系统集成的公司,主要客户是区县级的政务部门。2004年前后,他接了一个小项目:把一套户籍查询系统从Windows平台迁移到Linux上。需求方的理由很简单,省采购费。但等老周跑到现场才发现,问题完全不在操作系统本身,而在那些业务软件——有的依赖IE的ActiveX控件,有的用着一套1998年的VB程序源码也找不到了,还有一台打印机只认Windows驱动。
“那个项目折腾了四个月,最后我们是在Linux里装了个Windows虚拟机才跑通的。”他说的时候笑了一下,“后来这个方案还成了公司的标准交付模板。”
老周从那以后就被打上了“搞国产化”的标签。之后十年,他换过三家公司,但他始终在处理同一个类型的问题:把老的Windows业务,搬到新的国产系统上。他没有参与过任何一个国产操作系统的核心开发,但他比大多数核心开发者更了解这些系统在真实场景里摔了多少跤。
2. 从红旗到麒麟:那些年我们是真信,也是真踩坑
2.1 红旗Linux没有失败,它只是商业化跑丢了
说到国产操作系统,绕不开红旗Linux。老周对红旗的感情很复杂。他说自己在2001年攒了两个月的钱,买了一套红旗Linux桌面版2.0正式版,盒装的,里面是三张光盘和一本像砖头一样的用户手册。那套系统的桌面仿了Windows的样式,开始菜单、任务栏、我的电脑,都用类似的逻辑。对一个从DOS时代过来的程序员来说,这玩意没有陌生感,甚至有点惊喜。
但红旗的好日子,从产品层面说,其实从来都不算好。老周站在开发者的角度提了一个很细节的观察:红旗Linux早期的默认桌面环境,确实想做到“像Windows一样易上手”,但这恰恰让它陷入了两难——技术圈的人觉得它不够开源,普通用户又觉得它性能差、兼容性差、软件还少。你说它是开源的,但它很多驱动和商业组件是闭源的;你说它是可日常使用的,但装上之后连个QQ都很难跑畅快。
老周说:“红旗的命,一半是商业困局,一半是生态没长出来。它不是没被人用过,是被用的人抱怨太狠了。”2004年前后,红旗曾经一度做到办公软件预装、税务系统预装,但那几年的节奏,已经明显跟不上了。等到2013年中科红旗宣布解散清算的时候,老周并不意外:“那个公司早期是实验室思维,中期又想完全照搬微软的卖许可证模式,两头都没抓住。”
2.2 银河麒麟的两次推倒重来,一次败在基因,一次败在时机
如果说红旗代表的是市场化探索,那麒麟代表的则是另一条路线。老周给我理了理时间线:国防科大最早做银河麒麟那阵子,用的是FreeBSD的内核,不是Linux内核。为什么用FreeBSD?他猜测,这是因为FreeBSD的网络栈和稳定性在当时被认为是优秀的,而且BSD协议的授权方式更适合军方背景的做二次开发。但问题是,FreeBSD在桌面生态上的积累比Linux还少,应用软件更是几乎没有。
后来银河麒麟推倒重来,转向Linux内核,相当于把过去几年的成果大部分人推掉重做。“你知道那次重构最伤的是什么吗?不是代码,是信任。”老周说,他以前帮一个单位部署过基于FreeBSD内核版银河麒麟的服务器,后来系统升级要换到Linux内核版,原来的上层应用就得重新适配,一些驱动直接失效,客户单位的工程师骂了他整整半年。
他从这事的总结是:操作系统的内核选型,从技术上讲可以论证,但从生态上讲,晚一步就是天壤之别。Linux内核在2005年之后的社区驱动库越来越厚,第三方软件几乎都优先支持Linux,FreeBSD在这些方面持续落后。银河麒麟转向Linux的方向本身没有错,错在“早期选型时过于相信自主的路标,而忽略了整个全球生态的演进速度”。
2.3 十年的核心困境:不是没有人用,而是用完就崩
这一段老周说得特别直白。他说从2000年到2010年这十年,国产操作系统面临最大的困境不是技术不行,而是“装上了用几天就崩”。他举了几个高频问题:
- 同型号打印机的驱动经常找不到,厂家的Linux驱动要么不做,要么做得极简,只保证能出纸,不保证颜色和排版。
- Flash和多媒体解码组件授权不清,网页上的视频没法播,很多教学、会议系统直接瘫痪。
- 办公文档兼容性差,WPS当年在Linux下的老版本和微软Office格式转换经常出现段落错乱,表格合并单元格直接失效。
那会儿的国产OS用户,很多是单位领导要求“装一台试试”,装上之后体验一轮,最后结论就是“不好用,还是换回Windows吧”。老周坦言,这个循环持续了十年,直到信创重启之后,才有人开始认真解决那些最不性感的兼容问题。
3. 三个决定国产操作系统命运的岔路口
3.1 岔路口一:用Linux内核,算不算自研
聊到操作系统自研,绕不开一个争论:基于Linux内核,算不算国产?老周对这个问题的态度非常清楚:“如果你把Linux内核从0开始重写一遍,今天任何一个国产操作系统公司都扛不住这个成本,也没必要。全世界只有极小数的团队有能力独立写一个现代操作系统内核,而那个工作量,足够拖死任何商业公司。”
他举了一个类比:你要盖一栋楼,如果连烧砖的窑都要自己重建,那这个楼盘至少得晚交付十年。真正的国产化,应该体现在上面的软件栈、服务框架、定制能力和适配优化上。他说这些年见到的比较靠谱的国产OS,都是基于Linux内核做了大量的自有模块开发,比如统一的应用商店接口、自研的桌面环境、默认的权限管理策略、多架构的编译适配等。内核用开源社区的东西没有错,错的是拿来之后一动不动、做一个换肤系统就当新版本发布。
3.2 岔路口二:先攻消费者市场,还是先守政企阵地
老周认为这不完全是一个商业选择,也是一个资源约束下的冷酷判断。早期国产OS的公司总想进消费者市场,因为那故事听起来性感。但消费者市场有一个极度残酷的规则:你用不好,我随时卸了装别的。而政企市场不一样,客户买了之后,短时间内不会随便换系统,他们更需要的是长期的运维、对特定硬件的适配、安全性合规。这种市场可以给国产OS生存和成长的窗口时间。
老周有一个数据观点:统信UOS等产品近几年能够真正活下来,核心不是因为它们在C端装机量大,而是因为它们在政企办公场景里形成了一个相对稳定的适配链条——从国产CPU、整机、外设、OA系统、会议系统到安全加密模块,都能找齐一套可用的组合。这套东西在普通用户眼里可能无感,但在一个机关单位的IT管理员眼里,它意味着“能交差”。
“消费者是投一次票,政企是每天投一次票。”老周说,政企客户每天都在用,只要体验崩一次,管理员就会被领导追问一次。所以国产OS真正要赢的,不是发布会上的PPT,而是这一个又一个使用日的稳定性。
3.3 岔路口三:跟着X86体系走,还是赌国产CPU生态起来
这二十年中国国产CPU有几股力量:龙芯走的MIPS和后来的LoongArch,飞腾用ARM架构,申威用Alpha演进下来的架构,兆芯和海光更靠近X86兼容路线。操作系统要同时适配这么多架构,对于任何团队来说都是重负。
老周回忆他在2016年给一台龙芯3A3000机器装系统的经历:那段时期的发行版版本包,针对X86的依赖关系是成熟的,但在龙芯上,很多软件没有对应的编译包,只能自己用源码编译,编译一个开源数据库都可能要折腾半天。他说,如果当时没有几个大项目的强制需求在牵引,龙芯和系统团队的磨合不会那么快。
这个岔路口的选择对今天的影响是,国产OS团队必须建立一个非常复杂的基础设施:面向不同CPU架构的软件仓库、交叉编译工具链、驱动适配验证流程。这些在外面看都是“透明”的东西,实际上是最耗人力的部分。老周说:“你打开一个国产系统的软件中心,看到几千个软件,那背后对应的是几千次编译和测试。”
4. 信创重启以后,程序员眼里的国产OS到底什么样
4.1 适配一个国产OS客户端,到底要趟多少坑
老周这两年的主要收入来源,是给大型企业做信创平台上的应用适配。他给我演示了一个典型的适配工作流,我听完之后发现它比想象中琐碎得多。
第一步是跑依赖检查。很多老应用是在X86的Windows环境里编译的,里面动态链接了一些管理工具库,一拿到ARM架构Linux环境就缺头文件。第二步是看图形渲染库。老的应用用的是老版本图形库,但在新的国产系统里默认桌面框架可能是更新的,可能出现界面错位、按钮消失、字体渲染发虚。第三步是外设兼容,尤其是高拍仪、身份证读卡器、指纹仪这类政企场景专用的设备,厂商常常只提供了Windows的SDK,Linux下需要手动通过usb协议去适配。
他给我讲了一个典型项目:一套有十年历史的物流仓储管理客户端,用的还是老旧的数据库驱动,对方工程师坚持认为是国产OS的问题,结果排查下来是数据库驱动没有做国产CPU架构的适配。老周花了两周,把驱动源码编译到飞腾平台上,解决了。事成之后,客户想给他在Windows上装个“更好的开发环境”,他直接拒绝了。
4.2 从“能用”到“好用”,差的不是系统,是整个产业水位
老周说,如果只用一句话评价今天国产OS的成熟度,大概可以这样说:“办公流已经能做到正常使用,但开发流、专业流还差得很远。”
什么叫办公流?文档、邮件、网页、审批、视频会议、即时通讯,这些东西今天在主流国产OS上都有可用的替代方案,体验比五年前好了不止一个档次。什么叫开发流?就是程序员自己日常要用的那些东西——IDE、数据库客户端、容器工具、调试工具、搭建各种服务的命令行工具链,目前都还需要自己多花时间折腾。至于专业流,比如高性能计算、音视频工作站、精密制造类软件,往往还是依赖Windows和特定硬件厂商的闭源驱动。
“你不能怪操作系统团队不努力,这背后是几十年积累的应用生态水位问题。”老周说,Windows能够“什么软件都有”,不是微软一个人做到的,是全世界成千上万个商业软件公司、独立开发者和硬件厂商共同堆出来的。你要国产OS在完全没有任何外部激励的情况下长出同样的生态,是不现实的。但现在至少有一个趋势是好的:越来越多的厂商开始愿意为一个新系统做适配,因为客户点名要了,你不适配就丢单。
4.3 鸿蒙入局以后,把“国产操作系统”这件事的打法改变了
老周对鸿蒙的态度很有意思,他不太愿意把鸿蒙和传统的国产桌面OS放在同一赛道里比。他觉得鸿蒙做的事情,往本质上说,是改变了对操作系统“边界”的理解。传统PC时代的操作系统,核心是管文件、管进程、管内存、管窗口;鸿蒙时代的操作系统,核心变成了管连接、管协同、管设备组合。
但在一个程序员听来,这背后也意味着技术栈的摇摆。老周说,他身边有一些曾经深耕Linux应用开发的程序员,这两年也把一部分精力转向了鸿蒙/OpenHarmony方向,因为那里面有新的岗位需求。“做操作系统的逻辑变了,过去我们努力让一台机器上的软件跑起来,现在得努力让一堆设备上的软件协作起来。”
他也提了一个很实在的操作建议:如果你现在想进入国产系统的应用开发,先弄清你的产品运行在设备端还是服务端。设备端优先学OpenHarmony组件和ArkTS的技术生态;服务端就别管前端壳子,踏踏实实把Linux内核、容器、中间件这些通用基础设施搞扎实,这些在任何国产发行版上都不会过时。
5. 二十年过去了,有些事变了,有些事压根没变
5.1 生态不是砸钱就能砸出来的,它需要利益驱动
老周说他听过最外行的一句话是:“国产OS做不好,就是砸的钱不够。”他摇头说,世界上有太多有钱的公司,也没能靠砸钱砸出一个操作系统生态,原因很简单:生态的核心不是钱,是利益分配。
Linux桌面生态到今天为止,在全球范围内都算不上繁荣,它的问题不是没技术、没人才,而是没有一个人人都能赚钱的正循环。Windows能吸引成千上万的商业软件公司,是因为开发者能在Windows上赚到钱;Android能吸引全世界开发者,是因为有Android有分发渠道和用户规模。国产OS如果没有搭载一个能赚钱的渠道,那它再开源、再开放,也吸引不到顶级开发者持续投入。
“所以你看现在国产OS公司的策略也在变,光发系统不行,开始做应用商店的运营分成、做云服务的集成部署、做行业解决方案的打包。”老周说,那些能活下来的公司,本质上已经不是单纯的“操作系统公司”,而是“平台服务商”。
5.2 那个不穿西装的人,为什么还在写代码
我问他一个很俗的问题:写了大半辈子代码,接的都是这种辛苦适配的活,图什么?他没有直接回答,讲了一件挺私人的事。
前年他接了一个山区县医院的系统迁移项目,一台老服务器上跑着2008年部署的Linux系统,内核版本已经老到连官方安全补丁都没了。系统里跑着一个血库管理程序,如果停机,县里两千多人的用血信息就有风险。老周和同事在现场做了四天,完成了数据迁移、新系统部署和业务验证。走的时候,信息科科长握着他的手说:“你们要是晚来三个月,我真不知道拿什么跟领导交代。”
老周说,这种现场,比你在任何发布会台上都有反馈感。“代码有没有用,不在GitHub的Star数,在你能不能在一个深夜让一台老服务器平稳地跑起来。”
他说他现在还是穿着卫衣写代码,没有西装,也不需要。他觉得自己本质上和1999年蹲在宿舍里穷折腾的学生没有区别,只是现在折腾的东西更多了。
5.3 如果你想进这个领域,我能给的三条建议
聊到后来,老周主动说,如果有年轻的程序员想进入国产操作系统的生态,他有几条比较实在的建议:
第一,别把它当成一个“小众赛道”来看,它是一个存量市场的替代工程。只要政企机构有十来万台机器要换,就需要有人去做适配、做迁移、做运维。这里面有大量的工程问题等待解决,你说它前沿吗?不太前沿。但你说它稳定吗?非常稳定。
第二,把Linux基本功打扎实,比追任何热门框架都有用。国产操作系统再怎么包装,底下还是Linux的一套。你懂内核、懂仓库机制、懂图形栈、懂外设驱动的基本原理,在任何一个国产系统团队面前都有敲门砖。
第三,学会跟老代码打交道。做国产化适配,注定要面对一些跑了十几年的老系统,没有文档,没有注释,甚至联系不上原作者。你得把源代码当考古现场来对待:先找入口,再理数据流,最后小心验证改动。老周说他见过来面试的年轻人,一说“我会新技术”就眼睛发光,一听说“要兼容十年前的浏览器控件”就皱眉。你想在这行干下去,就得不嫌弃老东西。
老周到最后也没把他的名片给我,他说他不做社交,只做交付。我打车回家的路上,翻了一下他塞给我的一份旧系统的历史版本说明,里面写着一段他在2007年写的更新日志,句式非常枯燥,结尾却有一句很突兀的话:“今天又是四点钟回来的,希望这套系统能多撑几年。”
国产操作系统这二十年,有人看到了发布会上的高歌猛进,有人看到了冷嘲热讽的破碎梦想。但在那些客户现场熬到凌晨的程序员眼里,它没有那么多宏大叙事,不过是一张又一张能不能正常打印的报表、一台又一台能不能稳定开机的机器、一个又一个希望系统“多撑几年”的普通用户。
我不知道国产操作系统未来会走多远,但我至少知道,像老周这样的人还在写代码,这比任何战略规划都让我安心一点。