移动计算机上的 Linux

作者:Kenneth E. Harker

试想一下,您可以拿起您的 Linux 工作站,并随身携带到任何您想去的地方。今天您就可以做到。Linux 可以在笔记本电脑硬件上流畅运行,充分利用定义移动计算的所有优点。然而,正如桌面系统一样,也可能存在需要克服的挑战。幸运的是,随着人们对在笔记本电脑上看到 Linux 的兴趣持续增长,对运行 Linux 的笔记本电脑的广泛支持也变得越来越普及。

本文并非旨在深入帮助 Linux 笔记本电脑系统的安装或配置。对于桌面系统来说,撰写这样一篇文章几乎是不可能的,笔记本电脑也一样。相反,本文向当前的 Linux 桌面用户和 Linux 新手介绍了 Linux 为笔记本电脑硬件提供的支持。存在一些在线资源,提供了比本文介绍的更具体的信息,并在下面提及。Linux 笔记本电脑主页收集了本文中介绍的所有信息以及更多信息的指针,网址为 http://www.cs.utexas.edu/users/kharker/linux-laptop/ (图 1)https://#/linux-info/laptop/ (图 2)

笔记本电脑可能与桌面系统非常不同。在运行 Linux 时,最重要的区别之一是集成不同硬件组件的过程。桌面系统可以通过挑选和选择已知与 Linux 良好配合的组件来构建。您可以为您的需求添加或更换不受支持的硬件,换上最好的卡和适配器。然而,笔记本电脑是全有或全无的封装。除了 PCMCIA 卡,您可以自定义硬件配置的空间非常小。在控制器芯片组或专有技术方面,您也几乎无能为力——这是一个不幸的现实。不过,不要因此而感到害怕;市场上绝大多数硬件都与 Linux 配合良好,而其余大部分硬件也与 Linux 配合得相当好。

大多数笔记本电脑都具有相似的功能集。在撰写本文时,只有配备 Intel x86 系列和兼容 CPU 的笔记本电脑才能够运行 Linux。PowerPC 架构的移植最终可能会支持 Linux。[Linux/SPARC 和 Linux/Alpha 移植都已在笔记本电脑上运行—编者注]

大多数笔记本电脑都配备了 85 个键的键盘,上下略有浮动,通常比桌面键盘上的键稍小。几乎所有笔记本电脑都配备了 PCMCIA 驱动器,可以接受两张 II 型卡或一张 III 型卡。大多数都配备了内置 3.5 英寸软盘驱动器和/或 5.25 英寸 CD-ROM 驱动器。显示器的尺寸、色彩深度、显存、速度和分辨率差异很大。许多机器现在都配备了集成声卡。电源管理功能是通用的,但在实现和有效性方面各不相同。集成指针设备通常有两个按钮,并有三种样式:轨迹球、nub 形操纵杆和触摸板。几乎所有笔记本电脑都具有串行端口和并行端口,并提供一定的可扩展性或扩展坞功能。Linux 支持所有这些笔记本电脑功能。

在笔记本电脑上安装 Linux 应该与在桌面系统上安装 Linux 没有太大区别。大多数发行版都允许您从软盘、CD-ROM、硬盘、NFS 甚至 FTP 安装源中进行选择。在大多数情况下,为笔记本电脑选择合适的安装方法与桌面系统遵循相同的标准。

但是,也有一些例外情况。一些笔记本电脑使用外部软盘驱动器,并且实际上没有针对它们的标准接口。大多数将允许您启动并开始安装过程,但有些不支持 DMA 传输。如果没有 DMA 传输功能,您可能能够从软盘启动和安装,但该驱动器将无法用于挂载其他软盘。

一些发行版具有启动盘,允许您使用 PCMCIA 以太网卡进行 NFS 安装,前提是您的卡和 PCMCIA 控制器属于更常用的那些。与桌面系统一样,笔记本电脑中一些早期的 CD-ROM 驱动器使用了 Linux 社区不支持的专有接口。但是,通过仔细选择行业标准硬件,在笔记本电脑上安装 Linux 与在桌面系统上安装 Linux 没有什么区别。

