Linux 2.2 的精彩世界

作者:Joseph Pranevich

正如任何内核开发人员肯定会告诉你的那样,Linux 2.2 的问世迫在眉睫。Linux 2.1 正在缓慢地走向完成,其版本号接近天文数字,截至本文撰写时已达到 2.1.108,所有人的目光都集中在 2.2.0 版本将在各种发行版中标准发布的那一天。即使您实际上并没有逐版本地跟踪 Linux 内核,2.2 也是一个需要理解的重要里程碑。本文是我对近期 Linux 内核发展的看法,带有明显的 x86 偏见,这是我在家中最常使用的 Linux。

芯片盛宴

英特尔芯片世界的发展日新月异,如果您没事可做,可以关注一下。Merced、Celeron、MMX——英特尔技术的名称层出不穷,不断被新的尖端技术所取代。(这些技术是否值得商榷。)此外,AMD、Cyrix 和其他公司已成为市场上的有力竞争者,每家公司都有自己独特的小优化、怪癖和漏洞。跟上它们的步伐真是一团糟。

Linux 2.2 将是第一个稳定的 Linux 版本,它支持针对每种芯片的优化,并在内核配置工具中选择处理器供应商,以实现更好的微调。也许更重要的是,Linux 2.2(以及 2.0 的后续修订版,原因显而易见)支持针对广泛存在的处理器漏洞的错误修复和解决方法,包括臭名昭著的 F00F Pentium 漏洞。其他无法解决的漏洞,例如一些 AMD K6 漏洞,会在启动期间报告。

Merced 尚未问世,可能也不会很快问世;但是,Linux 2.2 已经移植到 SPARC64、Alpha 和其他 64 位平台,因此 64 位原生内核的基础设施(令人高兴地)已经就位。当然,在 Linux/Merced 发布之前,还需要克服其他障碍,但拥有一个 64 位就绪的内核是一个重要的步骤。

多处理器机器现在的运行效率将比 Linux 2.0 高得多,并且消除了全局自旋锁等问题。支持最多 16 个处理器(与 2.0 相同),但性能差异应该会令人惊叹。此外,现在对 Intel 主板上的 IO-APIC 提供了更大的支持,这将使 SMP 的总体支持更好。

在其他端口方面,Linux 2.2 将改进对大量“大型机”机器的支持,例如 SPARC、SPARC64、ARM 和 Alpha 机器。至于“桌面”机器,Linux 2.2 已移植到 Macintosh 的 m68k 和 PPC 版本,硬件支持程度各不相同。(您可以预期,随着我们接近 2.4 或任何后续版本,支持只会越来越好。)

稍微跑题一下,目前正在继续努力在 8086、8088、80186 和 80286 机器上支持 Linux 内核的子集。这不太可能在 2.2 版本及时可用,但值得在未来关注。

系统总线和各种杂项

虽然不那么重要,但 Linux 2.2 将通过完全支持某些 PS/2 和旧机器上使用的 Microchannel 总线,来支持更大比例的现有 x86 计算机。

除了对总线系统的数百个小修补程序(包括许多新的 PCI(协议控制信息)设备名称)之外,还进行了更大的改进。特别是 PCI 经历了多次重大更改。首先,PCI 设备报告接口已更改和移动,以便更轻松地添加新的信息字段。此特定更改对于最终用户来说并没有太大区别,但它使开发人员的生活更加轻松。此外,现在可以选择是否希望使用兼容的 PCI BIOS 或通过直接访问来扫描 PCI 总线。此功能使 Linux 2.2 可以在更多机器上工作:一些 PCI BIOS 与标准不兼容,并导致启动问题。

遗憾的是,Plug-and-Play ISA 设备的内核支持很少。虽然这将是一个巨大的改进,但当前提议的系统存在一些问题需要在 2.3 版本中解决。幸运的是,有一个很棒的用户级实用程序 isapnp 可用于设置 PnP 设备;它需要比我希望的更多的工作,但在真正的 Linux 风格中完成了这项工作。

IDE、SCSI 和 USB——我的天啊!

就 Linux IDE 而言,几乎没有明显的更改。最明显的一个是,现在可以将 IDE 子系统作为模块加载和卸载,就像 SCSI 一样。这还额外允许使用基于 PnP 的 IDE 控制器。对于不太前沿的机器,更新后的 IDE 驱动程序现在支持较旧的 MFM 和 RLL 磁盘和控制器,而无需加载旧版本的驱动程序。Linux 2.2 还能够自动检测和配置所有基于 PCI 的 IDE 卡,包括激活 DMA 总线主控以减少 CPU 开销并提高性能。最后,为有缺陷或只是不同的控制器开发了更多驱动程序。令人惊讶的是,即使是优秀的东西也可以继续变得更好。

