有时候,现代操作系统的体量和复杂度 —— 即便是开源系统 —— 让我们怀念那种一个完整可启动的操作系统只需三个文件、配置一台生产用 PC 只需编辑两个每个可能只有十几行文本的文件的年代。DOS 虽然功能有限,但其所能做到的已经足够。从 1980 年代初开始的十几年甚至二十几年里,全球大部分时间都在运行 DOS。随后 Windows 3 问世,可以说那便是衰败的开端。
并非只有这位老家伙对 DOS 怀有一丝怀旧情怀,这也是为何今天社区驱动的开源项目中有重现 DOS 的作品。近年来,我们关注过 FreeDOS 和 SvarDOS。如今,一群使用 DOS 的人是为了玩经典游戏,专门的模拟器例如 DOSBox-X、86Box 和 PCem 就是为了这一目的而生。但这位老家伙并非游戏爱好者,他觉得模拟效果略显不足。
随着 Microsoft 推出 Windows 95 后对 MS-DOS 逐渐失去兴趣,去年还发布了 MS-DOS 4 的源代码。而 IBM 对其 PC DOS 变种的开发则持续了更长时间,先后发布了 PC DOS 6.3、7.0 與 7.1,如主开发者 Vernon Brooks 在他的网站 PC DOS Retro 上所记载。除此之外,PC DOS 将 Microsoft QBASIC 替换为 Rexx 语言的解释器,并用 IBM E 取代了 Microsoft 的全屏文本编辑器。最后一个版本 PC DOS 7.1 甚至包含对 FAT32 的支持,虽然从未获得商业发布,但它成为 IBM ServerGuide Scripting Toolkit 的一部分,该工具包可免费下载。
64 位操作系统使运行 DOS 程序变得更加困难,但仍是可能的。至于真正的 DOS,却是另一回事。Reg FOSS 团队这几年来一直在现代硬件上试验 DR DOS 和 PC DOS。将它们安装并在虚拟机中运行相对容易,但是问题在于:在虚拟机中数据的进出并不简单。DOS 的出现远早于局域网,而它所支持的网络功能几乎也早于互联网。虽然能将 DOS 机器(包括虚拟机)接入互联网,但这会占用大量可用内存,而且一旦接入,也只能做很少事情。DOS 对 USB 的支持也不完善,虽然有一些驱动,但大多数现代硬件难以正常工作。
秘密的 DOS 超能力
然而,我们发现了一个有用的漏洞。早期的 DOS 完全依靠软盘启动,而现代计算机早已不再配备软盘 —— 但这些软盘的格式依然被沿用。任何现代操作系统都能轻松读取和写入 DOS 介质 —— 包括 USB 存储设备。这意味着几乎任何支持遗留引导的 x86 PC 都可以通过 USB 驱动器引导 DOS。当你这么做时,会出现一丝魔法:固件(BIOS 或带有“兼容支持模块”的 UEFI,用来模拟 PC BIOS)为 DOS 进行转换。一个可启动的 USB 密钥在 DOS 看来就像一块普通硬盘,无需任何驱动程序。DOS 无法读取现代磁盘格式,实际上对于超过 2 TB 的驱动器也无法支持,但这无关紧要,因为整个操作系统及所有程序都能装进几百 MB 的空间中,而这还远低于现在能买到的最小 USB 闪存盘。
多亏了古老的 IBM PC DOS Shell,这个可启动 USB 密钥提供了一个友好的菜单 —— 点击可放大查看。
IBM PC 兼容性已经延续了四十多年,虽然技术已发生巨大变化,但直到最近十几年,符合 Windows 10 或 11 规范的 PC 才逐步放弃对遗留引导的支持。
它不能做什么
因此,你可以从 USB 闪存盘引导 DOS,并且运行良好。但在 2020 年代,DOS 又能有什么用处呢?它对 BIOS 更新帮助甚微;UEFI 已经使其过时。DOS 无法读取 NTFS 或其他现代文件系统,所以作为紧急救援盘毫无作用。现代声卡或网络控制器的驱动很少,而且它对 TCP/IP 的支持非常有限,Wi-Fi 更是不用提了。
不过,我们可以给 DOS 添加许多这些功能。我们对此进行了研究和试验:可以加入 USB 存储、CD-ROM、网络与 TCP/IP 驱动,以及部分现代文件系统的驱动。但 DOS 的根本限制在于其“基本”或“传统”内存上限只有 640 kB。所有的驱动都必须装入这块内存;一旦加载几个驱动,就会导致没有足够的内存去运行任何应用程序。虽然曾有各种技巧试图扩展这一限制,而且最后一代的 DOS 标准版本也普遍内置了能够扩展内存的管理器,但有两个问题严重制约了这种扩展。
其一是,任何内存管理器都必须为每台机器手动定制。将一台机器的定制转移到另一台 PC,很可能导致 DOS 无法启动。有一些更聪明的内存管理器能够自动优化,其中 Qualitas 386MAX 已转为 GPL3 开源软件。但可惜的是,在我们的测试中,它们连一台 20 年前的 CPU 速度都难以应付,加载时便会冻结。如果有人能在任何 64 位芯片上顺利运行 386MAX,请务必告知。由于这两个因素,复杂的内存管理在 DOS 上实在难以实现,从而也限制了许多更高级 DOS 增强功能的发展。
以 21 世纪的标准看,DOS 如此精简简单,几乎可以在任何硬件上运行。它拥有成千上万的应用程序,其中不少工具非常强大。许多程序原本是共享软件或公共领域软件,因此可免费合法使用。甚至曾经商业化的一些应用现在也都合法转为免费软件。例如,FreeDOS 仓库中就有不少这类资源。开源在 DOS 时代尚不盛行 —— 它甚至早于 GPL 的诞生 —— 但一些知名开源软件(例如 Emacs 和 Vim)的 DOS 版本确实存在。
然而,DOS 的功能非常有限。它是一个独立的操作系统 —— 没有能够与现代系统通信的网络功能,而实现联网需要耗费大量精力。在现代硬件上,它还缺乏声音支持、图形功能非常有限,而且著名的一点是,它不支持多任务处理。
而它能做什么
随后,我们萌生了一个念头。有一种应用场景下,像数字世界中隐居沙漠洞穴的隐士一样与世隔绝竟成了一种优势——一种对无法连接 WLAN 和访问网络的状态反而乐见其成的用途:一个独立、不联网且无多媒体功能的写作设备。
不少知名文字处理软件的早期版本都运行于 DOS 上,包括经典的 WordPerfect 及最初版本的 Microsoft Word。还有其他一些写作工具,比如 Symantec 的 GrandView 大纲软件。虽然如今并非所有工具都免费,但令人惊讶的是,许多软件已免费。例如,1980 年代繁荣时期最受欢迎的英国应用 Arnor Protext 现已成为免费软件。甚至一些曾经知名的产品,在其最后继承者数年前停止营业后,也合法转为免费软件,正如我们去年提及的 MicroPro 的 WordStar 所示。
大纲软件 —— 作家的好帮手。Symantec 很久以前就将其 DOS 版本设为免费。
Microsoft Word 5.5 于 1990 年发布,是首个带有现代 CUA 用户界面的 DOS 版本 —— 也就是说,用户可以使用标准快捷键和下拉菜单。它仍然运行良好,且 Microsoft 在 1999 年将这一版本作为对早期 DOS 及 OS/2 平台上 Word 产品的千年虫修复版免费发布。(遗憾的是,这不适用于最后发布的 DOS 版本 Word 6.0,该版本的使用体验稍逊一些。)
在 1990 年代末,Microsoft 将 Word 5.5 for DOS 定为免费软件,作为千年虫修复措施问世。感谢你,Bill!
这取决于个人喜好,但对我们来说,一台装有 DOS 及一些功能强大、运行流畅应用程序的老笔记本电脑构成了一个令人愉悦的写作环境。我们曾经尝试过一些专用写作设备。大约十五年前,为了撰写本文的调研工作,这位老家伙购买了 Cambridge Z88 及 Amstrad NC100。它们都是很棒的设备,但在 21 世纪,资料的导入和导出操作变得极为繁琐。下一步便是那些数据传输更便捷的设备 —— 它们仅充当键盘角色。我们先从 AlphaSmart 3000(一个仅 19 美元的“神奇”小废物)起步,后来升级到稍微现代些的 AlphaSmart Neo,最终选用了 AlphaSmart Dana Wireless。尽管它们各有诸多局限,但都是出色的设备。我们也避免花费过多购买高端设备,例如 Freewrite 系列或我们在 2023 年提到的 ReMarkable 键盘(我们当时还提及了 Pomera 数字打字机)。这些设备看起来非常有趣 —— 虽然它们的键盘体验可能不尽如人意 —— 但价格并不便宜。
虽然这些设备在各自擅长的领域表现出色,但对我们来说,更大的屏幕、高质量的笔记本键盘以及功能丰富的文字处理器,无疑能提供更加愉快且高效的写作体验。
诚然,你可以运行某个 Linux 发行版,仅仅不安装 GUI 而采用文本控制台。但是,问题在于针对人类语言撰写的工具非常稀缺。大多数控制台文本编辑器都是为编写程序代码设计的。更糟的是,Vim 或 Emacs 的学习曲线极其陡峭 —— 我们自 1988 年起就使用 Vi 类编辑器,但至今仍厌恶它;而 Emacs 则更为艰涩。虽有更好的文本编辑器,但它们依然侧重于计算机文本处理,而非创作自然语言。
少数几个仅支持控制台模式的文字处理器之一是 David Given 开发的 WordGrinder,其设计注定了功能上的局限。即便如此,你依然需要掌握基本的 shell 使用方法。在 Linux 文本控制台下,你甚至可以上网、查收邮件、并将文件通过邮件发送给自己;然而,这过程繁琐且破坏了独立运行 DOS 所带来的少干扰优势,而 DOS 在为作家提供的应用程序上更胜一筹。
USB 可引导的 DOS
去年年底假期期间,我们在 GitHub 上推出了 USB-DOS 项目。这是一个(目前还非常小巧的)可引导 USB 密钥镜像合集,包含 FAT16 与 FAT32 两种映像。FAT16 映像可安装在 256 MB 的 USB 闪存盘上(如果你还能找到这么小的设备);而 FAT32 映像则适用于 4 GB 的 USB 密钥,还留有大量空余空间。第一个发布版本 1.0 包含了 MS Word、Arnor Protext、一款大纲软件以及 WordPerfect 编辑器。启动后会直接进入一个图形菜单,使你无需看到 DOS 命令行便能运行各个应用程序。第二个版本 1.1 的容量接近翻倍,但这是因为它新增了 Robert Sawyer 的 WordStar 7 档案中包含的 DOS 组件,包括文件转换工具和大量以 PDF 形式提供的重要文档。为此,我们还添加了 Adobe Reader for DOS。
官方 Adobe PDF 查看器 for DOS 随附其中,且甚至支持 SVGA。
该 USB 密钥基于最新版本的 SvarDOS。正如我们去年 12 月所述,SvarDOS 项目最近已从 FreeDOS 内核切换到使用 Enhanced DR-DOS 内核。该内核源自 Udo Kuhnt 的 DR-DOS Enhancement Project,该项目始于 Caldera 1996 年短暂的源代码发布。Caldera 在公布 DR-DOS 内核及若干核心工具后,却因忐忑而重新商业化 DR-DOS,期间加入了 FAT32 支持等关键增强。Kuhnt 在继续开源代码发布时复刻了大部分这些增强功能。
随后,一家名为 DeviceLogics 的 Caldera 分拆公司发布了 DR-DOS 8,接着推出了 DR-DOS 8.1——后者意外使用了 Kuhnt 的内核以及部分 FreeDOS 文件,旋即被撤回。
我们在使用 SvarDOS 进行实验时感到非常舒适。它比 FreeDOS 更小、更简单,而且保留了 1990 年代 DR-DOS 相同的配置文件名称和命令行语法,而 FreeDOS 则略有不同。使用 SvarDOS 就像穿上一双久违的老鞋,因此我们选择了它。
当前版本中的应用程序是经过刻意限定的。虽然存在一些 WordPerfect 的免费版本,但其 Windows 版本仍在销售,因此我们将其排除。不过,我们欢迎大家提出建议,前提是所推荐的软件须明确为免费,或其开发公司已不再存在。
我们的制作过程
从 USB 启动 DOS 非常简单。一旦完成,DOS 会将 USB 密钥识别为计算机中主要的可启动硬盘,且由于 DOS 只能原生读取 FAT 与 FAT32 格式,真实 HDD 或 SSD 上的数据对它来说都是不可见的。但这种 BIOS 模拟魔法仅在你从 USB 介质启动 DOS 后生效;如果 DOS 安装在真正硬盘上,则不具备此效果。因此,我们需要另外的工具来实现这项模拟 —— 这就需要借助虚拟机监控器(hypervisor)。
如果你曾从 ISO 文件安装操作系统到虚拟机中,你会明白,对于来宾操作系统来说,附加到虚拟机的 ISO 文件就如同一个光驱。对于附加的 USB 密钥亦然。VirtualBox 是一款开源软件,使这一过程相对简单,尽管文档并不十分清晰。正如 Reg FOSS 团队通常在 Linux 主机上工作一样,在 macOS 上操作则要复杂且不够稳定。总结一句:不要使用 Mac。我们甚至没有在 Windows 上尝试,因为人生实在短暂。如果你偏好其他虚拟机监控器,那就另当别论。
整个过程分为两个步骤,两者均不可或缺,且必须按顺序执行:
步骤 1
将你的用户账户设置为 USB 密钥设备节点的所有者。否则,当你以普通用户身份运行 VirtualBox 时,将无法访问该设备,虚拟机也会因莫名错误而无法启动。命令非常简单:
chmod lproven:lproven /dev/sdc
显然,请将命令中的用户名替换为你自己的。记住,每次重启计算机,或每次移除或重新连接 USB 密钥时,都必须重新执行此命令。
步骤 2
使用 VirtualBox 命令行创建一个虚拟的 VirtualBox .vmdk 设备文件,该文件指向 USB 密钥。例如,我们的测试机有两个 SATA SSD(/dev/sda 和 /dev/sdb),因此你插入的第一个 USB 密钥会被识别为 /dev/sdc。进入 VirtualBox 虚拟机存放目录,然后输入:
VBoxManage createmedium disk --filename sdc.vmdk --format=VMDK --variant RawDisk --property RawDrive=/dev/sdc
上述命令将生成一个名为 sdc.vmdk 的小型设备文件,其指向当前的 /dev/sdc。我们建议不要同时使用多个 USB 密钥。该文件是持久的,会在重启等情况下保留。
注意,该设备文件的权限并非持久,因此每次重启或重新插入后,都必须重新执行 chmod 命令。
我们在一台以文件作为硬盘的普通 DOS 虚拟机中创建了可启动 DOS 磁盘映像。我们将 sdc.vmdk 作为虚拟机的第二硬盘附加,以便从 DOS 内部对其进行分区和格式化 —— 这对制作可启动密钥至关重要。
同时,我们还创建了另一台测试虚拟机,将 sdc.vmdk 设置为其第一硬盘。最终得到的虚拟机能够(或尝试)从真实的 USB 密钥启动,这对测试非常有用。
这里需要提醒的是 —— 同时让两台机器挂载同一磁盘是非常危险的行为,往往会导致磁盘损坏。这意味着,如果 Linux 在插入 USB 密钥后自动挂载,请在尝试通过虚拟机访问前先卸载它。请不要通过弹出设备来卸载,否则虚拟机将无法再访问该设备。同样,在拔出密钥前请务必关闭虚拟机。此外,不要试图让两个虚拟机同时指向同一虚拟驱动器,无论该驱动器是真实的 USB 密钥还是虚拟硬盘。
如果你知道怎么操作,这里有一个传统的命令提示符,以及大量免费的基本内存。
我们不会详细介绍安装和配置 DOS,或更不用说 DOS 内存管理的步骤了。这些技能早已过时,虽然重温这些步骤是一种怀旧之作,但实际上不值得花费时间去传授。
这个 USB 密钥存在一些限制,不过是可以通过一些方式来解决。例如,SvarDOS 没有简便的方法来检查或修复 FAT32 驱动器,但我们不愿包含任何来自 Microsoft 的 DOS 或 Windows 9x 的组件以实现此功能,因为 Windows 至今仍在销售。请使用现代的 Windows、Linux 或 macOS 来修复磁盘。同理,DOS 密钥中不包含任何 Windows 或 Windows 软件 —— 我们也不会添加,所以请不要要求。
如前所述,我们可以添加驱动,使得该可引导密钥具备联网功能、读取 NTFS 或 Ext4 文件系统,或访问光驱 —— 但这些功能均受到限制,并且会以牺牲 DOS 基本内存为代价。更糟糕的是,这些举措会增加使用该密钥所带来的潜在风险。没有杀毒软件,因为我们认为 DOS 病毒对现代操作系统几乎没有威胁 —— 而现代操作系统的恶意软件也无法在 DOS 上运行。
可启动 USB 密钥的镜像文件已在我们的 GitHub 页面上提供下载,同时附带了一个基本 Wiki,其中包括一些文档和两份主要的 DOS 配置文件。如有问题或漏洞,欢迎通过 GitHub issue 向我们反馈。
好文章,需要你的鼓励
Waymo 因发现无人驾驶出租车在低速行驶时撞击大门、链条等固定障碍物,召回了其中 1,200 辆车辆,并通过软件更新降低风险,满足监管要求。
本文探讨了 AI 数据中心如何利用直冷技术应对 GPU 高功率散热和电力分配挑战,通过 Supermicro 的 DLC-1 与 DLC-2 系统实现能耗降、噪音减。
Acorns收购了家庭投资赠礼平台EarlyBird。收购后平台将关闭,创始人加入Acorns团队,助力打造儿童理财App Acorns Early,并整合数字时间胶囊功能,助全家传承财富。