PCMCIA

PCMCIA 是 Personal Computer Memory Card International Association(个人计算机存储卡国际协会)的首字母缩写。由于这个名称发音有些拗口,PCMCIA 卡也经常被称为 PC 卡。从物理上看,PC 卡的宽度和高度与信用卡大致相同,厚度仅为几毫米。它们提供了自定义笔记本电脑的最通用方法之一,并且不仅限于存储卡。

现成的 PCMCIA 卡实现了 RAM、小型硬盘、SCSI 适配器、传真调制解调器、以太网、声音、额外的 I/O 端口等等。如今市场上几乎所有卡都是“II 型”卡。一些较大的卡,例如实现硬盘的卡,是“III 型”卡,厚度大约是 II 型卡的两倍。大多数 PC 笔记本电脑都配备了 PCMCIA 驱动器,可以处理两张 II 型卡或一张 III 型卡。要使用 PCMCIA 卡,您的机器需要一个 PCMCIA 驱动器和某种形式的“卡和插槽服务”软件。在 Linux 中使用 PCMCIA 卡的真正诀窍在于软件。

大多数预装了 MS-DOS 和 MS-Windows 的笔记本电脑也包含供应商的卡和插槽服务软件。该软件层促进了操作系统和驱动器本身之间的通信——识别何时插入或移除卡,并确定哪个设备驱动程序与哪个卡相关联。在 Linux 世界中,此软件称为 Linux 的卡服务,由 David Hinds 积极维护。它包含在大多数流行的发行版中,包括 Slackware、Red Hat、Caldera、Yggdrasil 等等。它也可以在 ftp://hyper.stanford.edu/pub/pcmcia/ 以及 Sunsite 和 tsx-11 Linux 存档中找到。在撰写本文时,最新版本为 2.8.x。PCMCIA HOWTO 在万维网上提供,网址为 hyper.stanford.edu/pub/pcmcia/doc/PCMCIA-HOWTO.html,也可以在 Linux 文档项目主页上找到。

Linux 的卡服务支持除极少数自定义 PCMCIA 驱动器之外的所有驱动器,这些驱动器在 HOWTO 中有记录。对单个卡的支持略有不足。PCMCIA 卡与任何桌面扩展卡没有什么不同,因为卡需要一个设备驱动程序才能将硬件连接到操作系统。与桌面扩展卡一样,并非所有 PCMCIA 卡都有为 Linux 编写的设备驱动程序。

幸运的是,基本上所有 PCMCIA 传真调制解调器和 PCMCIA 串行端口适配器都使用相同的接口,因此都受到支持。在撰写本文时,支持超过三十六个品牌的 PCMCIA 以太网卡,以及许多 FLASH/SRAM 卡和 SCSI 卡。您可以在 David Hinds 的 Linux PCMCIA 信息页面上找到受支持的卡列表,网址为 hyper.stanford.edu/~dhinds/pcmcia/pcmcia.html。David Hinds 还维护了一个邮件列表,用于发布有关卡服务包和设备驱动程序更新的公告。有关订阅此服务的信息也可在此页面上获得。

卡服务包还附带了所有当前的设备驱动程序和几个实用程序。其中最重要的是 Cardinfo,这是一个小型 X11 应用程序,报告您的卡插槽的当前状态:其中有什么卡,它们是否处于活动状态,它们占用了哪些 IRQ 和 I/O 端口以及它们正在使用哪个设备(即 /dev/cua0)。这是一个非常有用的实用程序,用于查找和解决 IRQ 或 I/O 端口冲突。