在 IDE 世界的其他地方,并行端口 IDE 设备变得越来越普遍,并且在很大程度上现在受 Linux 2.2 支持。可以很好地假设,随着 2.2 的发展,将添加许多当前不受支持的设备。

对于可重写 CD-ROM 等设备来说不幸的是,仍然存在需要使用新添加的 SCSI 仿真驱动程序作为支持的权宜之计的情况。我不喜欢它,但事实就是如此。此限制可能会在 CD-ROM 驱动程序的未来版本中删除,但很可能在 2.2.0 版本发布时仍然存在。

SCSI 子系统的主要改进是为许多新卡和芯片组添加了许多新驱动程序——太多了,甚至无法开始列举。

坏消息是关于支持 USB(通用串行总线)和 USB 设备的持续努力;到目前为止,在该领域取得的任何进展都未包含在 Linux 2.1 版本中。虽然这可能会在官方 2.2 版本发布之前发生变化,但如此大的功能不太可能在如此接近发布时被包含进来。

端口:并行和串行

在这方面没有什么新鲜事;Linux 一直对这些基本构建块提供令人难以置信的支持。并行端口驱动程序已针对跨平台问题进行了重写,因此曾经只是一个“并行端口”现在在功能上是一个“PC 风格的并行端口”。请注意,用于标记并行端口的命名约定已更改,因此您可能会发现您的 lp1 已变为 lp0。发行版应该会自动允许此更改。

串行支持也像往常一样稳步发展,但有一个明显的区别。以前,串行设备(如调制解调器)涉及两个设备,一个用于呼入,一个用于呼出(分别为 ttyS 和 cua)。从 Linux 2.2 开始,两者合并为一个设备 (ttyS),并且访问 cua 设备现在会在内核日志中打印警告消息。从好的方面来说,Linux 2.2 包括支持超过四个串行端口,它允许串行设备共享中断,并且它包括许多用于非标准端口和多端口卡的驱动程序。我对串行支持的唯一抱怨是它缺乏对模块在模块加载时通过 modules.conf 文件和 kmod 传递设备参数的标准方法的支持。相反,这些参数是使用 setserial 命令设置的。

CD-ROM、软盘和可移动媒体

值得庆幸的是,数百种 CD-ROM 标准的杂乱局面已经巩固在 ATAPI CD-ROM 的“标准”背后。这种喘息的机会让开发人员有时间完全重写 CD-ROM 驱动程序系统,使其在支持方面更加标准化。各个驱动程序之间的小而古怪的差异现在都已修复,以获得更好的支持。

可重写 CD-ROM 的支持不如我希望的那样好。SCSI CD-ROM 做得很好,但 IDE 驱动器可能需要 SCSI 仿真权宜之计驱动程序。此限制可能会在 CD-ROM 子系统的未来版本中删除,但这是目前必须应对的事情。

软盘的工作情况一如既往地出色。在大型软盘方面取得了新的进展,并且所有这些是否都将受到支持还有待观察。所谓的 ATAPI 软盘已经有一个驱动程序。

IOMEGA 的 Zip 驱动器是一种越来越流行的存储解决方案,在 Linux 2.2 下得到了很好的支持。这些野兽有两种版本:SCSI 和并行。在 SCSI 下,Zip 驱动器的支持方式与任何其他磁盘相同。这些驱动器的并行版本实际上使用了一种基于并行协议的 SCSI,Linux 2.2 也支持这种协议。其他 IOMEGA 解决方案(如 DITTO 驱动器)也可能使用 ftape 驱动程序获得支持。

DVD 的问题是似乎没有人知道答案。DVD 很可能已经以某种方式获得支持,最有可能通过 IDE ATAPI 驱动程序接口。DVD 非常像 CD-ROM。如果出现 Linux 2.2 不支持的标准,则很肯定会在初始版本发布后的 2.2.x 稳定周期中添加该标准。

Linux 2.2 可能支持也可能不支持其他可移动媒体。如果所讨论的设备通过并行端口连接,则它有可能使用内核中包含的并行端口 IDE 设备协议模块之一获得支持。

美妙的声音

终于,声音代码已被部分重写,从头到尾完全模块化。发行版将能够更轻松地为其用户开箱即用地包含通用声音支持,并使其余用户更轻松地加载和配置声音设备(特别是,烦人的即插即用设备)。还支持许多新的声音设备,看起来这似乎是 Linux 在明年将真正改进的领域之一。

一个值得注意的缺陷是缺乏对 PC 内部扬声器的支持,即使只是为了完整性。再说一遍,Windows 也没有这样做,所以我有什么资格评判呢?

Video4Linux

Linux 2.2 现在对越来越多的电视和无线电调谐器卡以及数码相机提供了惊人的支持。这确实是 2.1 名册中一个尖端的新增功能,因此可能仍然存在一些未纠正的问题,但有理由相信它们会及时得到修复。在我看来,这对于 Linux 来说绝对是一个令人惊叹的领域。

