那是在 1995 年,我进入专业工作领域已经快两年了。OS/2 是工作站的主流产品,Netware 服务器统治着世界,而 Linux 桌面年随时都会到来。如果你运行的不是 OS/2,那么你可能运行的是 Windows 3.1,只有极少数人在使用 Linux。当时最完美的操作系统应该是带有合格的 POSIX 子系统的 NT,但由于我们无法做到这一点,于是大田弘一(Hiroshi Oota)推出了 Windows 上的 BSD。

那是一个深夜,我像往常一样浏览日本雅虎拍卖网站,看着那些荒诞的 Famicom/Super Famicom 游戏捧腹大笑,然后我继续寻找 BSD 光盘,在那里我第一次看到了 Windows 上的 BSD。然后我就把这件事给忘了,去做一些达尔文的项目。

快进 3 周后,vic485 买下了它,将其运出,并上传到 archive.org。因此,非常感谢 vic485 让这一切成为可能!

那么它是什么呢?它并不完全是 BSD,而是将内核分解为多个子系统的一堆 16 位 DLL,每个子系统都依赖 winmem32.dll 来访问平面/32 位地址空间。Windows 上的 BSD(BOW)是一个 16/32 位混合应用程序,最初用于 Windows 3.1,后来的 1.5 更新版用于 Windows 95,其中包括对长文件名的支持。我不确定它是否能在 Windows NT 或 OS/2 上运行,因为我不认为

所以我得到了什么?

关键的媒体内容是安装软盘和光盘。是的,安装程序只在软盘上。希望你能拿到磁盘镜像。我不清楚说明书是什么样的,当然它是日文的。

它在很大程度上是一个类似于 BSD 的单用户模式环境,包括 vi/gcc/csh/perl 等等。我可以测试作业控制,并构建一些简单的程序,如 Hack 1.03。不过,我发现了一些问题。

我还没有对 FreeBSD 1/2 进行过足够的测试,但我可以从我的 "Windows 上的古代 Linux "软件包中证实,对象格式是一样的,这就是早期的一切都还是 "out "的时代,尽管所有的不同都依赖于 GNU GAS 和 LD,但对象格式确实是一样的。用我的 Linux 交叉编译器编译一个 hello world,然后链接到 BOW 上,就能得到一个运行的可执行文件了。

内存的问题很奇怪,你可以在 Windows 中添加数百兆字节的内存,但 BOW 总是会耗尽。在 bow.ini 文件中,你可以设置每个程序的内存堆,而我通过一些愚蠢的试验和错误发现,你能有效给予的最大内存堆是 13 兆。看来,winmem32 有一块内存,所有进程都会从这块内存中耗尽,因此才会出现 16MB 内存以下的区域。也许有办法分配它,但我不确定,也许书里有。CC1 经常出现问题,所以将堆设置为 13M 肯定有帮助,链接器 "ld "当然也会耗尽内存,所以将其设置为 8M,我就能链接了。

文件名是个大问题,尤其是在 Windows 3.1 上。我试图加载的所有 LFN TSR 都会导致完全崩溃。我不得不将链接器指向 CD-ROM 的实时文件系统,这在真机上可能会很繁琐,但在仿真下就没问题了。

BOW 不喜欢 Qemu。完全不喜欢。在 otvdm 下也不行。我怀疑 NT 也不行,但我还没试过。奇怪的是,这并不是时间问题,因为它确实可以在 VMware 下运行。在 Windows 95 下运行有一个好处,那就是它支持长文件名。86Box 也能运行,我甚至使用 400Mhz 的 Pentium II Xeon 也能正常运行。

最令人讨厌和愚蠢的可能是 GCC C 编译器没有打开 C++ 风格注释。不能使用"//"是一件非常恼人的事情。

Hack 在我的 386 上运行得很好,这真是个惊喜!。同时运行 Word+Excel 和 Hack 真的很酷。

如果我知道这一点,它将会是一个令人难以置信的桥接产品。更不用说交叉编译到 Win32 或 Linux 了。更不用说在当时运行 BSD 没有任何痛苦,只需安装就可以了。

BOW 1.5 支持一般的 TCP/IP Winsock,因为它只需调用 winsock。这还包括运行守护进程的能力,不过 BOW 的局限性很快就暴露出来了,比如缺少 setuid/setgid sno,无法冒充低权限用户。虽然我可以将 Apache 1.3.1 移植到 Windows 上的 BSD (BOW),但 MMAP 似乎也无法运行。

虽然 BOW 看起来很像 BSD,但却缺少 Apache 所需的 mmap 以及用户映射和假冒功能。我最终使用了 EMX - OS/2 系统代码,因为它非常类似于 POSIX,而不依赖于类似于 Unix 的操作系统。

我已经能够为自己提供页面,但 BOW 在许多模拟器和管理程序中崩溃,这让我无法将其放到互联网上。BOW 爱好者可以从 archive.org 下载。

如今,BOW 已经没有任何意义,它只是一个有趣的怪胎,但在当时,对于一个初级网络管理员来说,能够运行 Unix 版本的 snmp 工具(即使只是客户端)已经非常了不起了。如果 tftpd 也能运行,那就更棒了,因为你不仅能获得 BSD,还能同时获得完整的 Windows 应用程序,就像 MachTen 一样。

真遗憾,我从来不知道有这回事,我本该向 BOW 传福音的!谁知道日本/亚洲/欧洲的平行社会中还有什么其他宝藏呢?