大多数 Linux 发行版的最新版本都包含卡服务,但如果您的发行版不包含它,您可以自行安装。为此,您需要使用内核 1.2.8/1.3.30 或更高版本,编译时需要支持可加载内核模块。您还必须拥有整个 Linux 源代码树才能编译该软件包。PCMCIA HOWTO 和软件包附带的自述文件中详细解释了在现有 Linux 系统上安装卡服务。这包括帮助您识别和解决任何 IRQ 或 I/O 端口冲突的详细信息。运行时,核心 PCMCIA 模块占用约 48K 的 RAM。

Linux 的卡服务支持热插拔卡,并在您插入和移除 PCMCIA 卡时加载和卸载正确的特定于卡的设备驱动程序模块。当您的 PCMCIA 驱动器处于非活动状态时,卡服务模块还可以与 Linux 高级电源管理驱动程序协同工作,以帮助节省电池寿命。

对于那些对黑客技术感兴趣的人,David Hinds 还在其 HOWTO 和 PCMCIA 程序员指南中提供了一些关于编写和调试 PCMCIA 卡设备驱动程序的提示和建议。

高级电源管理

对于许多将笔记本电脑带离电源插座的人来说,一个主要关注点是电池能持续多久。在没有任何电源管理软件的情况下,我的 486DX4/75 笔记本电脑(配备 NiMH 电池)在远离电源插座的情况下可以持续使用约 45 分钟到 1.5 小时。虽然这会因机器而异,但如果可以延长电池寿命,那就太好了。

电源管理软件的目标是通过减少或消除不需要的功耗来管理硬件的总体功耗水平。此过程通过硬件和操作系统之间通过标准接口进行通信来实现。对于 PC 笔记本电脑,此接口称为高级电源管理 (APM) 规范,在撰写本文时为 1.1 版本,由 Microsoft 和 Intel 起草的文件定义。这些规范旨在独立于操作系统。

尽管 APM 规范旨在使电源管理独立于所使用的操作系统,但市场的不幸现实是,一些笔记本电脑制造商已决定实施仅适用于 MS-DOS 或 MS-Windows 操作系统的电源管理系统。

通常,市场上新的笔记本电脑将正确实施规范,但有许多旧型号甚至一些较新型号没有这样做。如果您碰巧拥有一台未正确或充分实施 APM 的机器,您可能就倒霉了。仔细研究新机器可以确保您的机器兼容。

APM 通过正确设计的系统 BIOS 和操作系统中的 APM 设备驱动程序之间的通信来工作。BIOS 代表基本输入/输出系统,是计算机主板上的只读存储器芯片。实施 APM 的系统 BIOS 既可以读取也可以修改机器中硬件组件的功耗水平。这些组件包括您的 CPU、电池、屏幕、硬盘、软盘驱动器、PCMCIA 驱动器、I/O 端口、声卡、CD-ROM 驱动器等等。

BIOS 可以与操作系统的设备驱动程序通信,中继此信息,以便操作系统和 BIOS 可以共同对功耗级别做出智能决策。通过这种方式,操作系统可以降低或减少系统中未使用设备的功耗,从而为正在使用的设备留出更多电池寿命。此外,许多笔记本电脑都具有“挂起”按钮,可让您手动将笔记本电脑置于极低功耗状态,直到您将其唤醒。

Linux APM 驱动程序由 Rik Faith 维护,最新版本已在内核 1.3.46 或更高版本中找到。只需在这些内核中选择 APM 作为编译选项即可支持 APM。旧内核和 1.2.x 内核的驱动程序版本以内核补丁的形式存在,但不再受 Rik 和其他开发人员的支持,并且缺少一些较新的功能。因此,强烈建议对 APM 支持感兴趣的人使用 1.3.x 内核。APM 支持将成为下一个生产内核系列的标准部分,该系列将称为 1.4。x 或 2.0。x

为了使 APM 驱动程序工作,您的笔记本电脑主板上的系统 BIOS 必须支持 APM 1.0 或 1.1 接口,最好是 1.1 版本。它还必须支持 32 位保护模式连接。虽然大多数新型号笔记本电脑都满足这些要求,但供应商对 APM 合规性的营销声明不足以说明问题。虽然 APM 规范强烈鼓励笔记本电脑制造商满足这些标准,但还是给他们留有一些回旋余地。如果 APM 支持对您很重要,请确保您使用的机器满足这些要求。