支持我,Scotty!

自 2.0 版本发布以来,Linux 2.2 的备份和磁带设备子系统没有太大变化。当然,已经编写了更多设备驱动程序,并且对于基于软盘控制器的备份设备(包括 IOMEGA DITTO)进行了重大改进。

可重写 CD-ROM 已成为备份数据的流行解决方案,并且它们在 Linux 2.2 下以原生方式或通过使用 SCSI 仿真驱动程序获得支持。在这方面仍然存在一些问题——请参阅我上面关于 CD-ROM 的说明。

操纵杆、鼠标和输入设备

操纵杆将在 2.2 中得到更好的支持,包括大量新的操纵杆和带有过量按钮的操纵杆。

2.2 中的鼠标与 2.0 中的鼠标没有太大区别。与 2.0 中一样,鼠标支持方面的一些不一致之处将在未来得到解决。在大多数情况下,鼠标控制是通过内核外部的守护程序提供的。一些鼠标驱动程序故意模拟 Microsoft 标准鼠标。这背后的理由很明显,但如果以一种或另一种方式决定下来就更好了。我唯一其他的抱怨是,带有小滚轮的 Microsoft 鼠标没有真正的支持,甚至没有将滚轮用作第三个按钮。同样,这真的不是内核问题。但是,没有出现大问题。

此外,Linux 2.2 现在支持多种其他输入设备,包括一些数字化仪。如果您的设备模拟鼠标(许多设备都这样做),那么 Linux 2.2(实际上是 Linux 2.0)已经支持它。

零星碎片

Linux 2.2 内核中添加了许多较小的补充,使其更加健壮,其中许多补充确实不适合任何其他类别。环回驱动程序允许您将磁盘映像挂载为真实驱动器,该驱动程序已得到改进,可以更好地支持加密,尽管美国法律可能存在问题。此外,现在为“初始 RAM 磁盘”提供支持,以允许 Linux 用户或发行版启动一个 没有 编译硬件支持的内核,并从小型 RAM 磁盘加载所需的设备驱动程序。这对于具有即插即用设备的系统非常有用,这些设备在用户模式配置程序运行之前无法访问。Linux 2.2 中还提供了一个驱动程序,可以直接访问 CMOS(互补金属氧化物半导体)RAM,无论出于何种原因。访问许多 BIOS 的闪存的类似驱动程序未放入 2.2 版本,但可能会包含在 Linux 2.4 版本中。可能仍然需要从软盘启动 DOS 才能更新计算机的可闪存 BIOS。最后,Linux 2.2 允许您通过网络共享原始磁盘映像。

面向世界的文件系统

Linux 2.2 具有广泛的新文件系统和分区类型,以提供互连性。对于 Microsoft 爱好者来说,Linux 现在将读取(也可能写入)NTFS(Windows NT)分区和 Windows 98(以及 Windows 95 OSR2)FAT32 分区。Linux 2.2 还了解 Microsoft 的 Joliet 系统,用于 CD-ROM 上的长文件名,以及 Microsoft 发明的一种新型扩展分区。

用于读取和写入 Microsoft 和 Stacker 压缩驱动器的驱动程序正在开发中,但尚未包含在内核中。

为了实现 Macintosh 连接,已包含用于读取和写入 Macintosh 磁盘的 HFS 驱动程序。尚不支持 HFS+ 和较旧的 Macintosh 文件系统。内核也可以读取 Macintosh 分区表;这允许本机挂载 Macintosh SCSI 磁盘。

遗憾的是,OS/2 用户仍然无法写入其 HPFS 驱动器。HPFS 驱动程序进行了一些更新以支持新的“dcache”系统,但没有进行期望的大修。

如果还有 Amiga 用户,他们会很高兴知道 FFS 驱动程序自 2.0 以来进行了一些小的更新。如果新一代 PPC Amiga 使用相同的磁盘格式,这可能会特别有用。

为了与其他 UNIX 系统的连接,Linux 2.2 取得了巨大的进步。Linux 2.2 仍然包含 UFS 文件系统,该文件系统用于 BSD 派生的系统,例如 Solaris 和 BSD 的免费版本。Linux 2.2 还可以读取 FreeBSD、SunOS 和 Solaris 使用的分区表格式。对于 SysV 风格的 UNIX 系统,Linux 2.2 具有 SysVFS 的更新版本。它还可以读取 Acorn 的 RiscOS 磁盘。最后,Linux 2.2 具有 ever-popular Minix 文件系统的更新版本,该文件系统可用于大多数 UNIX 系统上的小型驱动器和软盘。由于有如此多不兼容的格式,而 Linux 2.2 可以读取其中如此多的格式,因此令人惊讶的是,有人曾经完成过任何工作。

