Next Contents

1.1    什么是 Linux

1.1.1    Linux 的发音

Linux 发音为 "Lin-noks".


1.1.2    Linux 的官方定义

Linux is a Unix clone written from scratch by Linus Torvalds with assistance from a loosely-knit team of hackers across the Net. It aims towards POSIX compliance.

“Linux 是一种 UNIX 操作系统的克隆,它(的内核)由 Linus Torvalds 以及网络上组织松散的黑客队伍一起从零开始编写而成。 Linux 的目标是保持和 POSIX 的兼容。


It has all the features you would expect in a modern fully-fledged Unix, including true multitasking, virtual memory, shared libraries, demand loading, shared copy-on-write executables, proper memory management and TCP/IP networking.

“Linux 具备现代一切功能完整的 UNIX 系统所具备的全部特征,其中包括真正的多任务、 虚拟内存、共享库、需求装载、共享的写时复制程序执行、优秀的内存管理以及 TCP/IP 网络支持等。


It is distributed under the GNU General Public License.

“Linux 的发行遵守 GNU 的通用公共许可证。


Linux was first developed for 386/486-based PCs. These days it also runs on ARMs, DEC Alphas, SUN Sparcs, M68000 machines (like Atari and Amiga), MIPS and PowerPC, and others.

“Linux 起初为基于 386/486 的 PC 机开发,但现在,Linux 也可以运行在 DEC Alpha、SUN Sparc、M68000,以及MIPS 和 PowerPC 等计算机上。”


1.1.3    POSIX 及其重要地位

POSIX 表示可移植操作系统接口(Portable Operating System Interface ,缩写为 POSIX 是为了读音更 像 UNIX)。电气和电子工程师协会(Institute of Electrical and Electronics Engineers,IEEE) 最初开发 POSIX 标准,是为了提高 UNIX 环境下应用程序的可移植性。然而,POSIX 并不局限于 UNIX。 许多其它的操作系统,例如 DEC OpenVMS 和 Microsoft Windows NT,都支持 POSIX 标准,尤其是 IEEE Std. 1003.1-1990(1995 年修订)或 POSIX.1,POSIX.1 提供了源代码级别的 C 语言应用编程 接口(API)给操作系统的服务程序,例如读写文件。POSIX.1 已经被国际标准化组织(International Standards Organization,ISO)所接受,被命名为 ISO/IEC 9945-1:1990 标准。

POSIX 现在已经发展成为一个非常庞大的标准族,某些部分正处在开发过程中。表 1-1 给出了 POSIX 标准的几个 重要组成部分。POSIX 与 IEEE 1003 和 2003 家族的标准是可互换的。除 1003.1 之外,1003 和 2003 家族也包括在表中。

表 1-1 POSIX 标准的重要组成部分

1003.0

管理 POSIX 开放式系统环境(OSE)。IEEE 在 1995 年通过了这项标准。 ISO 的版本是 ISO/IEC 14252:1996。

1003.1

被广泛接受、用于源代码级别的可移植性标准。1003.1 提供一个操作系统的 C 语言应 用编程接口(API)。IEEE 和 ISO 已经在 1990 年通过了这个标准,IEEE 在 1995 年 重新修订了该标准。

1003.1b

一个用于实时编程的标准(以前的 P1003.4 或 POSIX.4)。这个标准在 1993 年 被 IEEE 通过,被合并进 ISO/IEC 9945-1。

1003.1c

一个用于线程(在一个程序中当前被执行的代码段)的标准。以前是 P1993.4 或 POSIX.4 的一部分,这个标准已经在 1995 年被 IEEE 通过,归入 ISO/IEC 9945-1:1996。

1003.1g

一个关于协议独立接口的标准,该接口可以使一个应用程序通过网络与另一个应用程序 通讯。 1996 年,IEEE 通过了这个标准。

1003.2