除了实际的 APM 驱动程序外,还有几个可用的实用程序使用 APM 内核驱动程序和 /proc/apm 目录。这些实用程序位于 ftp://ftp.cs.unc.edu/pub/users/faith/linux,实用程序的当前版本可在文件 apmd-2.1.tar.gz 中找到。该软件包包含一个名为 apmd 的守护进程,用于记录电池状态,以及一个名为 apm 的实用程序,该实用程序仅输出 /proc/apm 中可用的信息,包括当前电池电量。对于那些运行 X-Windows 的人,一个名为 xapm 的简单实用程序会显示电池寿命的简单图表。对于那些对黑客技术感兴趣的人,提供了一个名为 libapm.a 的 C 库,以便用户可以编写自己的实用程序。

对于那些 BIOS 中没有足够 APM 实现的笔记本电脑,至少还有一个其他选项可用。一个名为 hdparm 的简单实用程序可用,它可以设置许多 IDE 参数,包括 IDE 驱动器在停止旋转之前应等待多长时间的非活动状态。hdparm 实用程序随每个当前的 Linux 发行版一起提供,可以从 ftp://tsx-11.mit.edu/pub/linux/sources/sbin/hdparm-2.7.tar.gz 获取。这不是真正的 APM,但总比没有好。硬盘使用大量电力,根据我的经验,这个简单的实用程序可以将电池寿命延长高达 50%。

X 窗口系统

虽然一些 Linux 用户购买 X 窗口系统的商业实现,但大多数将 X-Windows 与 Linux 一起使用的人选择 XFree86 实现。XFree86 是 X 窗口系统服务器的免费分发实现,适用于运行 Unix 和类 Unix 操作系统的 PC。您最喜欢的 Linux 发行版很可能附带 XFree86 X 窗口系统服务器。

任何以前做过配置 XFree86 的人都证明,配置 XFree86 可能是一项相当复杂且偶尔令人沮丧的任务。笔记本电脑可能会使事情进一步复杂化;虽然您可以用已知与 Linux 良好配合的显卡替换桌面系统中不受支持的显卡,但笔记本电脑所有者没有这种选择。

笔记本电脑有各种各样的型号,并使用各种各样的组件,包括视频芯片组。一些受到当前 XFree86 实现的良好支持,而另一些可能不受支持或可能仅提供有限的支持。Linux 笔记本电脑社区为流行的笔记本电脑视频芯片组开展了开发和文档工作。对特定驱动程序的改进可能会频繁发生。获取有关支持特定视频芯片组的最新信息可能是使 X-Windows 在笔记本电脑上良好运行的最重要方面。

在 Linux 笔记本电脑上运行 X-Windows 的最重要信息来源是 Darin Ernst 的万维网页 X-Windows 和 Linux 在笔记本电脑上,网址为 www.castle.net/X-notebook/index_linux.html (图 3)。该站点包含突发新闻以及指向众多开发工作及其状态的链接。有两个万维网页提供有关 XFree86 对 Chips and Technologies CT655xx 系列视频芯片组(最近设计的笔记本电脑中最广泛使用的芯片组)的支持的信息,以及一个面向开发人员的邮件列表。笔记本电脑中使用的其他流行的视频芯片组由 Cirrus Logic 和 Western Digital 生产,这些芯片组也已记录在案。指向这两个页面和许多其他信息来源的链接可从 X-Windows 和 Linux 在笔记本电脑上页面获得。

除了 Web 上的资源 (参见侧边栏),Usenet 新闻组中有几个对那些想要在笔记本电脑上运行 X 的人感兴趣。特别是,comp.os.linux.x 和 comp.windows.x.i386unix 是最相关的。

声音、网络和配件

