chap-introLinux 简介 Linux 可能是自最初的太空大战,或者更近期的 Emacs 以来,最重要的自由软件成就。它已经发展成为商业、教育和个人生产力的操作系统。Linux 不再仅仅是那些坐在闪烁的控制台前数小时的 UNIX 专家(尽管我们向您保证,许多用户属于这一类)。本书将帮助您充分利用 Linux。
Linux(发音时 i 为短音,如 LIH-nucks)是一个 UNIX 操作系统克隆,它可以在各种平台上运行,特别是配备 Intel 80386 或更好处理器的个人电脑。它支持广泛的软件,从 TeX,到 X 窗口系统,到 GNU C/C++ 编译器,到 TCP/IP。它是 UNIX 的一个通用、真正的实现,根据 GNU 通用公共许可证的条款自由分发(见附录 C)。
Linux 可以将任何 80386 或更好的个人电脑变成一个工作站,让您指尖掌握 UNIX 的全部功能。企业在整个机器网络上安装 Linux,并使用该操作系统来管理财务和医院记录、分布式计算环境和电信。世界各地的大学都使用 Linux 来教授操作系统编程和设计课程。各地的计算机爱好者都在家里使用 Linux 进行编程、提高生产力以及各种各样的黑客活动。
Linux 如此与众不同的地方在于,它是 UNIX 的一个自由实现。它过去是,现在仍然是由一群志愿者合作开发的,他们主要在互联网上交流代码、报告错误并在开放的环境中修复问题。欢迎任何人加入 Linux 开发工作。所需要的只是对破解一个自由的 UNIX 克隆的兴趣,以及一些编程知识。您手中的这本书是您的导游。
本书是 Linux 的安装和入门级指南。目的是通过将尽可能多的重要材料整合到一本书中,让新用户能够启动并运行。我们没有涵盖那些随着快速发展而容易变化的不稳定的技术细节,而是为您提供直接的背景知识,以便您自己去了解更多。
Linux 安装和使用并不困难。然而,与任何 UNIX 实现一样,通常会涉及到一些“黑魔法”才能使一切正常工作。我们希望本书能够让您登上 Linux 之旅的巴士,并向您展示操作系统可以多么出色。
在本书中,我们涵盖以下主题
本书是为希望开始使用 Linux 的个人电脑用户而编写的。我们不假设您有以前的 UNIX 经验,但希望新手在学习过程中参考其他资料。对于那些不熟悉 UNIX 的人,附录 A 中给出了有用的参考文献列表。一般来说,本书旨在作为另一本关于基本 UNIX 概念的书籍的补充阅读。
UNIX 是世界上最流行的操作系统之一,因为它拥有庞大的支持基础和发行量。它最初由 AT&T 在 20 世纪 70 年代开发,作为小型机和大型机的多任务系统,但此后发展成为任何地方使用最广泛的操作系统之一,尽管其界面有时令人困惑且缺乏中央标准化。
许多黑客认为 UNIX 是正确的选择——唯一真正的操作系统。因此,一群不断壮大的 UNIX 黑客开发了 Linux,他们希望亲自动手操作自己的系统。
UNIX 的版本存在于许多系统中,从个人电脑到像 Cray Y-MP 这样的超级计算机。大多数个人电脑的 UNIX 版本都很昂贵且笨重。在撰写本文时,一个单机版本的 UNIX System V for 386 的售价约为 1500 美元。
Linux 是 UNIX 的一个自由版本,主要由芬兰赫尔辛基大学的 Linus Torvalds 在互联网上许多 UNIX 程序员和专家的帮助下开发。任何有足够知识和胆量的人都可以开发和更改系统。Linux 内核没有使用来自 AT&T 或任何其他专有来源的代码,并且 Linux 的许多可用软件是由美国马萨诸塞州剑桥市自由软件基金会的 GNU 项目开发的。然而,来自世界各地的程序员都为不断增长的 Linux 软件库做出了贡献。
Linux 最初是 Linus Torvalds 的一个业余项目。它的灵感来自 Minix,这是一个由 Andy Tanenbaum 开发的小型 UNIX 系统。关于 Linux 的最早讨论是在 Usenet 新闻组上,comp.os.minix。这些讨论主要关注为想要更多功能的 Minix 用户开发一个小型学术 UNIX 系统。
Linux 的早期开发主要处理 80386 保护模式接口的任务切换功能,所有这些都是用汇编代码编写的。Linus 写道,
``在那之后,一切都很顺利:仍然是繁琐的编码,但我有一些设备,调试也更容易了。我从这个阶段开始使用 C 语言,它肯定加快了开发速度。这也是我开始认真考虑我的狂妄自大的想法,即制造一个“比 Minix 更好的 Minix”的时候。我希望有一天我能够重新编译gcc在 Linux 下...''``基本设置花了两个月的时间,但之后不久我就有了一个磁盘驱动程序(非常糟糕,但它碰巧在我的机器上工作)和一个小型文件系统。那大概是在我发布 0.01 版本的时候(大约在 1991 年 8 月下旬):它不好看,没有软盘驱动程序,也做不了多少事情。我认为没有人编译过那个版本。但那时我已经着迷了,并且不想停止,直到我可以扔掉 Minix。''
Linux 0.01 版本从未发布过公告。0.01 源代码甚至不可执行。它们仅包含内核源代码的基本雏形,并假设您可以访问 Minix 机器来编译和试验它们。
1991 年 10 月 5 日,Linus 发布了第一个“官方”版本的 Linux,即 0.02 版本。在那时,Linus 能够运行bash(GNU Bourne Again Shell)和gcc(GNU C 编译器),但仅此而已。同样,这被认为是黑客的系统。主要重点是内核开发——用户支持、文档和发行尚未解决。今天,Linux 社区似乎仍然将这些问题视为次要于“真正的编程”——内核开发。
正如 Linus 在comp.os.minix,
``您是否怀念 Minix-1.1 的美好时光,那时男人们都是男子汉,编写自己的设备驱动程序?您是否缺少一个好的项目,并且渴望在一个您可以尝试根据自己的需要修改的操作系统上大显身手?当 Minix 上的一切都正常工作时,您是否感到沮丧?不再需要熬夜来让一个出色的程序工作?那么这篇文章可能正适合您。``正如我一个月前提到的,我正在开发一个免费版本的 Minix-look-alike,用于 AT-386 计算机。它终于达到了可用的阶段(尽管可能不是,这取决于您想要什么),我愿意发布源代码以进行更广泛的传播。它只是 0.02 版本……但我已经成功地运行了bash, gcc, gnu-make, gnu-sed, compress等等。''
在 0.03 版本之后,随着更多人开始从事该系统的工作,Linus 将版本号提升到 0.10。经过几次进一步的修订后,Linus 在 1992 年 3 月将版本号提高到 0.95,以反映他对该系统即将发布“官方”版本的期望。(通常,软件在理论上完成或没有错误之前,不会分配版本号 1.0。)几乎一年半之后,在 1993 年 12 月下旬,Linux 内核仍然是 0.99.pl14 版本——渐近线地接近 1.0。在撰写本文时,当前稳定的内核版本是 2.0 patchlevel 33,而 2.1 版本正在开发中。
大多数主要的自由 UNIX 软件包都已移植到 Linux,并且商业软件也可用。支持的硬件比原始内核版本更多。许多人已经在 80486 Linux 系统上执行了基准测试,发现它们与 Sun Microsystems 和 Digital Equipment Corporation 的中档工作站相当。谁会想到这个“小小的”UNIX 克隆会成长壮大,挑战整个个人计算世界呢?
Linux 支持其他 UNIX 实现中发现的特性,以及许多在其他地方找不到的特性。在本节中,我们将对 Linux 内核的特性进行一次简要的介绍。
Linux 是一个完整的多任务、多用户操作系统,就像所有其他版本的 UNIX 一样。这意味着许多用户可以同时登录并在同一台机器上运行程序。
Linux 系统在源代码级别上主要与几个 UNIX 标准兼容(就 UNIX 有标准而言),包括 IEEE POSIX.1、UNIX System V 和 Berkely System Distribution UNIX。Linux 的开发考虑了源代码的可移植性,并且很容易找到多个平台共享的常用功能。互联网和其他地方提供的大部分自由 UNIX 软件都可以在 Linux 下“开箱即用”地编译。此外,Linux 系统的所有源代码,包括内核、设备驱动程序、库、用户程序和开发工具,都是可以自由分发的。
Linux 的其他特定内部特性包括 POSIX 作业控制(由像csh和bash这样的 shell 使用),伪终端(pty设备),以及对动态加载的国家或自定义键盘驱动程序的支持。Linux 支持虚拟控制台,允许您在同一系统控制台上在登录会话之间切换。screen程序的用户会发现 Linux 虚拟控制台的实现很熟悉。
内核可以模拟 387-FPU 指令,并且没有数学协处理器的系统可以运行需要浮点数学运算能力的程序。
Linux 支持各种用于存储数据的文件系统,例如专门为 Linux 开发的 ext2 文件系统。还支持 Xenix 和 UNIX System V 文件系统,以及硬盘驱动器或软盘上的 Microsoft MS-DOS 和 Windows 95 VFAT 文件系统。还支持 ISO 9660 CD-ROM 文件系统。我们将在第 2 章和第 4 章中详细讨论文件系统。
Linux 提供了 TCP/IP 网络软件的完整实现。这包括许多流行的以太网卡、SLIP(串行线路 Internet 协议)和 PPP(点对点协议)的设备驱动程序,它们通过串行连接、PLIP(并行线路 Internet 协议)和 NFS(网络文件系统)提供对 TCP/IP 网络的访问。还支持全方位的 TCP/IP 客户端和服务,其中包括 FTP、telnet、NNTP 和 SMTP。我们将在第 章中详细讨论网络。
Linux 内核的开发旨在利用 Intel 80386 和更好处理器的保护模式特性。特别是,Linux 使用了保护模式、基于描述符的内存管理范例和其他高级特性。任何熟悉 80386 保护模式编程的人都知道,这种芯片是为像 UNIX 这样的多任务系统设计的。Linux 利用了这一功能。
内核支持按需分页、加载的可执行文件。只有实际使用的程序段才会从磁盘读入内存。此外,写时复制页面在可执行文件之间共享。如果一个程序的多个实例同时运行,它们将共享物理内存,从而减少总体使用量。
为了增加可用内存量,Linux 还实现了磁盘分页。在磁盘上最多可以分配 1GB 的交换空间(最多 8 个分区,每个分区 128MB)。当系统需要更多物理内存时,它会将不活动的页面交换到磁盘,让您运行更大的应用程序并支持更多用户。但是,将数据交换到磁盘不能替代物理 RAM,物理 RAM 要快得多。
Linux 内核还为用户程序和磁盘缓存实现了统一的内存池。所有空闲内存都由缓存使用,当运行大型程序时,缓存会减少。
可执行文件使用动态链接的共享库:来自磁盘上单个库的代码。这与 SunOS 共享库机制类似。可执行文件占用更少的磁盘空间,尤其是那些使用许多库函数的程序。还有静态链接库,用于对象调试和在未安装共享库时维护“完整”的二进制文件。库在运行时动态链接,程序员可以使用自己的例程代替标准库例程。
为了方便调试,内核会生成核心转储以进行事后分析。核心转储和一个与调试支持链接的可执行文件允许开发人员确定程序崩溃的原因。
实际上,人们期望从标准 UNIX 实现中获得的所有实用程序都已移植到 Linux,包括像ls, awk, tr, sed, bc和more这样的基本命令。Linux 上复制了其他 UNIX 系统的熟悉的工作环境。所有标准命令和实用程序都包含在内。(UNIX 或 Linux 新手应参阅第 3 章,了解基本 UNIX 命令的介绍。)
有许多文本编辑器可用,包括vi, ex, pico, jove和 GNUemacs以及像 Lucid 这样的变体emacs,它结合了 X 窗口系统的扩展,以及joe。您习惯使用的文本编辑器很可能已移植到 Linux。
文本编辑器的选择是一个有趣的问题。许多 UNIX 用户更喜欢像vivivi这样的“简单”编辑器。(最初的作者用viviemacs写了这本书。)但是emacsemacsemacs由于其年代久远,有许多局限性,而像
emacsvi这样的现代编辑器已经获得了普及。emacs支持完整的、基于 Lisp 的宏语言和解释器、强大的命令语法以及其他扩展。有
emacs
宏包,可让您阅读电子邮件和新闻、编辑目录内容,甚至进行人工智能心理治疗会话(对于压力过大的 Linux 黑客来说必不可少)。csh大多数基本的 Linux 实用程序都是 GNU 软件。GNU 实用程序支持在 BSD 和 UNIX System V 程序的标准版本中找不到的高级功能。例如,GNUvi克隆,
elvisbash,包括一个与原始实现不同的结构化宏语言。但是,GNU 实用程序旨在与它们的 BSD 和 System V 对应程序保持兼容。许多人认为 GNU 版本优于原始版本。emacsshell 是一个程序,它读取并执行来自用户的命令。此外,许多 shell 还提供诸如 作业控制、一次管理多个进程、输入和输出重定向以及用于编写 shell 脚本的命令语言等功能。shell 脚本是用 shell 命令语言编写的程序,类似于 MS-DOS 批处理文件。Linux 有许多类型的 shell 可用。shell 之间最重要的区别是命令语言。例如,C Shell (cshbash) 使用类似于 C 编程语言的命令语言。经典的 Bourne SHellsh使用另一种命令语言。shell 的选择通常基于它提供的命令语言,并在很大程度上决定了您在 Linux 下工作环境的质量。GNU Bourne Again Shell (bash) 是 Bourne Shell 的一个变体,它包含许多高级功能,如作业控制、命令历史记录、命令和文件名补全、一个emacs-like 界面,用于编辑命令行以及对标准 Bourne Shell 语言的其他强大扩展。另一个流行的 shell 是tcsh
,它是 C Shell 的一个版本,具有类似于vi和bashbash
zsh
,一个小型类 Bourne shell;Korn Shell (vikshemacs);BSD 的
ash;和rc,Plan 9 shell。如果您是系统唯一的用户,并且只使用
vi;和作为编辑器和 shell,则没有理由安装其他编辑器或 shell。这种“自己动手”的态度在 Linux 黑客和用户中很普遍。
1.4.1 文本处理和文字处理。;和几乎每个计算机用户都需要一种准备文档的方法。在个人电脑的世界中,文字处理是常态:在“所见即所得”(WYSIWYG)环境中编辑和操作文本,并生成文本的打印副本,其中包含图形、表格和装饰。;和来自 Corel、Applix 和 Star Division 的商业文字处理器在 UNIX 世界中可用,但 文本处理 在概念上截然不同,更常见。在文本处理系统中,文本以 页面描述语言 输入,该语言描述了文本应如何格式化。您可以不使用特殊的文字处理环境输入文本,而是可以使用任何编辑器(如;和vi
或emacs)修改文本。完成输入源文本(使用排版语言)后,一个单独的程序会将源文本转换为适合打印的格式。这有点类似于用 C 语言等语言编程,并将文档“编译”成可打印的形式。emacsLinux 有许多文本处理系统可用。其中之一是emacs.
groff
,它是经典
troff
文本格式化程序的 GNU 版本,最初由贝尔实验室开发,至今仍在世界各地的许多 UNIX 系统中使用。另一个现代文本处理系统是 TeX,由计算机科学界的 Donald Knuth 开发。TeX 的方言,如 LaTeX,也可用。像 TeX 和
的格式化语言有点晦涩难懂,并且发现 TeX 更易读。然而,
- troff
- 这样的文本处理器主要在它们的格式化语言的语法上有所不同。选择一种格式化系统而不是另一种格式化系统取决于满足您需求的实用程序以及个人品味。
- 许多人认为troff.
troff
\begin{quote} Mr. Torvalds: We are very upset with your current plans to implement {\em post-hypnotic suggestions\/} in the {\bf Linux} terminal driver code. We feel this way for three reasons: \begin{enumerate} \item Planting subliminal messages in the kernel driver is not only immoral, it is a waste of time; \item It has been proven that ``post-hypnotic suggestions'' are ineffective when used upon unsuspecting UNIX hackers; \item We have already implemented high-voltage electric shocks, as a security measure, in the code for {\tt login}. \end{enumerate} We hope you will reconsider. \end{quote}
产生 ASCII 输出,可以更轻松地在终端上查看,而 TeX 主要用于打印设备输出。需要各种附加程序才能从 TeX 格式化的文档生成 ASCII 输出,或将 TeX 输入转换为
troff
格式。
另一个程序是
texinfo,它是 TeX 的扩展,用于自由软件基金会开发的软件文档。texinfo可以从单个源文件生成打印输出,或可在线浏览的超文本“Info”文档。Info 文件是 GNU 软件(如和emacs)中使用的主要文档格式。
文本处理器在计算社区中广泛用于制作论文、毕业论文、杂志文章和书籍。(本书是使用 LaTeX 制作的。)将源语言作为文本文件处理的能力为文本处理器本身的许多扩展打开了大门。由于源文档不是以只有一种文字处理器才能读取的晦涩格式存储的,因此程序员可以为格式化语言编写解析器和转换器,从而扩展系统。,Plan 9 shell。格式化语言是什么样的?一般来说,格式化的源文件主要由文本本身组成,带有 控制代码 以产生诸如字体和边距更改以及列表格式之类的效果。
考虑以下文本Torvalds 先生我们对您当前计划在 Linux 终端驱动程序代码中实现催眠后暗示感到非常不安。我们之所以这样认为,有以下三个原因在终端驱动程序中植入潜意识信息不仅是不道德的,而且是浪费时间;已经证明,“催眠后暗示”在不知情的 UNIX 黑客身上使用时是无效的;;和我们已经作为安全措施,在;和login
代码中实现了高压电击
此文本在 LaTeX 格式化语言中可能如下所示
作者使用任何文本编辑器输入文本,并通过使用 LaTeX 处理源文件来生成格式化输出。乍一看,排版语言可能看起来很晦涩,但实际上很容易理解。使用文本处理系统在编写时强制执行排版标准。文档中的所有枚举列表都将看起来相同,除非作者修改了枚举列表的定义。目标是让作者专注于文本,而不是排版约定。
使用文本编辑器编写时,通常不会考虑打印文本的外观。作者学会从源文件中的格式化命令中可视化完成文本的外观。
WYSIWYG 文字处理器在许多方面都很有吸引力。它们为编辑文档提供了易于使用的可视化界面。但是,此界面仅限于用户可以访问的文本布局方面。例如,许多文字处理器仍然提供特殊的格式语言来生成复杂的表达式,如数学公式。这是文本处理,尽管规模小得多。gcc文本处理的一个不太明显的优势是,您可以精确地指定所需的格式。在许多情况下,文本处理系统需要格式规范。文本处理系统还允许使用任何文本编辑器编辑源文本,而不是依赖于隐藏在文字处理器不透明的用户界面下的格式代码。此外,源文本可以轻松转换为其他格式。这种灵活性和功能的权衡是缺乏 WYSIWYG 格式。
一些程序允许您在打印前在图形显示设备上预览格式化文档。
xdvi程序在 X 下显示由 TeX 系统生成的“设备无关”文件。像xfig和gimpemacs这样的应用程序提供了 WYSIWYG 图形界面,用于绘制图形和图表,这些图形和图表随后转换为文本处理语言以包含在您的文档中。像和troff这样的文本处理器在 WYSIWYG 文字处理可用之前就已经存在了。许多人仍然喜欢它们的通用性和独立于图形环境的特性。
有许多与文本处理相关的实用程序可用。功能强大的 METAFONT 系统(用于为 TeX 设计字体)包含在 Linux 移植的 TeX 中。其他程序包括ispell,一个交互式拼写检查器和校正器;
,它在 LaTeX 文档中生成索引;以及许多其他
troff
和基于 TeX 的宏包,它们格式化许多类型的技术和数学文本。转换程序可以在 TeX 或
troff源文件和无数其他格式之间进行转换,这些程序也可用。Karel Kubat 编写的 YODL 是文本格式化领域的新手。YODL 是一种易于学习的语言,带有过滤器,可以生成各种输出格式,如 LaTeX、SGML 和 HTML。1.4.2 编程语言和实用程序。Linux 提供了一个完整的 UNIX 编程环境,其中包括您期望从其他 UNIX 系统获得的所有标准库、编程工具、编译器和调试器。支持像 POSIX.1 这样的标准,这使得为 Linux 编写的软件可以轻松移植到其他系统。专业的 UNIX 程序员和系统管理员在家中使用 Linux 开发软件,然后将软件传输到工作场所的 UNIX 系统。这不仅节省了大量时间和金钱,而且还让您可以在自己舒适的家中工作。(作者之一在家中使用他的系统来开发和测试 X 窗口系统应用程序,这些应用程序可以直接在其他地方的工作站上编译。)计算机科学专业的学生学习 UNIX 编程并探索系统的其他方面,如内核架构。使用 Linux,您可以访问完整的库和编程实用程序集以及完整的内核和库源代码。在 UNIX 软件世界中,系统和应用程序通常用 C 或 C++ 编程。Linux 的标准 C 和 C++ 编译器是 GNUgcc,这是一个先进的现代编译器,它支持 C++,包括 AT&T 3.0 功能,以及 Objective-C,C 的另一种面向对象的方言。除了 C 和 C++ 之外,其他编译和解释型编程语言也已移植到 Linux,如 Smalltalk、FORTRAN、Java、Pascal、LISP、Scheme 和 Ada(如果您有足够的受虐倾向来用 Ada 编程,我们不会阻止您)。此外,还有各种汇编器可用于编写保护模式 80386 代码,以及 UNIX 黑客的最爱,如 Perl(终结所有脚本语言的脚本语言)和 Tcl/Tk(一个类 shell 的命令处理系统,它支持开发简单的 X 窗口系统应用程序)。
高级gdb调试器可以单步执行程序的一行源代码,或检查核心转储以查找崩溃的原因。gprof性能分析实用程序为您的程序提供性能统计信息,告诉您程序的大部分执行时间花费在哪里。如上所述,emacs文本编辑器为各种编程语言提供了交互式编辑和编译环境。其他工具包括 GNUgdbmakeemacs和emacsimakeemacs,它们管理大型应用程序的编译,以及 RCS,一个用于源代码锁定和版本控制的系统。最后,Linux 支持动态链接的共享库 (DLL),这会导致二进制文件小得多。公共子例程代码在运行时链接。这些 DLL 允许您用自己的代码覆盖函数定义。例如,如果您希望编写自己的malloc()
库例程版本,链接器将使用您的新例程而不是库中的例程。
X 窗口系统简介。
X 窗口系统,或简称为 X,是 UNIX 机器的标准图形用户界面 (GUI),并且是一个强大的环境,支持许多应用程序。使用 X 窗口系统,您可以在屏幕上同时拥有多个终端窗口,每个窗口都有不同的登录会话。诸如鼠标之类的指针设备通常与 X 一起使用,尽管这不是必需的。
已经编写了许多特定于 X 的应用程序,包括游戏、图形和编程实用程序以及文档工具。Linux 和 X 使您的系统成为真正的工作站。借助 TCP/IP 网络,您的 Linux 机器可以显示在其他机器上运行的 X 应用程序。
您想与世界交流吗?Linux 支持两种主要的 UNIX 网络协议:TCP/IP 和 UUCP。TCP/IP(传输控制协议/互联网协议)是一种网络范式,它允许世界各地的系统在单一网络,即互联网上进行通信。有了 Linux、TCP/IP 以及与互联网的连接,您可以通过电子邮件、Usenet 新闻组和 FTP 文件传输与用户和机器进行通信。
大多数 TCP/IP 网络使用以太网作为物理网络传输。Linux 支持许多流行的以太网卡和个人电脑接口,包括袖珍型和 PCMCIA 以太网适配器。
然而,由于并非每个人在家都有以太网连接,Linux 还支持 SLIP(串行线路互联网协议)和 PPP(点对点协议),它们通过调制解调器提供互联网访问。许多企业和大学都提供 SLIP 和 PPP 服务器。事实上,如果您的 Linux 系统具有到互联网的以太网连接和一个调制解调器,您的系统可以成为其他主机的 SLIP 或 PPP 服务器。
NFS(网络文件系统)让您的系统与网络上的其他机器无缝共享文件系统。FTP(文件传输协议)让您与其他机器传输文件。sendmail通过 SMTP 协议发送和接收电子邮件;C-News 和 INN 是基于 NNTP 的新闻系统;并且telnet, rlogin和rsh让您登录并执行网络上其他机器的命令。finger让您获取有关其他互联网用户的信息。
Linux 还通过 Samba支持 Microsoft Windows 连接,并通过 AppleTalk 和 LocalTalk 支持 Macintosh 连接。还包括对 Novell 的 IPX 协议的支持。
Linux 提供了全方位的邮件和新闻阅读器,包括elm, pine, rn, nn和tin。无论您的偏好如何,您都可以配置 Linux 系统来发送和接收来自世界各地的电子邮件和新闻。
该系统提供标准的 UNIX 套接字编程接口。几乎任何使用 TCP/IP 的程序都可以移植到 Linux。Linux X 服务器也支持 TCP/IP,并且在其他系统上运行的应用程序可以使用本地系统的显示。
在第章中,我们讨论了 TCP/IP 软件的安装,包括 SLIP 和 PPP。
UUCP(UNIX 到 UNIX 复制)是一种较旧的机制,用于在 UNIX 机器之间传输文件、电子邮件和电子新闻。从历史上看,UUCP 机器通过调制解调器通过电话线连接,但 UUCP 也能够通过 TCP/IP 网络传输数据。如果您无法访问 TCP/IP 网络或 SLIP 或 PPP 服务器,您可以配置您的系统以使用 UUCP 发送和接收文件和电子邮件。有关更多信息,请参阅第章。
如果您有调制解调器,您将能够通过 Linux 上可用的电信软件包与其他机器通信。许多人使用电信软件来访问公告板系统 (BBS) 以及商业在线服务,如 Prodigy、CompuServe 和 America Online。人们使用调制解调器连接到工作或学校的 UNIX 系统。调制解调器可以发送和接收传真。
Linux 上流行的通信软件包是seyon,它提供了可定制的、符合人体工程学的 X 界面,并内置了对 Kermit 和 ZModem 文件传输协议的支持。其他电信程序包括 C-Kermit、pcomm和minicom。这些程序类似于其他操作系统上的通信程序,并且非常易于使用。
如果您无法访问 SLIP 或 PPP 服务器(请参阅上一节),您可以使用term来多路复用您的串行线路。该term程序允许您通过调制解调器连接打开多个登录会话。它允许您通过串行线路将 X 客户端连接重定向到您的本地 X 服务器。另一个软件包 KA9Q 实现了类似的、类似 SLIP 的接口。
运营公告板系统 (BBS) 是许多人最喜欢的爱好和收入来源。Linux 支持各种各样的 BBS 软件,其中大多数比其他操作系统上可用的软件更强大。通过电话线、调制解调器和 Linux,您可以将您的系统变成 BBS,并为全球用户提供拨号访问。Linux 的 BBS 软件包括 XBBS 和 UniBoard BBS 软件包。
大多数 BBS 软件将用户锁定到基于菜单的系统中,其中只有某些功能和应用程序可用。BBS 访问的替代方案是完整的 UNIX 访问,它允许用户拨入您的系统并正常登录。这需要系统管理员进行相当多的维护,但提供公共 UNIX 访问并不困难。除了 TCP/IP 网络之外,您还可以使电子邮件和新闻访问在您的系统上可用。
如果您无法访问 TCP/IP 网络或 UUCP 馈送,Linux 允许您与 BBS 网络(如 FidoNet)通信,后者允许您通过电话线交换电子新闻和邮件。您可以在第章中找到有关 Linux 下电信和 BBS 软件的更多信息。
值得注意的是,Linux 包括 Web 服务器软件以及 Web 浏览器。最常见的服务器是 Apache。如今,数千个 Linux 系统在互联网上运行 Apache,包括 Linux Resources 站点,www.linuxresources.com.
Linux 发行版包括不同的 Web 浏览器,其他浏览器可以从互联网下载。可用的浏览器包括 Lynx、Mosaic、Netscape、Arena 和 Amaya。
Linux 提供对 Java 和 CGI 小程序的完整支持,Perl 是 Linux 编程环境中的标准工具。
存在各种实用程序来与 MS-DOS 交互。最著名的应用程序是 Linux MS-DOS 模拟器,它允许您直接从 Linux 运行 MS-DOS 应用程序。尽管 Linux 和 MS-DOS 是完全不同的操作系统,但 80386 保护模式环境允许 MS-DOS 应用程序表现得好像它们在本地 8086 环境中运行一样。
MS-DOS 模拟器仍在开发中,但许多流行的应用程序在其下运行。可以理解的是,使用系统奇异或深奥功能的 MS-DOS 应用程序可能永远不会得到支持,因为任何模拟器都存在固有的局限性。例如,您不应期望运行使用 80386 保护模式功能的程序,例如 Microsoft Windows(在 386 增强模式下)。
标准的 MS-DOS 命令和实用程序,如PKZIP.EXE在模拟器下工作,4DOS 也是如此,一个COMMAND.COM替代品、FoxPro 2.0、Harvard Graphics、MathCad、Stacker 3.1、Turbo Assembler、Turbo C/C++、Turbo Pascal、Microsoft Windows 3.0(在实模式下)和 WordPerfect 5.1。
MS-DOS 模拟器主要旨在为那些只需要 MS-DOS 用于少数应用程序并将其余所有内容都用于 Linux 的人提供临时解决方案。它并非旨在成为 MS-DOS 的完整实现。当然,如果模拟器不能满足您的需求,您始终可以在同一系统上运行 MS-DOS 以及 Linux。使用 LILO 引导加载程序,您可以在启动时指定要启动的操作系统。Linux 也可以与其他操作系统(如 OS/2)共存。
Linux 提供了一个无缝接口,用于在 Linux 和 MS-DOS 之间传输文件。您可以在 Linux 下挂载 MS-DOS 分区或软盘,并像访问任何文件一样直接访问 MS-DOS 文件。
目前正在开发 WINE——一个用于 Linux 下 X Window 系统的 Microsoft Windows 模拟器。一旦 WINE 完成,用户将能够直接从 Linux 运行 MS-Windows 应用程序。这类似于 Sun Microsystems 的商业 WABI Windows 模拟器,后者也适用于 Linux。
在第章中,我们讨论了 Linux 可用的 MS-DOS 工具。
正如人们对这样一个大杂烩的操作系统所期望的那样,Linux 存在大量杂项程序和实用程序。Linux 的主要重点是 UNIX 个人计算,但这并不是它唯一擅长的领域。商业和科学软件的选择正在扩大,商业软件供应商已开始为不断增长的 Linux 应用程序池做出贡献。
Linux 上有几种关系数据库可用,包括 Postgres、Ingres 和 Mbase。这些是功能齐全、专业的客户端/服务器数据库应用程序,类似于在其他 UNIX 平台上找到的应用程序。还有许多商业数据库系统可用。
科学计算应用程序包括 FELT(有限元分析);gnuplot(数据绘图和分析);Octave(类似于 MATLAB 的符号数学软件包);xspread(电子表格计算器);xfractint(流行的 Fractint 分形生成器的基于 X 的端口);和xlispstat(统计)。其他应用程序包括 SPICE(电路设计和分析)和 Khoros(图像和数字信号处理与可视化)。商业软件包如 Maple 和 MathLab 也可用。
更多应用程序已移植到 Linux。如果您绝对找不到您需要的东西,您可以尝试将应用程序从另一个平台移植到 Linux。无论您从事哪个领域,将标准 UNIX 应用程序移植到 Linux 都非常简单。Linux 完整的 UNIX 编程环境足以作为任何科学应用程序的基础。
Linux 也有其游戏份额。这些包括经典的基于文本的地下城游戏,如 Nethack 和 Moria;MUD(多人地下城,允许多个用户在基于文本的冒险中互动),如 DikuMUD 和 TinyMUD;以及大量 X 游戏,如xtetris, netrek和xboard,X11 版本的gnuchess。流行的射击街机风格游戏 Doom 也已移植到 Linux。
对于发烧友,Linux 支持各种声卡和相关软件,如 CDplayer,它将 CD-ROM 驱动器变成音频 CD 播放器,MIDI 音序器和编辑器,它们允许您为通过合成器或其他 MIDI 控制乐器播放的音乐作曲,以及用于数字化声音的声音编辑器。
找不到您要查找的应用程序?附录A 中描述的 Linux 软件地图列出了已编写或移植到 Linux 的软件包。查找 Linux 应用程序的另一种方法是查看INDEX在 Linux FTP 站点上找到的文件,如果您有互联网访问权限。
大多数可自由分发的、基于 UNIX 的软件都可以在 Linux 上轻松编译。如果所有其他方法都失败了,您可以自己编写应用程序。如果您正在寻找商业应用程序,可能会有一个免费的“克隆”可用。或者,您可以鼓励软件公司考虑发布 Linux 的二进制版本。一些人联系了软件公司,并要求他们将应用程序移植到 Linux,但成功程度各不相同。
Linux 受 GNU 通用公共许可证 或 GPL 的约束。GPL 是自由软件基金会为 GNU 项目开发的,并为自由软件的分发和修改规定了若干条款。自由 在这里是指分发,而不是成本。GPL 一直受到误解。我们希望本摘要能够帮助您理解 GPL 的范围和目标及其对 Linux 的影响。GPL 的完整副本印在附录C中。
最初,Linus Torvalds 在比 GPL 更具限制性的许可证下发布了 Linux,该许可证允许自由分发和修改该软件,但禁止以其分发和使用来换取任何金钱。另一方面,GPL 允许人们销售自由软件并从中获利,但不允许他们限制他人以任何方式分发该软件的权利。
首先,应该解释的是,GPL 涵盖的自由软件不在公共领域。公共领域软件根据定义不受版权保护,并且字面上归公众所有。另一方面,GPL 涵盖的软件由作者拥有版权。该软件受标准的国际版权法保护,并且作者是合法定义的。GPL 为可以自由分发但不在公共领域的软件提供支持。
GPL 许可的软件也不是共享软件。通常,共享软件由作者拥有和拥有版权,作者要求用户汇款以供使用。GPL 涵盖的软件可以免费分发和使用。
GPL 还允许人们获取、修改和分发他们自己的软件版本。但是,GPL 软件的任何衍生作品也必须受 GPL 约束。换句话说,公司可能不能获取 Linux,修改它,并在限制性许可证下出售它。如果该软件是从 Linux 派生的,则该软件也必须受 GPL 约束。
GPL 允许免费分发和免费使用自由软件。它还允许个人或组织收费分发 GPL 软件,甚至从其销售和分发中获利。但是,GPL 软件的分销商不能剥夺购买者的这些权利。如果您从第三方来源购买 GPL 软件,您可以免费分发该软件,也可以自己出售。
这听起来可能像是一个矛盾。当 GPL 允许您免费获得软件时,为什么要出售软件?假设一家公司决定将大量自由软件捆绑在 CD-ROM 上并分发它。该公司将需要为生产和分发 CD-ROM 的间接费用收费,甚至可能决定从软件销售中获利。GPL 允许这样做。
销售自由软件的组织必须遵守 GPL 中规定的某些限制。他们不能限制购买软件的用户的权利。如果您购买包含 GPL 软件的 CD-ROM,您可以免费复制和分发 CD-ROM,也可以自己转售。分销商必须向用户明确说明该软件受 GPL 约束。分销商还必须免费提供分发软件的完整源代码。这允许任何购买 GPL 软件的人对该软件进行修改。
允许公司分发和销售自由软件是一件好事。并非每个人都可以访问互联网并免费下载软件。许多组织通过邮购以软盘、磁带或 CD-ROM 的形式销售 Linux,并从销售中获利。Linux 开发人员可能永远看不到这些利润中的任何一部分;这是在开发者和分销商之间达成一致的理解,当软件获得 GPL 许可时。换句话说,Linus Torvalds 知道公司可能希望销售 Linux,并且他可能看不到一分钱的利润。
在自由软件世界中,重要的问题不是金钱。自由软件的目标始终是开发和分发出色的软件,并允许任何人获取和使用它。在下一节中,我们将讨论这如何应用于 Linux 的开发。
新用户通常对 Linux 有一些误解和错误的期望。为了有效地使用 Linux,了解 Linux 的理念和设计非常重要。我们将首先描述 Linux 不是 如何设计的。
任何拥有新功能或软件应用程序的人通常都会在 alpha 版本 中提供它——即测试版本,供那些勇敢的用户使用,他们想在初始代码中解决问题。由于 Linux 社区主要基于互联网,alpha 软件通常会上传到一个或多个 Linux FTP 站点(请参阅附录B),并在 Linux Usenet 新闻组之一中发布有关如何获取和测试代码的消息。下载并测试 alpha 软件的用户然后可以将结果、错误修复和问题邮寄给作者。
在初始错误修复后,代码进入 beta 测试 阶段,在该阶段,代码通常被认为是稳定的但不完整。它可以工作,但并非所有功能都可能存在。该软件也可能直接进入最终阶段,在该阶段,该软件被认为是完整且可用的。
请记住,这些只是约定——而不是规则。一些开发人员可能对他们的软件非常有信心,以至于他们认为没有必要发布 alpha 或测试版本。始终由开发人员来做出这些决定。
您可能会惊讶于这样一个由志愿者组成的非结构化系统如何编程和调试完整的 UNIX 系统,并完成任何事情。事实证明,这是有史以来效率最高、最有动力的开发工作之一。整个 Linux 内核都是从头开始编写的,没有来自专有来源的代码。将所有免费软件移植到 Linux 需要大量工作。库被编写和移植,文件系统被开发,硬件驱动程序是为许多流行的设备编写的——所有这些都归功于志愿者的工作。
Linux 软件通常以 发行版 的形式发布,发行版是一组预先打包的软件,构成了一个完整的系统。对于大多数用户来说,从头开始构建一个完整的系统,从内核开始,添加实用程序,并手动安装所有必要的软件将是很困难的。相反,有许多软件发行版可用,其中包括安装和运行完整系统所需的一切。没有单一的标准发行版——有很多,每个都有其自身的优点和缺点。我们从第页开始描述各种 Linux 发行版的安装。
重要的是要了解 Linux 与其他操作系统(如 MS-DOS、OS/2 和其他用于个人计算机的 UNIX 实现)之间的差异。首先,Linux 可以愉快地与同一台机器上的其他操作系统共存:您可以在同一系统上同时运行 MS-DOS 和 OS/2 以及 Linux,而不会出现问题。甚至有在各种操作系统之间交互的方法,我们将会看到。
为什么要使用 Linux,而不是一个众所周知、经过良好测试且文档齐全的商业操作系统?我们可以给您一千个理由。然而,其中最重要的一个原因是 Linux 是个人 UNIX 计算的绝佳选择。如果您是 UNIX 软件开发人员,为什么要在家里使用 MS-DOS?Linux 允许您在 PC 上开发和测试 UNIX 软件,包括数据库和 X Window 系统应用程序。如果您是学生,那么您的大学计算系统很可能运行 UNIX。您可以运行自己的 UNIX 系统并根据您的需要进行定制。如果您无法访问其他 UNIX 机器,安装和运行 Linux 也是学习 UNIX 的绝佳方法。
但我们不要跑题。Linux 不仅适用于个人 UNIX 用户。它足够强大和完整,可以处理大型任务以及分布式计算需求。许多企业——尤其是小型企业——已将其系统迁移到 Linux,以替代其他基于 UNIX 的工作站环境。大学发现 Linux 非常适合教授操作系统设计课程。大型商业软件供应商已开始意识到自由操作系统可以提供的机会。
在同一系统上同时运行 Linux 和 MS-DOS 并不罕见。许多 Linux 用户依赖 MS-DOS 来进行文字处理等应用程序。Linux 为这些应用程序提供了自己的类似物,但您可能有充分的理由同时运行 MS-DOS 和 Linux。如果您的论文是使用 MS-DOS 版 WordPerfect 编写的,您可能无法轻松地将其转换为 TeX 或其他格式。许多 MS-DOS 的商业应用程序在 Linux 上尚不可用,但是没有理由您不能同时使用两者。
MS-DOS 没有充分利用 80386 和 80486 处理器的功能。另一方面,Linux 完全在处理器的保护模式下运行,并利用其所有功能。您可以直接访问所有可用内存(以及虚拟 RAM 之外)。Linux 提供了 MS-DOS 下不可用的完整 UNIX 接口。您可以轻松地开发 UNIX 应用程序并将其移植到 Linux,但在 MS-DOS 下,您仅限于 UNIX 功能的子集。
Linux 和 MS-DOS 是不同的实体。与其他商业操作系统相比,MS-DOS 价格低廉,并且在个人计算机世界中占有稳固的地位。没有其他个人计算机操作系统达到 MS-DOS 的普及程度,因为仅为其他操作系统花费 1,000 美元对于许多用户来说是不现实的。然而,Linux 是免费的,您可能终于有机会自己做出决定。
您可以根据您的期望和需求来判断 Linux 与 MS-DOS。Linux 并非适合所有人。如果您一直想在家中运行完整的 UNIX 系统,而又不想承担其他用于个人计算机的 UNIX 实现的高昂成本,那么 Linux 可能是您正在寻找的。
许多其他高级操作系统已在 PC 世界中流行起来。具体来说,IBM 的 OS/2 和 Microsoft Windows 已成为从 MS-DOS 升级的用户的流行选择。
OS/2 和 Windows NT 都是功能齐全的多任务操作系统,就像 Linux 一样。OS/2、Windows NT 和 Linux 大致支持相同的用户界面、网络和安全功能。然而,Linux 与其他竞争者之间的真正区别在于 Linux 是 UNIX 的一个版本,并受益于 UNIX 社区的广泛贡献。
是什么让 UNIX 如此重要?它不仅是多用户机器最流行的操作系统,而且是自由软件世界的基础。互联网上可用的大部分自由软件都是专门为 UNIX 系统编写的。
有许多来自许多供应商的 UNIX 实现。没有一个组织负责其分发。UNIX 社区正在大力推动以开放系统形式实现标准化,但没有一个团体控制这种设计。任何供应商(或,事实证明,任何黑客)都可以开发 UNIX 的标准实现。
另一方面,OS/2 和 Microsoft 操作系统是专有的。界面和设计由一家公司控制,该公司开发操作系统代码。从某种意义上说,这种组织是有益的,因为它为编程和用户界面设计设定了严格的标准,这与即使在开放系统社区中发现的标准也不同。
一些组织曾尝试标准化 UNIX 编程接口的艰巨任务。特别是 Linux,在很大程度上符合 POSIX.1 标准。随着时间的推移,预计 Linux 系统将遵守其他标准,但标准化不是 Linux 开发的主要目标。
存在几种用于 80386 或更高个人计算机的 UNIX 其他实现。80386 架构非常适合 UNIX,供应商已利用了这一点。
用于个人计算机的其他 UNIX 实现与 Linux 类似。几乎所有商业版本的 UNIX 都大致支持相同的软件、编程环境和网络功能。但是,Linux 和商业版本的 UNIX 之间存在差异。
与商业实现相比,Linux 支持不同的硬件范围。一般来说,Linux 支持大多数知名的硬件设备,但支持仍然仅限于开发人员拥有的硬件。商业 UNIX 供应商倾向于从一开始就支持更多硬件,但 Linux 支持的硬件设备列表正在不断扩展。我们将在第1.8节中介绍 Linux 的硬件要求。
许多用户报告说,Linux 至少与商业 UNIX 系统一样稳定。Linux 仍在开发中,但双管齐下的发布理念使稳定的版本可用,而不会阻碍开发。
对于许多用户来说,最重要的因素是价格。如果您可以从互联网或其他计算机网络下载 Linux 软件,则它是免费的。如果您没有互联网访问权限,您仍然可以通过邮购以软盘、磁带或 CD-ROM 的形式廉价购买 Linux。
当然,您可以从已经拥有该软件的朋友那里复制 Linux,或与其他人分摊购买成本。如果您计划在大量机器上安装 Linux,您只需要购买一份软件副本——Linux 的分发不附带“单机”许可证。
不应贬低商业 UNIX 实现的价值。除了软件本身的价格外,人们通常还会为文档、支持和质量保证付费。这些对于大型机构来说是非常重要的因素,但个人计算机用户可能不需要这些好处。无论如何,许多企业和大学都发现,在一个由廉价个人计算机组成的实验室中运行 Linux 比在一个由工作站组成的实验室中运行商业版本的 UNIX 更可取。Linux 可以在个人计算机上以一小部分成本提供工作站功能。
Linux 系统已经航行在北太平洋的公海上,并为海洋研究船管理电信和数据分析。Linux 系统用于南极洲的研究站。几家医院在 Linux 系统上维护患者记录。
还有其他免费或廉价的 UNIX 实现可用于 80386 和 80486。最著名的之一是 386BSD,它是 BSD UNIX 在 80386 上的实现。386BSD 软件包在许多方面与 Linux 相当,但哪个更好取决于您的需求和期望。我们可以做出的唯一强烈区分是 Linux 是开放开发的,任何志愿者都可以帮助开发过程,而 386BSD 由一个封闭的程序员团队开发。因此,这两个项目之间存在严重的哲学和设计差异。Linux 的目标是从头开始开发一个完整的 UNIX 系统(并在过程中获得很多乐趣),而 386BSD 的目标部分是将现有的 BSD 代码修改为在 80386 上使用。
NetBSD 是 BSD NET/2 发行版到多台机器(包括 80386)的另一个端口。NetBSD 具有稍微开放的开发结构,并且在许多方面与 386BSD 相当。
另一个值得注意的项目是 HURD,这是自由软件基金会为开发和分发适用于多个平台的免费 UNIX 版本而做出的努力。有关此项目的更多信息,请联系自由软件基金会(地址在附录C中给出)。在撰写本文时,HURD 仍在开发中。
也存在其他廉价版本的 UNIX,例如 Minix,这是一个学术性但有用的 UNIX 克隆,Linux 的早期开发就是基于它。其中一些实现主要是学术上的意义,而另一些则是功能齐全的系统。
到现在为止,您一定已经确信 Linux 有多么出色,以及它可以为您做的所有伟大的事情。但是,在您急于安装 Linux 之前,您需要了解它的硬件要求和限制。
在某些情况下,Linux 程序员曾尝试根据对接口的假设编写黑客式的设备驱动程序。在其他情况下,开发人员与制造商合作,并尝试获取有关设备接口的信息,但成功程度各不相同。
在以下章节中,我们将尝试总结 Linux 的硬件要求。《Linux 硬件指南》(Linux Hardware HOWTO)(参见第 1.9 节)包含更完整的 Linux 支持硬件列表。
免责声明:Linux 的许多硬件支持尚处于开发阶段。某些发行版可能支持也可能不支持实验性功能。本节列出了已支持一段时间且已知稳定的硬件。如有疑问,请查阅您的 Linux 发行版的文档。有关 Linux 发行版的更多信息,请参见第 2.2 节。
除了 Intel 80x86 系统之外,Linux 还适用于许多平台。这些平台包括 Macintosh、Amiga、Sun SparcStation 和基于 Digital Equipment Corporation Alpha 的系统。然而,在本书中,我们重点关注常见的 Intel 80386、80486 和 Pentium 处理器,以及 AMD、Cyrix 和 IBM 等制造商的克隆产品。
Linux 目前支持配备 Intel 80386、80486 或 Pentium CPU 的系统,包括所有变体,如 80386SX、80486SX、80486DX 和 80486DX2。非 Intel 克隆产品也适用于 Linux。Linux 也已被移植到 DEC Alpha 和 Apple PowerMac。
如果您有 80386 或 80486SX,您可能还希望使用数学协处理器,尽管这不是必需的。如果机器没有协处理器,Linux 内核可以执行 FPU 仿真。支持所有标准 FPU 耦合,包括 IIT、Cyrix FasMath 和 Intel。
大多数常见的 PC 主板都基于 PCI 总线,但也提供 ISA 插槽。Linux 支持这种配置,也支持 EISA 和 VESA 总线系统。IBM 的 MicroChannel (MCA) 总线在大多数 IBM PS/2 系统上都可以找到,它非常不同,并且最近添加了支持。
与其他高级操作系统相比,Linux 需要的内存非常少。您至少应该有 4 兆字节的 RAM,强烈建议 16 兆字节。内存越多,系统运行速度越快。某些发行版安装需要更多 RAM。
Linux 支持处理器的完整 32 位地址范围。换句话说,它会自动使用您的所有 RAM。
Linux 仅需 4 兆字节的 RAM 即可运行,包括 X Window 系统等附加功能和emacs。然而,拥有更多内存几乎与拥有更快的处理器一样重要。对于一般用途,16 兆字节就足够了,而对于用户负载较重的系统,可能需要 32 兆字节或更多。
大多数 Linux 用户将一部分硬盘驱动器分配为交换空间,用作 虚拟 RAM。即使您的机器拥有超过 16 兆字节的物理 RAM,您也可能希望使用交换空间。它不能替代物理 RAM,但它可以通过将不活动的代码部分交换到磁盘,让您的系统运行更大的应用程序。您应该分配的交换空间量取决于几个因素;我们将在第 2 章中回到这个问题。
可以从软盘运行 Linux,或者对于某些发行版,可以从 CD-ROM 上的实时文件系统运行 Linux,但为了获得良好的性能,您需要硬盘空间。Linux 可以与其他操作系统共存——它只需要一个或多个磁盘分区。
Linux 支持所有 IDE 和 EIDE 控制器以及较旧的 MFM 和 RLL 控制器。大多数(但不是全部)ESDI 控制器都受支持。非 SCSI 硬盘驱动器和软盘控制器的通用规则是,如果您可以从 MS-DOS 或其他操作系统访问驱动器,您应该也能够从 Linux 访问它。
Linux 还支持许多流行的 SCSI 驱动器控制器。这包括大多数 Adaptec 和 Buslogic 卡以及基于 NCR 芯片组的卡。
当然,要安装 Linux,您需要在硬盘驱动器上有一些可用空间。Linux 将支持同一台机器上的多个硬盘驱动器;如果需要,您可以在多个驱动器上为 Linux 分配空间。
需要多少硬盘空间取决于您的需求以及您要安装的软件。与 UNIX 实现相比,Linux 相对较小。您可以在 20 兆字节的磁盘空间中运行系统。但是,对于扩展和更大的软件包(如 X),您需要更多空间。如果您计划让多个人使用该机器,则需要为他们的文件分配存储空间。实际的空间要求范围从 200 兆字节到 1 千兆字节或更多。
此外,您可能还需要分配磁盘空间作为虚拟 RAM。我们将在第 2 章中讨论安装和使用交换空间。
每个 Linux 发行版都附带文档,以帮助您衡量软件配置所需的精确存储量。查看您的发行版随附的信息或第 2 章中相应的安装部分。
Linux 支持标准的 Hercules、CGA、EGA、VGA、IBM 单色、Super VGA 和许多加速视频卡,以及用于默认的基于文本的界面的显示器。一般来说,如果视频卡和显示器在 MS-DOS 等操作系统下工作,则该组合应在 Linux 下正常工作。但是,原始的 IBM CGA 卡在 Linux 下会出现“雪花”,这很不舒服。
像 X 这样的图形环境有自己的视频硬件要求。我们不在此处列出它们,而是将该讨论推迟到第 5.1 节。流行的视频卡受到支持,并且会定期添加新的卡支持。
您可能还有 CD-ROM 驱动器、鼠标或声卡等设备,并且可能对 Linux 是否支持这些硬件感兴趣。
通常,鼠标仅在像 X 这样的图形环境中使用。然而,一些与图形环境无关的 Linux 应用程序也使用鼠标。
Linux 支持标准的串行鼠标,如 Logitech、MM 系列、Mouseman、Microsoft(2 键)和 Mouse Systems(3 键)。Linux 还支持 Microsoft、Logitech 和 ATIXL 总线鼠标以及 PS/2 鼠标接口。
模拟鼠标的指点设备(如轨迹球和触摸板)也应该可以工作。
许多常见的 CD-ROM 驱动器连接到标准的 IDE 控制器。CD-ROM 的另一个常见接口是 SCSI。SCSI 支持每个设备的多个逻辑单元,因此您可以使用 CD-ROM“点唱机”。此外,还支持一些专有接口,如 NEC CDR-74、Sony CDU-541 和 CDU-31a、Texel DM-3024 和 Mitsumi。
Linux 支持用于 CD-ROM 的标准 ISO 9660 文件系统和 High Sierra 文件系统扩展。
如果支持 SCSI 控制器,则支持任何 SCSI 磁带驱动器,包括四分之一英寸、DAT 和 8MM。连接到软盘控制器的设备(如软盘磁带驱动器)也受支持,其他一些接口(如 QIC-02)也受支持。
Linux 支持完整的并行打印机系列。如果 MS-DOS 或其他操作系统可以从并行端口访问您的打印机,Linux 也应该能够访问它。Linux 打印机软件包括 UNIX 标准lp和lpr软件。如果您有网络,此软件允许您通过网络远程打印。Linux 还包括允许大多数打印机处理 PostScript 文件的软件。
与打印机支持一样,Linux 支持全系列的串行调制解调器,包括内置和外置调制解调器。Linux 提供了大量的电信软件,包括 Kermit、pcomm, minicom和seyon。如果您的调制解调器可以从同一台机器上的另一个操作系统访问,您应该可以毫无困难地从 Linux 访问它。
Linux 支持许多流行的以太网卡和 LAN 适配器。Linux 还支持一些 FDDI、帧中继和令牌环网卡,以及所有 Arcnet 卡。支持的网络卡列表包含在您的发行版的内核源代码中。
还有许多其他 Linux 信息来源可用。特别是,许多关于 UNIX 的书籍通常会很有用,尤其是对于不熟悉 UNIX 的读者。我们建议您在尝试勇闯 Linux 丛林之前仔细阅读其中一本书。
信息也可以以电子形式在线获得。您必须有权访问 Internet、Usenet 或 Fidonet 等在线网络才能访问信息。一个好的起点是 www.linuxresources.com(参见附录 A)。如果您无法访问,您或许可以找到好心人给您提供文档的纸质副本。
许多 Linux 文档可通过匿名 FTP 从世界各地的 Internet 存档站点以及 Fidonet 和 CompuServe 等网络获得。Linux CD-ROM 发行版也包含此处提及的文档。如果您可以向 Internet 站点发送邮件,您或许可以使用 FTP 电子邮件服务器之一来检索这些文件,这些服务器会将 FTP 站点的文档或文件邮寄给您。有关使用 FTP 电子邮件服务器的更多信息,请参见附录 B。
附录 B 中给出了著名的 Linux 存档站点列表。为了减少网络流量,您应该使用地理位置上离您较近的 FTP 站点。
附录 A 包含可通过匿名 FTP 获取的 Linux 文档的部分列表。文件名因站点而异。大多数站点将 Linux 相关文档保存在docs其 Linux 存档的子目录中。例如,FTP 站点sunsite.unc.edu,将 Linux 文件保存在/pub/Linux,Linux 相关文档在/pub/Linux/docs.
可用的在线文档示例包括Linux 常见问题解答,其中收集了有关 Linux 的常见问题;Linux HOWTO 文档,其中描述了系统的特定方面,如安装 HOWTO、打印 HOWTO 和以太网 HOWTO;以及Linux META-FAQ,它是 Internet 上的信息来源列表。
其中许多文档也定期发布到一个或多个 Linux 相关的 Usenet 新闻组;请参见下面的第 1.9.4 节。
Linux 文档项目主页位于万维网上,网址为http://sunsite.unc.edu/LDP此网页列出了许多 HTML 格式的 HOWTO 和其他文档,以及指向 Linux 用户感兴趣的其他站点的指针,例如ssc.com,Linux Journal 月刊的所在地。您可以在以下网址找到其主页:http://www.ssc.com/.
Linux 文档项目的书籍是在 Internet 上开展的一项工作的结果,旨在编写和分发一套真正的 Linux 手册,类似于商业 UNIX 版本随附的文档,涵盖安装、操作、编程、网络和内核开发。
Linux 文档项目手册可通过匿名 FTP 和邮购获得。附录 A 列出了可用的手册并描述了如何获取它们。
许多大型出版商,包括 MIS:Press、Digital Press、O'Reilly & Associates 和 SAMS,都加入了 Linux 的行列。请咨询计算机书店或 SSC 的网页,网址为http://www.ssc.com/,或 Linux Journal 中的书评,有时在其网站上提供,https://linuxjournal.cn
大量关于 UNIX 的书籍通常适用于 Linux。在其使用和编程接口方面,Linux 与 UNIX 的其他实现没有太大区别。您想了解的关于使用和编程 Linux 的几乎所有内容都可以在一般的 UNIX 文本中找到。事实上,本书旨在补充当前可用的 UNIX 书籍库。在这里,我们介绍了最重要的 Linux 特定细节,并希望您能从其他来源寻找深入的信息。
有了关于 UNIX 的好书以及本书,您应该能够应对几乎所有事情。附录 A 列出了几本强烈推荐给 UNIX 新手和专家的 UNIX 书籍。
Linux Journal 杂志在世界各地发行,是与 Linux 社区保持联系的绝佳方式,特别是如果您无法访问 Usenet 新闻(请参阅下文)。有关订阅 Linux Journal 的信息,请参见附录 A。
Usenet 是一个全球性的电子新闻和讨论论坛,其中包含各种 新闻组,这些新闻组是专门讨论特定主题的区域。许多关于 Linux 开发的讨论都发生在 Internet 和 Usenet 上。毫不奇怪,许多 Usenet 新闻组都专门讨论 Linux。
最初的 Linux 新闻组,alt.os.linux,是为了将一些关于 Linux 的讨论从comp.os.minix和各种邮件列表中移出而创建的。很快,alt.os.linux上的流量增长到足以在comp层次结构中设立新闻组。1992 年 2 月进行了投票,并且comp.os.linux被创建。
comp.os.linux迅速成为 Usenet 组中最受欢迎(和最吵闹)的组之一,比comp.os层次结构中的任何其他组都更受欢迎。1992 年 12 月,投票决定拆分新闻组以减少流量;只有comp.os.linux.announce通过了这次投票。1993 年 7 月,该组最终被拆分为一个新的层次结构。近 2,000 人参加了comp.os.linux重组投票,使其成为有史以来规模最大的 Usenet 投票呼吁之一。
如果您没有 Usenet,则有邮件到新闻网关可用于以下许多(如果不是全部)新闻组。
此列表绝非完整。当需要细分讨论时,会创建新的组,并且在其他层次结构中也有 Linux 组。
如果您可以访问 Internet 电子邮件,即使您无法访问 Usenet,也可以参与多个邮件列表。如果您不直接连接到 Internet,如果您可以与 Internet 交换电子邮件(例如,通过 UUCP、Fidonet、CompuServe 或其他交换 Internet 邮件的网络),您可以加入这些邮件列表之一。
有关 Linux 邮件列表的更多信息,请发送电子邮件至
majordomo@vger.rutgers.edu
在邮件正文中包含一行字help,您将收到一条消息,其中描述了如何订阅和取消订阅各种邮件列表。单词lists单独一行将检索可通过majordomo.vger.rutgers.edu服务器访问的邮件列表的名称。
Linux 也有几个专用邮件列表。了解这些邮件列表的最佳方法是关注 Linux Usenet 新闻组的公告,以及阅读发布到 Usenet 的公开可用的邮件列表列表news.answers组。
在您的 Linux 世界探险之旅中,您无疑需要帮助。即使是 UNIX 专家有时也会被 Linux 的某些怪癖或功能所困扰。重要的是要知道如何、在哪里以及何时寻求帮助。
获取帮助的主要方式是通过 Internet 邮件列表和新闻组,如第 1.9 节所述。如果您无法访问这些来源,您或许可以在 BBS 和 CompuServe 等在线服务上找到类似的 Linux 讨论论坛。Linux Journal 的最佳技术支持专栏也可在线获取,网址为https://linuxjournal.cn/techsup.html.
一些企业为 Linux 提供商业支持。这些服务允许您支付订阅费,以便您可以致电顾问寻求 Linux 问题方面的帮助。
牢记以下建议将大大改善您使用 Linux 的体验,并保证您在寻求帮助时取得更大的成功。
首先查阅所有可用的文档! 当您第一次遇到问题时,您应该这样做。第 1.9 节和附录 A 中列出了各种信息来源。这些文档是为需要 Linux 系统帮助的人(例如您)辛勤编写的。如上所述,为 UNIX 编写的书籍也适用于 Linux,您也应该使用它们。
如果您可以访问 Usenet 新闻或任何 Linux 相关的邮件列表,请务必在发布之前阅读那里的信息。通常,文档中不易找到的常见问题的解决方案在新闻组和邮件列表中得到了很好的涵盖。如果您只向这些组发布帖子但不阅读它们,您就是在自找麻烦。
学会欣赏自力更生。 您首先运行 Linux 就是为了这个。请记住,Linux 的全部意义在于破解和解决问题。它不是商业操作系统,也不想成为商业操作系统。破解不会杀死您。事实上,自己调查和解决问题将是很有启发性的——您甚至有一天可能会称自己为 Linux 大师。学会欣赏破解系统和自己解决问题的全部价值。您不应期望在没有一些手工操作的情况下运行一个完整的自制 Linux 系统。
保持冷静。 对您的 Linux 盒子使用斧头——或者更糟的是,强大的电磁铁——不会获得任何好处。一个大型的拳击袋或长时间的散步是缓解偶尔的压力发作的好方法。随着 Linux 的成熟和发行版变得更加可靠,我们希望这个问题会消失。然而,即使是商业 UNIX 实现也可能很棘手。当一切都失败时,请坐下来,深呼吸几次,并在您感到放松时回到问题。您的头脑和良知会更清晰。
避免随意发帖。 许多人犯了过早发布或邮寄消息请求帮助的错误。遇到问题时,不要立即冲到最近的终端并向 Linux Usenet 组之一发布消息。首先尝试自己解决问题,并完全确定问题是什么。您的系统在打开时没有响应吗?也许它未插电。
当您发帖寻求帮助时,使其有价值。 请记住,阅读您帖子的人不一定在那里帮助您。因此,尽可能保持礼貌、简洁和信息丰富非常重要。
如何实现这一点?首先,您应该包含尽可能多的关于您的系统和问题的相关信息。发布简单的请求“我似乎无法让电子邮件工作”可能不会有任何结果,除非您包含有关您的系统、您正在使用的软件、您迄今为止尝试做的事情以及结果的信息。当您包含技术信息时,最好也包括有关您的软件版本(例如 Linux 内核版本)的一般信息,以及您的硬件配置的简要摘要。但不要过度——如果您尝试配置网络软件,您的显示器类型和品牌可能无关紧要。