一个应用于 shell 和 工具软件的标准,它们分别是操作系统所必须提供的命令处理器 和工具程序。 1992 年 IEEE 通过了这个标准。ISO 也已经通过了这个标准(ISO/IEC 9945-2:1993)。

1003.2d

改进的 1003.2 标准。

1003.5

一个相当于 1003.1 的 Ada 语言的 API。在 1992 年,IEEE 通过了这个标准。 并在 1997 年对其进行了修订。ISO 也通过了该标准。

1003.5b

一个相当于 1003.1b(实时扩展)的 Ada 语言的 API。IEEE 和 ISO 都已经通过了 这个标准。ISO 的标准是 ISO/IEC 14519:1999。

1003.5c

一个相当于 1003.1q(协议独立接口)的 Ada 语言的 API。在 1998 年, IEEE 通过了这个标准。ISO 也通过了这个标准。

1003.9

一个相当于 1003.1 的 FORTRAN 语言的 API。在 1992 年,IEEE 通过了这个标准, 并于 1997 年对其再次确认。ISO 也已经通过了这个标准。

1003.10

一个应用于超级计算应用环境框架(Application Environment Profile,AEP)的标准。 在 1995 年,IEEE 通过了这个标准。

1003.13

一个关于应用环境框架的标准,主要针对使用 POSIX 接口的实时应用程序。 在 1998 年,IEEE 通过了这个标准。

1003.22

一个针对 POSIX 的关于安全性框架的指南。

1003.23

一个针对用户组织的指南,主要是为了指导用户开发和使用支持操作需求的 开放式系统环境(OSE)框架

2003

针对指定和使用是否符合 POSIX 标准的测试方法,有关其定义、一般需求和指导方针的 一个标准。在 1997 年,IEEE 通过了这个标准。

2003.1

这个标准规定了针对 1003.1 的 POSIX 测试方法的提供商要提供的一些条件。 在 1992 年,IEEE 通过了这个标准。

2003.2

一个定义了被用来检查与 IEEE 1003.2(shell 和 工具 API)是否符合的测试方法的 标准。在 1996 年,IEEE 通过了这个标准。

除了 1003 和 2003 家族以外,还有几个其它的 IEEE 标准,例如 1224 和 1228,它们 也提供开发可移植应用程序的 API。要想得到关于 IEEE 标准的最新信息,可以访问 IEEE 标准的主页,网址是 http://standard.ieee.org/。 有关 POSIX 标准的概述信息,请访问 Web 站点 http://standards.ieee.org/reading/ieee/stad_public/description/posix/

1.1.4    GNU 和 Linux 的关系

GNU 是 GNU Is Not UNIX 的递归缩写,是自由软件基金会的一个项目,该项目的目标是开发一个自由的 UNIX 版本,这一 UNIX 版本称为 HURD。尽管 HURD 尚未完成,但 GNU 项目已经开发了许多高质量的编 程工具,包括 emacs 编辑器、著名的 GNU C 和 C++ 编译器(gcc 和 g++),这些编译器可以在任何计 算机系统上运行。所有的 GNU 软件和派生工作均适用 GNU 通用公共许可证,即 GPL。GPL 允许软件作者 拥有软件版权,但授予其他任何人以合法复制、发行和修改软件的权利。

Linux 的开发使用了许多 GNU 工具。Linux 系统上用于实现 POSIX.2 标准的工具几乎都是 GNU 项目 开发的,Linux 内核、GNU 工具以及其他一些自由软件组成了人们常说的 Linux:

1.1.5    GPL 及其主要内容

1. GPL (General Public License)

GPL 的文本保存在 Linux 系统的不同目录下的命名为 COPYING 的文件里。例如, 键入 cd /usr/doc/ghostscript* 然后再键入 more COPYING 可查看 GPL 的内容。

GPL 和软件是否免费无关,它主要目标是保证软件对所有的用户来说是自由的。GPL 通过如下途径实 现这一目标:

