Linux/m68k:摩托罗拉 68000 处理器上的 Linux
“Linux 是不可移植的(使用了 386 任务切换等),而且它可能永远不会支持 AT 硬盘以外的任何东西,因为那是我所拥有的一切。” --Linus Torvalds,1991 年 8 月 25 日。
自从 Linus 写下这些话以来的五年里,Linux 已经从其 Intel 根基移植到许多其他架构:Alpha 和 Sparc 处理器的移植对于Linux Journal的读者来说可能是最熟悉的。在所有对移植到越来越奇异的硬件的关注中,很容易忽略第一个生产质量的移植:Linux/m68k。
“m68k”代表摩托罗拉 68000 系列处理器,它位于流行的计算机(如 Apple Macintosh、Amiga、Atari ST 及其后继者(Atari TT、Medusa 和 Falcon),以及 Sun 3、NeXT、惠普/阿波罗域工作站等)的核心。MC68020(带有 MC68851 内存管理单元)、MC68030、MC68040、MC68LC040 和 MC68060 是 Linux/m68k 支持的 68000 系列中唯一的 CPU,因为 Linux(像其他类 Unix 操作系统一样)需要内存管理单元 (MMU) 来支持保护和虚拟内存。浮点单元是可选的,但建议使用。浮点仿真未在主内核树中分发,因为其版权与 GNU 通用公共许可证冲突。
与 Linux/i386 一样,4MB 的 RAM 是绝对最小值,8MB 对于大多数用途来说已经足够了。X Window 系统至少需要 12MB 的 RAM 才能获得可用的系统。最小安装目前需要大约 55MB 的硬盘空间,再加上至少几 MB 的交换空间。我的个人系统目前有大约 830MB 的硬盘空间用于 Linux(一个 SCSI 硬盘和两个 IDE 硬盘的大部分空间)。说到 RAM 和硬盘空间,你永远不会嫌多。
Linux/m68k 最初是 Linux 移植到仅在 Amiga 上工作的版本。Hamish Macdonald 和 Greg Harp 于 1993 年 7 月 1 日公开发布了他们的第一个版本,他们称之为 0.05。此版本基于 Intel Linux 0.99pl9。在该版本发布后不久,几个独立工作的 Atari 用户小组首次尝试将该移植版本适配到该平台。这两个移植版本从 1994 年 7 月的 0.9 开始合并到一个树中,许多新功能(如以太网、帧缓冲和 X Window 系统支持)在当年晚些时候的 0.9pl5 中出现。进一步努力将 Linux/i386 1.0 和 1.1 系列的一些进步(包括 ELF 支持)合并到 Linux/m68k 0.9 系列中,最终形成了 0.9pl13。Roman Hodek 接管了 0.9 的维护工作,而 Hamish 开始着手赶上 Linux/i386,当时正接近 1.2 版本。
将 Linux/m68k 适配到通用 1.2 内核是一个困难的过程。从第一个公开发布版本 (1.2.10) 开始,在 11 个月内有 13 个补丁级别(最终版本被称为 1.2.13pl10)。Linux/m68k 下使用的 ext2fs 格式更改了两次(一次是从 0.9.13 到 1.2.10,另一次是在 1.2.13pl4 中)。总的来说,1.2 系列见证了 Linux/m68k 成熟为一个可用的系统;X 支持方面取得了重大改进,并在 Amiga 上实现了彩色显示。
然而,当 Linux/m68k 1.2 变得稳定时,Linux 社区的其他部分正在快速发展。Hamish 再次将一个可用的内核交给 Roman,并对 1.3 系列进行了一些初步工作;Jes Degn Sòrensen 在 1995 年秋季采用了 1.3 源代码树,并开始协调其工作。在克服了基本代码工作的最初障碍之后,进展很快。第一个可工作的 1.3 系列内核 (1.3.23) 于 1996 年 2 月下旬发布,并在 4 月初(与 1.3.86 同步,在 Linux 发布后一天)。
当前稳定的 Linux/m68k 版本是 2.0.28。Linux/m68k 的开发仍在继续,最近发布的 2.1.17 开发版本的主内核集成了来自 Linux/m68k 树的数百 KB 的更改。
截至 Linux/m68k 2.0.28,即生产 2.0 内核的最新版本,Amiga 和 Atari 已获得直接支持。摩托罗拉 VMEbus 系统(MVME 162、166 和 167)的用户可以使用早期版本 2.0.8。Sun 3 和惠普/阿波罗域工作站以及 Apple Macintosh 的移植工作正在进行中。人们对移植到 NeXT 工作站也表现出一些兴趣。
Linux/m68k 和 Linux/i386 在源代码级别的兼容性非常高。几乎所有不使用 Intel 特定优化(如 -m486)、汇编代码、SVGAlib 或 /dev/port 的程序都应该“开箱即用”。值得注意的例外是期望 proc 文件系统的数据采用特定格式的程序(例如 /proc/interrupts,在 Linux/m68k 上可以包含任意数量的中断,包括共享中断)。几乎所有 GNU 项目的软件都已在 Linux/m68k 上成功测试和使用,流行的 Perl、Python 和 Tcl 编程语言以及免费 Web 浏览器(包括 Arena、Chimera、Grail、Lynx 和 Mosaic)也是如此。
截至本文撰写之时,没有为 Linux/i386 提供的商业软件为 Linux/m68k 重新编译,也没有大多数其他未发布源代码的软件(值得注意的例外是 XForms 库)。主要障碍如下:
Linux/m68k 上没有 SVGAlib 支持。
Linux/m68k 上没有真正的 Motif 移植。Motif 1.2 已在 Linux/m68k 下成功编译和使用,但完成这项工作的人员没有销售 Motif 的许可证。
与 Intel 和 Alpha 上的 Linux 不同,Linux/m68k 下没有标准视频硬件。Amiga 和 Atari 视频芯片组从根本上是不同的,这两种系统可用的各种图形适配器也是如此。Linux/m68k 通过使用通用帧缓冲 (UFB) 设备来解决这个问题。这个术语具有误导性,因为它目前仅在 Linux/m68k 上使用;但有计划将其与 SparcLinux 帧缓冲合并。UFB 设备抽象了硬件接口,以支持相对简单、设备和系统无关的编程接口。一个易于使用的用户模式库,称为 oFBsis,正在作为 OSIS 项目的一部分开发,以模拟 Atari TOS 环境。UFB 方法的一个副作用是几乎所有 Linux/m68k 二进制文件都与所有 Linux/m68k 平台兼容。例如,XFree68 服务器二进制文件可以操作 Atari 和 Amiga 上 Linux/m68k 支持的所有显示硬件。甚至内核也可以编译为在 Atari 和 Amiga 上运行,并且在 2.0 系列之前都是这样分发的,当时每个操作系统所需的设备数量使得组合内核对于只有 4 MB RAM 的用户来说太大了。更多支持 UFB 接口的程序即将推出。
最近几个月最令人兴奋的进展之一是将 Debian 发行版移植到 Linux/m68k。Debian/m68k 目前正在进行 beta 测试,并将与下一个 Debian 版本一起发布。大多数用户目前使用许多称为 Watchtower-2 文件系统的 tar 文件手动安装 Linux/m68k,对于不熟悉 Unix 的人来说,这是一个相当复杂的过程。还有一个基于 1.2 系列内核的较旧发行版,称为 ALD,可在 CD-ROM 上用于 Atari。为这两个平台提供合适的发行版,并获得 Amiga 和 Atari CD-ROM 供应商以及 Linux CD 销售社区的支持,将有助于使 Linux 成为严肃的 Amiga 和 Atari 用户的可行替代操作系统。目前,唯一可用的 CD-ROM 是 ALD CD-ROM 和 Infomagic 的季度 Linux Developer's Resource 6 CD 集。
随着 Amiga 和 Atari 商业开发者社区在过去几年中的消失,许多用户转向自由软件基金会的 GNU 项目寻求他们需要的工具。不幸的是,FSF 工具的 Unix 传统给必须应对冲突的文件命名格式、与底层操作系统的弱集成以及占用大量内存的仿真库的 Amiga 和 Atari 用户带来了问题。Linux 和其他免费的类 Unix 操作系统可以提供一个适合运行这些工具的环境,并内置内存保护和虚拟内存等功能,而且成本极低。
在 X 下运行行为良好的 Amiga 和 Atari 程序方面正在取得实质性进展。上面提到的 OSIS 项目已经可以用于许多 Atari TOS 应用程序;AmigaOS 仿真也可用,但速度较慢(通过 Un*x Amiga Emulator),在 UAE 和 AmigaOS Replacement OS (AROS) 下,正在努力为在 AmigaOS 规则内运行的程序提供更快的支持。全速 Macintosh 仿真也应该是可能的,就像在 AmigaOS 下一样,但到目前为止,还没有人演示过。与摩托罗拉平台上的其他类 Unix 操作系统(类似于 Intel 上的 iBCS)的二进制兼容性是另一个可以进一步开发的领域,并且可能会随着 Sun 3 移植而出现。一旦 Linux/m68k 变得容易被 Amiga 和 Atari 用户及其庞大的自由软件创作社区访问,预计将会有更多的仿真支持。
目前,Linux/m68k 下对扩展设备的支持相当有限。几乎所有为 Amiga 和 Atari 设计的以太网卡都受到支持,但目前仅支持相对少数的其他设备。然而,其中许多设备(如 Commodore A2091 和 GVP SCSI 控制器)是最常见的设备之一,或者(如 Phase 5 加速器的 SCSI 选项)是最新的设备之一。Linux/m68k 社区中硬件知识人员的相对缺乏减缓了该领域的发展。随着 Debian 发行版发布后 Linux/m68k 的普及,随着更多具有硬件知识的人员加入开发过程,技术专业知识的匮乏应该会变得不那么令人沮丧。
虽然很难判断其他类 Unix 操作系统在 Amiga 和 Atari 上的普及程度(主要是 NetBSD 和 OpenBSD),但 Linux/m68k 注册站点似乎是对 Linux/m68k 用户进行相当准确衡量的指标。根据该网站的数据,超过 400 人至少在某些时候使用 Linux/m68k。我们的注册站点在大多数致力于 Linux/m68k 的网页上都得到了突出宣传,其维护者 Geert Uytterhoeven 定期向与 Linux/m68k 相关的新闻组发布包含统计数据和注册表格的消息。可以使用该站点上的基于 Web 的表格、通过电子邮件或通过普通邮件进行注册。尽管做出了这些努力,但许多仅偶尔拥有或没有 Internet 访问权限的 Linux/m68k 用户仍未注册。希望 Linux/m68k 发行版的供应商一旦可用,将有助于宣传注册站点。
Web 已成为 Linux/m68k 信息越来越重要的来源。在圣诞节前后为期四天的时间里,记录了 350 次对 Linux/m68k 主页主站点的访问。注册站点每周也收到数百次访问。Amiga、Atari 和 VME 系统的常见问题解答文件和安装指南可在 Web 上找到。其他 Linux/m68k 页面有法语、德语、意大利语和葡萄牙语版本。再加上非常活跃的开发者邮件列表和与 Linux/m68k 相关的新闻组(英语和德语),用户可以从 Linux/m68k 用户和开发者社区获得可靠的信息和快速的响应,从而获得良好的支持。
由于大多数开发者居住在北欧,他们曾在现实生活中见过几次面。Linux/m68k 项目在许多方面都是更大的 Linux 项目的缩影,它汇集了来自世界各地的人们,共同追求一个共同的目标。最近一位在 comp.os.linux.m68k 上发帖的人评论说,68000 系列处理器还有多年的生命力。我们这些致力于推广 Linux/m68k 的人希望保持摩托罗拉 68000 成为严肃计算的可行平台。借助 Linux/m68k,您可以组装一个完整的 Linux 系统,价格远低于 1,000 美元。因此,在您冲出去购买 8,000 美元的 Alpha 之前,请在您的壁橱里翻找一下,找到那台旧处理器,安装 Linux/m68,并拥有一台功能相同但价格低得多的计算机。