许多较新的笔记本电脑都配备了与 SoundBlaster 等流行标准兼容的集成声卡。许多这些声音芯片组是市场上的新产品,或者是桌面声卡上使用的芯片组的缩小尺寸变体。可以在最新版本的 Linux 声音驱动程序中找到对这些芯片组的支持。它由 Hannu Savolainen 在 personal.eunet.fi/pp/voxware 维护。声音驱动程序的更新频率高于大多数流行的发行版,因此查看此站点上的文档可能会带来惊喜。但正如桌面机器一样,SoundBlaster 兼容性通常部分通过硬件实现,部分通过基于 MS-DOS 的软件实现。因此,在调查笔记本电脑的声音功能时,您必须像为台式计算机选择声卡一样谨慎。

使用 PCMCIA 调制解调器通过 SLIP 或 PPP 进行网络连接与使用带有内置或外置调制解调器的台式计算机没有实质性区别。只需记住在您使用的内核中构建 SLIP 或 PPP 支持。PCMCIA 以太网网络连接也类似于桌面设置;您必须在内核中编译 TCP/IP 网络支持和相应的 PCMCIA 以太网卡设备驱动程序。

Linux 已成为其中的一部分的一个令人兴奋的新网络项目是移动 IP。该软件支持跨 TCP/IP 网络的透明主机移动性,可以在 http://anchor.cs.binghamton.edu/~mobileip/ (图 4) 找到。

如今市场上几乎所有笔记本电脑都配备了集成指针设备,这些设备的尺寸和形状各不相同,并且与硬件其余部分的接口方式也各不相同。最近设计的笔记本电脑的指针设备大多是 PS/2 设备,因此将 /dev/mouse 链接到 /dev/psaux 并确保内核中支持 PS/2 设备是您需要做的全部工作。

一些较旧的笔记本电脑为其指针设备使用了特殊的控制器芯片组,其中一些芯片组在内核中受到支持。如果您拥有这些较旧的笔记本电脑之一,您的指针设备可能会或可能不会受到支持。在任何情况下,您都可以将串行鼠标连接到串行端口并使用它。

许多笔记本电脑允许使用外部键盘或鼠标,通常通过外部 PS/2 样式端口。通常,这些设备通过硬件进行管理,应该可以与 Linux 无缝协作。大多数笔记本电脑也支持外部视频监视器,并且可以在 X 下使用正确配置的 XFree86 文件来利用外部监视器更大的分辨率。

其他支持来源

Linux 具有强大的用户支持传统,例如 Linux 笔记本电脑志愿者支持数据库,网址为 www.cs.utexas.edu/users/kharker/linux-laptop/volunteer.html。志愿者提供他们的电子邮件地址以及机器制造商和型号。寻求帮助的人可以搜索他们的硬件并找到愿意回答安装或配置问题的志愿者。这也是找到可用的 XF86Config 文件的绝佳方式。在撰写本文时,有来自 36 个国家的 200 多名志愿者。

我维护的 Linux 笔记本电脑主页可以作为通往文档世界的良好跳板,并为运行 Linux 的笔记本电脑提供支持,网址为 http://www.cs.utexas.edu/users/kharker/linux-laptop/www.redhat.com/llhp/。本文中提到的所有内容以及更多内容都可以在 Linux 笔记本电脑主页上找到,该主页会定期更新。

结论

移动 Linux 的世界非常令人兴奋。随身携带工作站的能力吸引了很多人。选择 Linux 作为操作系统可能会限制访问或受益于使笔记本电脑真正有用的各种功能的担忧在很大程度上是没有根据的。积极的开发和文档工作正在支持 Linux 下移动计算的各个方面。如果您一直在考虑在笔记本电脑上运行 Linux,那么现在比以往任何时候都更受关注和支持。

Kenneth E. Harker (kharker@cs.utexas.edu) 维护 Linux 笔记本电脑主页。在业余时间,他是德克萨斯大学奥斯汀分校计算机科学专业的研究生、业余无线电操作员和 巴比伦 5 号 的狂热粉丝。

加载 Disqus 评论