遵照 GPL 的软件并不是可以任意传播的,这些软件通常都有正式的版权,GPL在发布软件或者复制软件时 声明限制条件。但是,从用户的角度考虑,这些根本不能算是限制条件,相反用户只会从中受益,因为 用户可以确保获得源代码。

尽管 Linux 内核也属于 GPL 范畴,但 GPL 并不适用于通过系统调用而使用内核服务的应用程序,通常 把这种应用程序看作是内核的正常使用。

假如准备以二进制的形式发布应用程序(像大多数商业软件那样),则必须确保自己的程序未使 用 GPL 保护的任何软件。如果软件通过库函数调用而使用了别的软件,则不必受到这一限制。大多数 函数库,受另一种 GNU 公共许可证,即 LGPL 的保护,将在下面介绍。

2. LGPL (Libraray General Public License)

GNU LGPL(GNU 程序库公共许可证)的内容全部包括在命名为 COPYING.LIB 的文件中。如果安装了内核 核的源程序,在任意一个源程序的目录下都可以找到 COPYING.LIB 文件的一个拷贝。

LGPL 允许在自己的应用程序中使用程序库,即使不公开自己的源代码。但是,LGPL 还规定,用户 必须能够获得在应用程序中使用的程序库的源代码,并且允许用户对这些程序库进行修改。

大多数 Linux 程序库,包括 C 程序库(libc.a)都属于 LGPL 范畴。因此,如果在 Linux 环境下,使 使用 GCC 编译器建立自己的应用程序,程序所链接的多数程序库是受 LGPL 保护的。如果想以二进制 的形式发布自己的应用程序,则必须注意遵循 LGPL 有关规定。

遵循 LGPL 的一种方法是,随应用程序一起发布目标代码,以及可以将这些目标程序和受 LGPL 保护的、更 新的 Linux 程序库链接起来的 makefile 文件。

遵循 LGPL 的比较好的一种方法是使用动态链接。使用动态链接时,即使是程序在运行中调用函数库中的 函数时,应用程序本身和函数库也是不同的实体。通过动态链接,用户可以直接使用更新后的函数库,而 不用对应用程序进行重新链接。

但我们必须当心个别属于 GPL 范畴的库和实用程序:篏NU dbm(即 gdbm)数据库类的程序库是非常著名的 GPL 库;GNU bison 分析器生成程序是另一个实用的 GPL 工具,如果使用 bison 生成代码,所得的 代码也适用于 GPL。

在 GPL 的保护范围以外,也有 GNU dbm 和 GNU bison 的相应的替代程序。例如,对于数据库类的程序库 库,可以使用 Berkeley 数据库 db 来替代 gdbm;对于分析器生成器,可以使用 yacc 来替代 bison。

1.1.6 Linux 的主要发行版

表 1-2 给出了 Linux 的主要发行版。除表中列出的发行版之外,还有大量的发行版存在, 比如 Slackware、OpenLinux、Mandrake 等等。建议新手使用 Red Hat Linux 或自己喜欢的 某种本地化发行版。

表 1-2 Linux 的主要发行版

Debian GNU/Linux

系统初始化:Sys V init
采用 dselct 和 dpkg 作为软件包管理程序

http://www.debian.org ftp://ftp.debian.org/debian

是由 GNU 发行的 Linux 版本,最符合 GNU 精神。提供了最大的灵活性, 适合 Linux 的高级用户。

Red Hat Linux

系统初始化:Sys V init
采用 RPM 软件包管理工具
大量图形化的管理工具

http://www.redhat.com ftp://ftp.redat.com

CERNET 各大型的 FTP 网站均有最新的 RedHat Linux。
采用 RPM 的软件保管理方式,软件的安装、卸载和升级非常方便,并提供了大量的 图形化管理工具,是初学者的最佳选择。

简体中文 Linux 发行版:





Next Contents