Ask HN:还有谁因为业务离不开,仍在维护一台 DOS 机器?
文章摘要
这是 HN 用户 mlaux 发起的一个 Ask HN 帖子,获得近 300 分、300 多条评论。他的问题很直接:你现在是否在用、或者认识有人还在用下面这些东西?
- 跑在原装老硬件上的 dBase、Clipper、Clarion、Paradox 等 DOS 时代的快速开发环境,用来支撑业务流程;
- 由 ISA 扩展卡控制的 CNC 铣床、光谱仪、显微镜等工业仪器(无论是定制卡还是 GPIB 这种标准接口);
- 任何依赖并口加密狗的软件。
他说自己不卖东西,只是在为一个想法做调研:怎样让这些系统在现代硬件上继续跑下去。
提问者的构想。 在后续回复里,mlaux 讲清楚了他想做的东西。现成的免费方案(DOSBox、86Box、QEMU 等)已经足够让人「在新硬件上把老程序跑起来」,这一点他并不打算重复。他设想的是一个 DOS 运行时/模拟器,对每一次 DOS 中断调用和 I/O 端口访问做详尽记录并挂上钩子。这样一来,DOS 程序更新一个 .DBF 文件时,工具可以自动往 SQLite 表里插入对应行,相当于在业务照常运转的同时,悄悄建起一份现代数据库;GPIB 数据也可以转发给现代的 USB 适配器。他刻意回避周期精确的底层模拟,只针对最流行的几套商业软件按需补兼容性怪癖。对于有人说这是「每个客户都要定制、AI 也帮不上忙」的小众市场,他回答说这两点对他反而是好事,只有「客户都没钱」这一条让他发愁。
评论区成了一场老系统故事会。 大多数回复并没有回答商业可行性,而是纷纷讲出自己见过的「古董」:核电站、航空模拟器、羊毛检测站、歌剧院字幕、教堂钟楼、木材场收银台……这些故事共同勾勒出一个现实:在工业、医疗、实验室和小企业里,老系统之所以还在,往往是因为硬件接口锁死、软件没有源码、重新认证成本极高,或者干脆就是「它从来没坏过」。讨论也延伸到了几个更大的话题:关键基础设施该不该升级、监管认证为何让「复刻旧硬件」比「重写软件」更便宜、以及如何写出能用 50 年的软件。
HN 评论精华
核电站里的 Amiga 模拟器。 整个帖子最受关注的是 freeli 的故事:某核电站直到 2007 年还有一台 Windows NT 4.0 机器,负责显示控制棒的状态(插没插、插了多少,仅显示不控制)。原始软件是上世纪 80 年代电站投运时为 AmigaOS 写的。Amiga 早已买不到,原机也不知何时坏了,于是 90 年代中期电站买了一款英国公司开发的、运行在 NT4 上的 AmigaOS 模拟器。后来那家公司倒闭了,而 NT4 是最后一个允许模拟器直接访问那块产生状态信号的硬件的 Windows 版本,之后的版本一升级就坏。重新认证新系统太麻烦,电站选择维持现状,备用硬件从 eBay 上买来,就堆在旁边的架子上。他当时的任务是向 IT 审计员解释这台机器为什么没装杀毒软件。追问之下他补充,硬件是一块带外接接口的定制 ISA 卡,模拟器自带直接驱动它的程序。
这个故事引出一串讨论。曾当过反应堆操作员的 CobaltFire 说一点也不意外,他接触过更原始的系统:控制棒位置靠电刷圆柱上的电阻测量,每次停堆都要清洁、校准。rcxdude 谈到审计的荒诞:很多审计条款写得非常死板,审计员理解的规则和书面规则常常互相矛盾,有时还有不成文的「个人偏好」。jabl 一句话概括:「每台 Windows 都必须装杀毒」只是个打勾项,不需要思考。JdeBP 则指出,真正值得担心的是备件和在用机器放在同一个物理位置。
该不该升级关键设施? 用户 sajithdilshan 认为政府不花钱现代化核电站简直疯狂,这种管理疏忽才是核事故的根源,并把切尔诺贝利归因于用了过时技术。这个观点遭到普遍反驳。onion2k 说安全和可靠来自对系统的理解,一个你了如指掌的老系统往往比新系统更安全,风险在于懂它的人离开、备件断供或周边环境变化,人们几乎总是升级得太早或太晚。HPsquared 纠正说,切尔诺贝利 4 号机组投运才 3 年,RBMK 设计比如今仍在建造的压水堆还新。IG_Semmelweiss 搬出林迪效应:经受住时间考验的东西,预期还能活得更久。elzbardico 说如果不考虑元件老化,他宁愿相信 70 年代的 PDP-11 或跑 MS-DOS 的 PC-XT,没有 GHz 总线、多级缓存和推测执行,一旦证明能跑几年,就没理由跑不了 50 年。也有人站在另一边:jodrellblank 用多伦多有轨电车为例,说「没坏就别修」的结果可能是到处是手动道岔、配件图纸随厂房一起烧掉。
复刻硬件比重写软件便宜。 Froedlich 讲了一个朋友的经历:某航空公司的飞行模拟器整套软件(包括编译器和操作系统)都经过 FAA 认证,老旧的大型机到了寿命,市面上找不到兼容硬件,重新认证软件的成本和时间又是天文数字。最后在 FAA 同意下,他们请硬件公司用现代芯片把旧大型机「克隆」了一遍。有人质疑这不可能,mitxela 回应说定制芯片没那么贵,几百万美元就能做设计加十万片,对大公司完全可及;vincent-manis 举了 Xerox PARC 当年自造 MAXC 来仿真 PDP-10 的先例;jasomill 提到 IBM 在 1983 年就推出过用 68000 加定制微码模拟 System/370 的 PC XT/370。mitxela 还用了个比喻:蛋糕配方和烤箱,哪个需要更多正确性证明?配方必须对,烤箱只要能保持温度。starky 不同意,说烤箱之间差异巨大,安全关键系统里硬件细节同样要命。
怎样写出能活 50 年的软件? throwaway2037 由此发问。回答五花八门:dmos62 说「开源,或者不买没有源码的东西」;jl6 建议用流行语言、严格遵守定义良好的 API、用通用硬件、去掉「恶性的小聪明」、写清每部分为什么这样做;inopinatus 反驳说「流行」也包括 JavaScript 和 PHP,他更倾向「普适且长久」,几十年来这意味着 C;very-old-sw 却说自己几十年前的 C 程序如今已编译不过,老 Fortran 的某些写法也早被淘汰。从事电网变压器行业的 ninalanyon 给出了最工程化的回答:写好规格说明、版本控制和完全离线的构建流程,消除不透明的二进制块,所有东西都要有纸质文档并标注版本号。他所在的行业里,设备用了 50 年送回来修,还能查到原始图纸和物料清单。
ISA 能不能挂到 USB 或虚拟机上? andix 问 8 MHz 的 ISA 总线能否经 USB 接给虚拟机。labcomputer 解释了难点:很多老 ISA 驱动是以总线极限速度直接读写卡上寄存器,每次访问不到 1 微秒;USB4 常被引用的延迟约 20 微秒,模拟出的 ISA 卡最多也就 50 kHz 左右。Teknoman117 补充,他疫情期间做过一个 KVM 加速的 386EX 模拟器,每次 I/O 都要触发 VM exit,结果比真硬件还慢。也有人贴出 ISASTM 这类 ISA-over-USB 的开源项目。
真实在用的案例。 帖子里有大量第一手见闻:
- Froedlich 有个客户用一台 Linux 服务器给十几个座席提供 VNC 会话,里面跑 DOSEMU 中的业务软件,从 2008 年用到现在没出过问题。
- rleigh 2000 年代中期所在公司卖基于 TAS Pro(类似 dBase/Clipper)的 POS 系统,USB 和 SATA 普及后买不到能跑它的工控板。他用 Debian 加 DOSEMU 搭了一套方案,通过 Samba 提供带字节范围锁的共享盘,让 90 年代初的软件一直撑到 2010 年代公司老板退休。
- andix 用商业软件 vDos 跑 Clipper/dBase 应用,比 DOSBox 在打印和网络行锁方面好用。
- shakna 的前台计数机跑 MS-DOS 3.x 加 dBase,已经搬进 QEMU,数据导出到 REST 服务器监控,唯一的怪事是磁带备份要走 Sound Blaster 声卡。
- fires10 在一家《财富》100 强公司的数十亿美元设施工作,仍依赖 DOS 机器配置和编程老工业设备,靠层层封装与现代系统对接,在虚拟机里维持稳定串口连接和时序是最大挑战。他也提醒,经过验证和受监管的系统往往不能随便迁移。
- myself248 修过一个 USB 软驱模拟器,它给一台 IBM PC 5150 供数据,那台 PC 上有一块 ISA 卡模拟纸带阅读机,喂给一台用了 50 多年的 NC 车床。bradleyy 也见过用 Apple II 模拟纸带阅读机的店。
- alexpotato 说纽约某歌剧院的座椅背字幕系统只能跑在 Windows XP 上,负责人不断从 eBay 淘旧电脑。有人建议用 LLM 嗅探协议再逆向,对方回答:「它必须正确工作。30 年来老系统从没出过故障。」
- freddealmeida 回忆 20 多年前在福克斯家庭娱乐,《泰坦尼克号》等影片的亚洲收入都记在 DOS 机上,任职期间有 500 万到 1000 万美元被挪到巴西的公司,他认为老系统让舞弊变得容易。
- 其他还有:reaperducer 公司因为「晦涩的法律原因」必须让一台拨号上网的 XP 机器一直开着,否则会被罚款;Felger 上个月把一台 1999 年的 Win98 惠普电脑以 100 美元卖给一家工厂,用来替换控制 50 米长喷漆线的同款故障机;dazhbog 在用两台跑 DOS 6.22 的 Juki 贴片机,最头疼的是不用软盘怎么传文件;mikewarot 工作过的齿轮厂用 DOSBox 跑第一版 TK!Solver,省下每次 500 多美元的外包计算费。
不止是 DOS。 很多人讲的是 OS/2、SCO UNIX、Windows XP 甚至更老的系统:pumplekin 提到一家富时 100 公司还有台 1993 年装的 SCO UNIX,IP 栈还是有类地址;lormayna 在一次评估中发现 OS/2 Warp 机器在控制 CNC;Aldipower 指出德国铁路的一代 ICE 列车上还跑着 DOS 和 Windows 3.11;eqvinox 补充,德铁最老的在役信号楼直到 2025 年 12 月才退役,它 1899 年开始服役。K0balt 写了一篇极长的「探险记」:2019 年他去阿拉斯加费尔班克斯一家零售店换 UPS,穿过一间半废弃的监控室,在后屋发现一台积满灰尘、硬盘咔咔作响的 Pentium Pro 服务器,用令牌环网线连着轮胎服务区的终端。几个月后,那家西尔斯百货永久关门。
对提问者商业想法的冷静回应。 smackeyacky 认为,还在用这些设备的人已经有了自己的应对策略(哪怕有缺陷),宁可等到退休也不会为一个「不是问题的问题」花钱,而且这些客户普遍没钱。alightsoul 指出在用户眼里电脑和它控制的机器是一体的,本质上是嵌入式系统,会随设备一起更换。Postosuchus 说 HN 可能是错误的受众,这里的人不会容忍供着一台神圣的老电脑,早就自己迁移了。至于「AI 时代几分钟就能重写」的说法,asciimov 回应说容易的部分早已被替换,真正的障碍是 ISA 卡、硬件狗这类锁死的接口,而且几天就能重写的程序,验证可能要花好几个月;tclancy 讽刺道:当然可以,只要你还有完整文档、规格一直及时更新、有好的测试套件,还懂行业知识。saidnooneever 则讲了一个关于效率的故事:一位会计坚持用全键盘操作的 DOS 程序,说自己每天干 5 到 10 分钟就够,换成网页界面得干一整天,找来的程序员却每次都交出网页版。