重现WWW的起源(上):安装并配置X86版NeXTSTEP 3.3 作者:蓬岸 Dr.Quest 编号:697953965 创建于:2024-05-15 08:41:42 修改于:2024-05-15 10:03:06 -------------------- 万维网,即World Wide Web,其在NeXTSTEP上的起源已广为人知,但相比已经被 传说化的“创业故事”而言,早期版本的WorldWideWeb真正的使用体验是什么样子 却鲜为人知。一方面,NeXT作为一款面向科研和工程,售价昂贵的工作站电脑, 保存至今并仍然能够运行的的已经不多,在国内尤为稀少并被炒至天价。另一方 面,大众媒体更乐于Web 1.0/2.0/3.0这样脸谱化的叙事,而不屑、乃至刻意回 避互联网发展中的诸多技术细节。 而这篇文章则希望能够打破这些魔咒,帮助爱好者、学校和科技馆以合理的成本 ,复原相对真实的NeXTSTEP开发环境并运行早期版本的WorldWideWeb,让更多普 通人能通过亲自操作体验早期WWW的功能。这篇文章分为两个部分: 第一部分侧重于在模拟器中安装X86版NeXTSTEP,以合理的成本搭建实体机环境 ,以及NeXTSTEP的网络设置。第二部分则介绍开发环境的配置,早期版本的Worl dWideWeb的功能,以及作为教育展示用途的一些要点。安装NeXTSTEP前的准备 NeXTSTEP从3.1版本开始支持Intel x86平台,这让在今天以合理的成本搭建能够 直接运行NeXTSTEP的电脑成为可能,而NeXTSTEP 3.3则是其改名为OPENSTEP之前 的最后一个版本,相比前两个版本,它有着更长的支持周期(1995-1998)和更 完善的驱动库。许多爱好者也在后续为这一版本补充了像NE2000网卡这样流行硬 件的驱动,这也让它在今天更容易安装。 几个资源 NeXTSTEP 3.3的下载并不难找到,WinWorldPC和互联网档案馆都有提供下载 NeXTStep 3.x (Link: https://winworldpc.com/product/nextstep/3x) https://archive.org/details/nextstep3-3dev (Link: https://archive.org/ details/nextstep3-3dev) http://Nextcomputers.org (Link: http://Nextcomputers.org) 的软件资源库 :NextFiles (Link: https://www.nextcomputers.org/NeXTfiles/Software/NE XTSTEP/) 以及NeXToP的NeXTAnswers存档:NeXToP hOme 2.0 (Link: https://www.nextop .de/) 在后面我会反复提起它们。 另外我也建议翻阅NEXTSTEP Release 3.3 for Intel Processors Compatibilit y Guide,这份兼容性手册略微有点过时 NEXTSTEP and OPENSTEP Resource Page (Link: http://www.shawcomputing.ne t/resources/next/hardware/ns33_compatibility/nextstep_compatibility.ht ml) 以及OPENSTEP 4.x and NEXTSTEP 3.3 for Intel Driver List,这份手册更新 一点 Rhapsody Resource Page (Link: http://www.rhapsodyos.org/hardware/os-ns _guides/os-ns_guides_1.html) 兼容NeXTSTEP的PC硬件选配建议 这篇文章的参考平台是86Box模拟器,由于这款模拟器能比较准确的模拟Socket 7/Socket 370时代的硬件,因此对组装真实运行NeXTSTEP的物理机具备一定参考 价值。在对86Box的试验中,我发现大部分Socket 7/Socket 370主板都可以顺利 运行NeXTSTEP,包括Intel HX/BX/ZX,SiS 5571、VIA 693A/694X(Apollo Pro 133/A)等,因此选配的难点就剩下三个 尽量不用SCSI卡尽量使用PCI声卡/显卡/网卡,不用ISA扩展卡尽量使用容易买到 的便宜硬件免SCSI安装NeXTSTEP 虽然目前大部分NeXTSTEP安装教程,特别是虚拟机相关的教程都使用SCSI光驱, 但实际上,NeXTSTEP 3.3是可以完全使用IDE硬盘和光驱工作的,只是其连接方 式和常见的方式略有不同。大多数情况下,PC使用双IDE控制器,硬盘连接到第 一个IDE口作为主盘,即Primary Master,光驱连接到第二个IDE口作为主盘,即 Secondary Master,但这种连接会导致NeXTSTEP无法识别光驱。 在shawcomputing的NeXTSTEP安装教程中:NEXTSTEP and OPENSTEP Resource Pa ge (Link: http://www.shawcomputing.net/resources/next/software/install /ns_install.html) 最后的“Note on ATAPI CD-ROM”提到: 如果您使用 ATAPI CD-ROM 安装 NEXTSTEP,则必须将 IDE 硬盘和 CD-ROM 连接 到主控制器。硬盘应配置为主盘或主盘且存在从盘(如果此选项可用)。 ATAPI CD-ROM 应配置为从盘。这通常通过更改设备上的跳线来完成。因此我们将硬盘 设置为Primary Master,光驱设置为Primary Slave,NeXTSTEP就可以顺利从IDE 光驱上安装到IDE硬盘,因此也免去了SCSI扩展卡。 显卡选配建议 即使是在NeXTSTEP 3.3发布的1995年,ISA扩展卡仍然相当广泛,因此适用于NeX TSTEP的PCI设备驱动比较有限,但幸运的是NeXT以及苹果后续补充了一些PCI硬 件的驱动,特别是几个覆盖型号较广的通用显卡驱动,比如: S3GenericDisplay.pkg.compressedTridentGeneric.pkg.compressedATIRageDis play.pkg.compressedS3驱动覆盖了大量流行的显卡,包括S3 732 (Trio32), S3 764 (Trio64), S3 764 (Trio64V+), S3 801, S3 805, S3 864 (Vision), S3 868 (Vision), S3 911等等,在86box中实测,该S3驱动大概支持到Virge GX, 但应该不支持Virge GX2,市面上便宜的S3 Trio系列应该全覆盖。 Trident驱动支持Trident 9440/9680显卡,ATI Rage驱动则覆盖ATI 3D Rage, A TI 3D Rage II, ATI 3D Rage II+, ATI 3D Rage Pro,由于没有机会实测,目 前还不太确定是否支持市面上最广泛的Rage XL 网卡选配建议 在NeXTSTEP 3.3发布时,市面上大多数以太网卡仍然是10Mbps的ISA网卡,直到1 998年100Mbps的PCI网卡才开始广泛使用,NeXTSTEP有两个beta版驱动,分别支 持Intel 82557/82558网卡和3Com EtherLink XL(3c905系列)网卡 Intel82557Net.pkg.compressedEtherLinkXL.pkg.compressed上述显卡、网卡驱 动都在这里可以下载到:https://www.nextcomputers.org/NeXTfiles/Software /NEXTSTEP/Drivers/nextstep_3.3/beta/ 此外,由于NE2000 ISA兼容网卡Realtek 8019/8029非常便宜,特别在此说明一 下,NeXTSTEP的NE2000网卡驱动可以在这里下载: https://ftp.nice.ch/pub/next/system/driver/ethernet/ 但由于NeXTSTEP对ISA PnP的支持很有限,需要使用DOS启动盘和RSET8019/RSET8 029设置工具将网卡设置为非即插即用(non-PnP)模式,并手工设置I/O地址。I RQ等,之后既可以使用NE2000驱动联网。 声卡选配建议 NeXTSTEP 3.3仅支持一款PCI声卡,即ES1371,幸运的是该声卡足够便宜 Releases · novi/SoundBlaster16PCI (Link: https://github.com/novi/Sound Blaster16PCI/releases) 对于ISA声卡而言,SoundBlaster和使用AD1848的Windows Sound System声卡驱 动已经内建,而雅马哈YMF71x系列声卡则可以尝试beta驱动中的YamahaOPLAudio .pkg.compressed 在86Box上“模拟装机” 根据硬件选配建议,就可以在86Box里“模拟装机”了。主板选用精英P6BAP,值得 一提的是这款主板直到今天仍然能在淘宝买到,价格不到300元,当然,其他同 样使用VIA 693A芯片组的主板价格更低,一百多块即可买到。相比之下Intel 44 0BX/ZX主板则比较少,而且更贵。 CPU使用经典的赛扬300A,NeXTSTEP 3.3推出时市面上主流的CPU还是Socket 3的 486DX/4 100或者5x86,Pentium 100在当时都算比较高端的配置,因此任何Sock et 370 CPU都算“超配”了,内存给64M,典型的1998年的配置。 (Image: https://picx.zhimg.com/v2-3f28f1db5c4354c0aa7bbcf8ac97d166_720 w.jpg?source=d16d100b) 由于上面提到的S3Generic驱动的原因,86Box里几乎所有的S3显卡都可以随便选 ,但ViRGE/GX2(357)和之后的Savage系列就太新了,NeXTSTEP支持不了。 (Image: https://picx.zhimg.com/v2-f5f767c993583f897ec89837b8983951_720 w.jpg?source=d16d100b) 声卡就选ES1371了,没问题 (Image: https://picx.zhimg.com/v2-dfa7ede1cf214aec24eb279a5deada1d_720 w.jpg?source=d16d100b) 网卡我选的NE2000,值得注意的是86Box中的RTL8019AS只能模拟PnP模式,并不 支持通过RSET8019.exe工具配置,因此只能选纯NE2000。另外86Box中的PCI网卡 唯一能被NeXTSTEP支持的应该是AMD PCnet-PCI II。AMD的这几款卡在国内比较 难淘,如果真装物理机的话还是Intel或者3Com比较容易 (Image: https://pic1.zhimg.com/v2-3f38373ef137545a70c10b02a4065f33_720 w.jpg?source=d16d100b) 硬盘模拟了一块1.6GB的IDE硬盘,挂在0:0上,即Primary Master,配置少于2GB 是有意为之,考虑未来把这个镜像写入到2GB CF卡里挂在物理机上。 (Image: https://pica.zhimg.com/v2-6afd0afd90d78c44597181cd3c627b38_720 w.jpg?source=d16d100b) 光驱模拟52x CD-ROM,挂在0:1上,即Primary Slave,实际测试下来将光驱设为 主盘、硬盘设为从盘也没问题。 (Image: https://pica.zhimg.com/v2-7e91f648a5d2de0600f83c3911531958_720 w.jpg?source=d16d100b) 这样一台模拟的Socket 370平台就装好了。 在模拟器上安装系统 由于NeXTSTEP 3.3推出时尚无支持光驱启动的BIOS,所以必须先由软驱启动,再 从光驱安装系统,在下面的网站上能找到7张软盘镜像:https://www.nextcompu ters.org/NeXTfiles/Software/NEXTSTEP/Floppy_Images/ 3.3_Boot_Disk.floppyimage3.3_Core_Drivers.floppyimage3.3_Driver_Disk.f loppyimage3.3_Addl_Drivers.floppyimage3.3_Beta_Drivers.floppyimage3.3_ PCCard_Install.floppyimage3.3_Moto_Boot_Disk.floppyimage分别是“X86启动 盘”,“核心驱动”,“驱动”,“附加驱动”,“beta驱动”,“PC卡驱动”和“68K驱动 盘”,但我实际用到的只有三张: 3.3_Boot_Disk.floppyimage3.3_Core_Drivers.floppyimage3.3_Beta_Drivers. floppyimage下载到的.floppyimage实际上就是标准的raw镜像,如果要将这些镜 像写入到真实的软盘,就需要用到rawwritewin-0.7.zip,而直接将文件后缀改 为.img就可以在86Box上挂载。 将NeXTSTEP的user.iso装入虚拟机光驱,Boot_Disk装入软驱启动虚拟机,正常 以英文菜单安装,当出现下面提示时,装入Core_Drivers磁盘继续 (Image: https://picx.zhimg.com/v2-dab4b7e53db97104ff2f57a8e4d007a7_720 w.jpg?source=d16d100b) 然后在出现这个提示时,直接装入Beta_Drivers磁盘 (Image: https://pic1.zhimg.com/v2-38699e00ee672632ac652fd2be78d27e_720 w.jpg?source=d16d100b) 即使没有SCSI卡,NeXTSTEP也要求至少加载一个SCSI驱动,才可以继续装入IDE 驱动,这里我们随便选一个就可以,比如1. Adaptec 1542CP (Image: https://pic1.zhimg.com/v2-db7aca54ba6f53b7ce0c3dae3a82eac6_720 w.jpg?source=d16d100b) 然后就可以看到EIDE驱动的选项了,一般我们选4. EIDE and ATAPI Device Con troller (v3.35),这个驱动兼容性比较好,可以同时支持硬盘和光驱 (Image: https://picx.zhimg.com/v2-cad78f73195f1f285b505bd8e20c8b14_720 w.jpg?source=d16d100b) 然后就不需要安装其他驱动了,直接继续就可以完成安装了。 安装驱动 刚刚安装完成,但没有驱动的NeXTSTEP机器唯一和外界沟通的管道是光驱和软驱 ,但Windows下创建的FAT12软盘镜像虽然可以被NeXTSTEP读取,但只支持8.3文 件名。所以创建光盘镜像更方便一些,值得一提的是,光盘镜像的ISO 9660文件 名格式应选为Windows/Unix,这样NeXTSTEP能够正常识别长文件名。 (Image: https://pica.zhimg.com/v2-6aa6c47bd944b955e7175d283e27b57e_720 w.jpg?source=d16d100b) 以UltraISO为例,在文件>属性中可以选择文件名格式安装pkg格式驱动 第一类驱动是pkg驱动,比如S3GenericDisplay.pkg.compressed,系统可以自动 解压它成为原始的.pkg格式。 (Image: https://pica.zhimg.com/v2-3b5ec10022e5e83cfb7b9b12fa848fac_720 w.jpg?source=d16d100b) 带有四个箭头的是.compressed文件,“田”字型的则是.pkg文件安装pkg格式需要 root权限,因此需要先选中pkg文件,然后在菜单中Services → Open Sesame → Open As Root,“芝麻开门”一下才能正常安装 安装config格式驱动 这一类驱动通常以tar或者tar.gz打包,NeXTSTEP的文件浏览器可以自动解压tar ,但不能解压gz,如果是tar.gz格式,需要先在终端程序Terminal中使用gzip - d命令解压为tar,然后再在文件浏览器里解包。 (Image: https://picx.zhimg.com/v2-04d5bf08e347b409599522679dd1f4df_720 w.jpg?source=d16d100b) 安装config驱动比较容易,直接双击打开.config文件即可安装完成。 配置驱动 在NeXTAdmin中的Configure.app完成驱动的选择和设置,出于对昂贵而有限(25 6 KB)的显存容量的妥协,多数NeXT电脑都以黑白灰阶显示换取高分辨率(1120 x832),只有少数NeXTstation Color工作站(1.5MB显存 4096色)和安装有NeX Tdimension显卡(4MB显存 32位真彩色)的NeXTcube才支持彩色显示。 (Image: https://pica.zhimg.com/v2-cb8ebf2b0608e8852a85d0d786f6f65c_720 w.jpg?source=d16d100b) 因此将显示模式设置为1152x864,8为灰阶能够得到最接近典型的NeXTcube和NeX Tstation体验。之所以强调这一点,是许多人夸大早期Macintosh和NeXT电脑具 有“优异的显示色彩”,却忽视了两者都在彩色和分辨率的权衡中完全偏向高分辨 率的一端。 修改驱动以支持更多硬件 NeXTSTEP上提供的驱动很有限,但通过对驱动进行修改,可以让NeXTSTEP驱动有 机会支持原本不支持、但相似的硬件,一个典型的例子是NeXTSTEP中的Cirrus L ogic GD5434驱动同样可以支持GD5446,而后者是QEMU默认的PC SVGA显卡。 Cirrus Logic GD5434驱动可以在这里下载: https://www.nextcomputers.org/ NeXTfiles/Software/NEXTSTEP/Drivers/nextstep_3.3/released/ NeXTSTEP在根目录下有一个private隐藏目录中,而驱动则在/private/Drivers/ i386目录中,每一个驱动都是一个.config目录 (Image: https://pica.zhimg.com/v2-edad78ecdc1e0d5fed4adef2afbab99b_720 w.jpg?source=d16d100b) 类似Windows下的硬件驱动以.ini文件记录适配的硬件信息,NeXTSTEP的硬件信 息存在.table文件中,因此我们就可以修改驱动的配置文件来尝试让它支持之前 不支持的硬件。 以GD5434驱动增加GD5446支持为例,它包含了几个.tables文件适配不同的硬件 ,因为大多数GD5446显存大于2MB,而且安装在PCI插槽,因此我们猜测需要改动 的文件是PCITwoMB.table。之后在Terminal中尝试改动PCITwoMB.table,记得先 用chmod +w添加写入权限 su cd /private/Drivers/i386 cd CirrusLogicGD5434DisplayDriver.config chmod +w PCITwoMB.table vi PCITwoMB.table (Image: https://picx.zhimg.com/v2-87dcdca9593181aba73fe19bb8142c0b_720 w.jpg?source=d16d100b) 我们可以看到里面有一行Auto Detect IDs,后面跟着的就是该驱动对应的PCI I D,00a8是GD5434的DeviceID,0013则是Cirrus Logic的VendorID PCI ID可以在这里查到:PCI Devices (Link: https://admin.pci-ids.ucw.cz/ read/PC/1013) 我们可以查到GD5446的DeviceID是00b8,它完整的PCI ID就是00b81013我们把这 个ID加入到Auto Detect IDs一行,两个PCI ID之间用空格隔开 "Auto Detect IDs" = "0x00a81013 0x00b81013" 然后原本仅适用于GD5434的驱动就可以用于GD5446了,在Configure.app中重新 安装显卡驱动,可以直接识别并顺利安装。利用这种办法,可以略微扩大NeXTST EP支持的硬件范围。 配置TCP/IP网络 如果你使用86Box模拟器,需要Npcap才能桥接网络,但需要注意Npcap对Wi-Fi桥 接并不总是有效,因此我使用的是有线网卡。如果使用SLiRP方式,则FTP可能工 作不正常,请自己权衡。如果是物理机则正常连接网线即可。 (Image: https://picx.zhimg.com/v2-05aeabf8f2db3edd84fcda674ee1734e_720 w.jpg?source=d16d100b) 配置好网卡驱动后,如果看到这个画面,大概说“服务器没有响应”,那么恭喜, 网卡驱动已经正常启动了,按Ctrl-C跳过搜索服务器即可进入系统。NeXTSTEP默 认工作在由NetInfo驱动的工作站网络中(后来Mac OS X也保留了NetInfo,但重 要性大大削弱了)。对于单独的工作站,有一篇指南专门讲它的设置 https://www.vintagecomputer.net/Next/TjLs_Cable_Modem_Guide.pdf (Link: https://www.vintagecomputer.net/Next/TjLs_Cable_Modem_Guide.pdf) 为了减少各位阅读英文文档的痛苦,我在这里简单讲一下网络的设置,大概分为 三个部分: IP地址设置FQDN主机名设置DNS设置IP地址设置 这一部分简单直接,在NeXTAdmin中打开HostManager,选Local...菜单就可以改 IP地址了。因为不使用NetInfo,所以选Use local domain only,仅使用本地域 ,其他IP地址,广播地址,子网掩码,路由器按照一般IP网络的配置填写就可以 。填写完会要求重启。 (Image: https://picx.zhimg.com/v2-299ab89ba81902075fe241a854e93f7e_720 w.jpg?source=d16d100b) 完成这一步就已经有IP地址了,NeXTSTEP中的ping命令需要root权限,在Termin al里先打su切换到root,然后就应当能ping通路由器。 FQDN主机名设置 NeXTSTEP需要给新添加的IP地址加入一个主机名,不然一些网络功能不能启动, WorldWideWeb也会闪退,TjLs_Cable_Modem_Guide中介绍的是通过NetInfoManag er添加主机名的办法,比较容易误操作,我自己的习惯是在HostManager里添加 。 (Image: https://picx.zhimg.com/v2-4783210f82763369d7eb437634509d13_720 w.jpg?source=d16d100b) 在菜单中选Host → New,然后填入本地主机名,IP地址,Ethernet Address空掉 不填,主机别名一般就是主机名后面加.local,然后保存即可。 DNS设置 NeXTSTEP并没有为DNS设置提供图形化的工具,但兼容BSD标准的resolv.conf, 因此在/etc目录下建立它就可以: cd /etc su vi resolv.conf 然后使用vi编辑器,加入DNS服务器的信息即可 nameserver 192.168.1.254 重新启动系统,它就能ping通公网上的域名了。 下集预告 这个系列的下一集,我们将安装NeXTSTEP开发工具(也是XCode的前身),编译1 992年的WorldWideWeb代码并修复它在X86上运行的一点小bug。