在其他新闻中,“扩展”驱动器(较旧版本的 Linux 使用的格式)的支持已被删除,转而支持“第二扩展”文件系统。(这对很多人来说应该无关紧要;Ext2 远优于其前身。)随着对初始 RAM 磁盘支持的增加,创建了“romfs”,它需要的开销非常小。

虽然不太像文件系统,但 Linux 2.2 包括对透明地将文件系统扩展到多个磁盘的增强支持。目前,此支持可用于 RAID 0、1、4 和 5 模式以及简单的线性模式。

视频

对于版本 2.2 中包含的 Linux 内核来说,最令人惊讶和最前沿的补充可能是所谓的“帧缓冲控制台”驱动程序(或简称 fbcon)。

以前,Linux 内核(对于基于 Intel 的机器)仅在文本模式下理解和操作视频设备。图形支持将由另外两个系统提供:用于基于控制台的图形的 svgalib 和用于基于窗口的图形的专用 X 服务器。这种笨拙的系统通常需要重复配置信息,并且每个系统仅支持常用视频设备中有限的一部分。

由于此新增功能相当新,因此它是否真的会取代以前长期存在的二元性还有待观察。不幸的是,在 Linux 2.2 发布后近一年,这个新系统才会足够强大,足以支持我们已经认为理所当然的卡和技术。我个人的看法是这是一个正确的想法,但我会在看到 Linus 和开发人员决定将此功能发展到什么程度后才做出判断。

也可以删除内核提供的“虚拟”终端的支持。这允许非常注重内存的人节省更多空间。

虽然桌面用户无法想象,但 Linux 现在可以在实际上不包含任何类型的视频设备的系统上更好地工作。除了能够通过串行或网络线路登录(Linux 2.0 和以前的 Linux 版本允许)之外,现在还可以将所有内核消息(通常在初始化任何硬件之前直接发送到控制台)重定向到串行设备。

业余无线电

Linux 2.2 支持大量业余无线电操作员的解决方案,包括 Linux 2.0 的大量增强功能。不幸的是,这不是我的强项——我什至从未见过基于 Linux 的业余无线电台。

网络:以太网、ISDN 和低速调制解调器

我在这方面没有太多经验;多年来,我一直在所有机器中使用相同的网卡。但是,不难看出 Linux 2.2 中支持的以太网和 ISDN 设备数量急剧增加。我被告知也支持较新的解决方案,例如有线调制解调器。

在低端方面,变化不大。PPP、SLIP、CSLIP 和 PLIP 仍然可用。我想有些东西不需要太多改进。这些驱动程序都以一种或另一种方式进行了更新。

我在这方面唯一的抱怨是继续不支持所谓的 Winmodem。并不是我责怪 Linux 缺少它们(制造 80% 是软件的调制解调器无论如何都是一个愚蠢的想法),但我内心的理想主义者希望有一天这些讨厌的魔鬼能够像它们更实用的表兄弟一样得到支持。

网络 II:幕后

在协议方面,发生了很多我根本不完全理解的事情。下一代互联网协议 IPv6 已经出现。SPX,IPX 的替代版本,也是新的。DDP,AppleTalk 网络的首选协议也已添加。正如您现在所期望的那样,现有协议已得到改进。我只希望我有需要使用这些东西。

然而,列表还在继续。Linux 2.2 将拥有一个出色的新网络核心、新的隧道代码、一个名为“ipchains”的新防火墙和路由系统、对限制带宽消耗的支持以及更多功能。

文件和打印机共享协议也得到了显着改进和增强。SMB,用于访问基于 MS Windows 的共享文件系统的协议,已通过错误修复等进行了改进。如果您是 NetWare 的粉丝,您会很高兴知道 Linux 2.2 在这方面支持大量改进,包括访问两种不同类型的 NCP 长文件名。可靠的 NFS 在服务器级别和客户端级别都得到了改进。最后,卡内基梅隆大学的那些家伙一直在努力开发新的分布式网络文件系统 Coda。该文件系统支持大量高度要求的功能,包括用于笔记本电脑的断开连接操作、高级缓存系统和安全改进。

最后

确实有很多东西不属于上述任何类别。

首先,旧的加载“进出”驱动程序(称为模块)的系统已被一个不需要单独守护程序且允许更小内存占用量的系统所取代。这就是取代 kerneld 系统的 kmod 系统。我不得不说我认为这是一件好事。

此外,旧的文件系统访问方法已被“dcache”系统所取代,这可能是目前市场上任何操作系统中最快的虚拟文件系统。这让您为支持 Linux 而感到自豪。

Joseph Pranevich 的电子邮箱是 knight@baltimore.wwaves.com。

加载 Disqus 评论