第 Ⅰ 部 分 入 本 部 分 的 主 要 内 容 : 第 1 章 开 始 使 用 Linux 第 2 章 创 建 完 美 的 Linux 桌 面
1 第 章 开 始 使 用 Linux 本 章 主 要 内 容 : 学 习 什 么 是 Linux 学 习 Linux 的 起 源 选 择 Linux 的 发 布 版 本 利 用 Linux 找 到 职 业 机 会 获 得 Linux 认 证 Linux 是 21 世 纪 最 重 要 的 技 术 进 步 之 一 除 了 在 Internet 发 展 过 程 中 所 起 到 的 重 要 作 用 以 及 在 计 算 机 驱 动 的 设 备 中 扮 演 着 重 要 的 技 术 角 色 外,Linux 开 发 还 为 合 作 项 目 提 供 了 一 种 模 型, 从 而 超 越 个 人 和 公 司 可 以 完 成 的 工 作 Google 运 行 了 成 千 上 万 的 Linux 服 务 器 来 增 强 其 搜 索 能 力 此 外, 它 的 Android 电 话 也 是 基 于 Linux 的 同 时, 当 下 载 并 运 行 Google 的 Chrome OS 时, 会 发 现 Chrome OS 也 是 由 Linux 操 作 系 统 在 后 台 提 供 支 持 Facebook 使 用 了 所 谓 的 LAMP 堆 栈 (Linux Apache Web 服 务 器 MySQL 数 据 库 和 PHP 网 络 脚 本 语 言, 这 些 都 是 开 源 项 目 ) 构 建 和 部 署 其 网 站 事 实 上,Facebook 自 己 也 使 用 了 一 种 开 源 的 开 发 模 型, 从 而 使 应 用 程 序 的 源 代 码 以 及 驱 动 Facebook 运 行 的 工 具 向 公 众 公 开 该 模 型 帮 助 Facebook 快 速 地 找 出 程 序 中 的 错 误, 并 获 得 来 自 全 世 界 的 帮 助, 从 而 为 Facebook 的 快 速 发 展 提 供 源 源 不 断 的 动 力 那 些 为 了 提 高 自 身 操 作 系 统 速 度 和 安 全 性 而 花 费 数 万 亿 美 元 的 金 融 机 构 也 依 赖 Linux 其 中 包 括 纽 约 股 票 交 易 所 芝 加 哥 商 品 交 易 所 以 及 东 京 股 票 交 易 所 随 着 云 逐 步 成 为 当 今 最 热 的 流 行 语 之 一, 其 中 一 部 分 是 炒 作 而 来 的, 但 也 有 一 部 分 并 不 是 炒 作, 因 为 如 今 快 速 发 展 的 云 创 新 是 以 Linux 和 其 他 开 源 技 术 为 基 础 的 任 何 构 建 一 个 私 有 云 或 者 公 共 云 所 需 的 软 件 组 件 ( 如 管 理 程 序 云 控 制 器 网 络 存 储 虚 拟 网 络 和 验 证 ) 都 可 以 从 开 源 世 界 中 免 费 获 得 Linux 在 全 世 界 的 广 泛 采 用 创 造 了 对 Linux 专 业 知 识 的 巨 大 需 求 本 章 将 帮 助 你 理 解 什 么 是 Linux Linux 的 起 源 以 及 如 何 才 能 熟 练 使 用 Linux, 从 而 在 你 成 为 一 名 Linux 专 家 的 道 路 上 开 一 个 好 头 本 书 的 其 他 部 分 将 会 提 供 相 关 的 实 践 活 动, 从 而 帮 助 你 获 得 相 关 的 知 识 最 后, 还 要 演 示 如 何 将 所 学 到 的 专 业 知 识 应 用 到 云 技 术 中
第 Ⅰ 部 分 入 1.1 理 解 什 么 是 Linux Linux 是 一 种 计 算 机 操 作 系 统 一 个 操 作 系 统 由 用 来 管 理 计 算 机 的 不 同 软 件 所 组 成, 并 且 可 以 在 操 作 系 统 上 运 行 应 用 程 序 Linux 以 及 其 他 类 似 的 计 算 机 操 作 系 统 都 包 含 了 如 下 所 示 的 功 能 : 检 测 和 准 备 硬 件 当 启 动 Linux 系 统 时 ( 即 当 打 开 计 算 机 时 ),Linux 将 查 看 计 算 机 中 的 组 件 (CPU 硬 盘 驱 动 器 网 卡 等 ) 并 加 载 访 问 这 些 特 定 的 硬 件 设 备 所 需 的 软 件 ( 驱 动 程 序 和 模 块 ) 管 理 进 程 操 作 系 统 必 须 同 时 跟 踪 正 在 运 行 的 多 个 进 程, 并 决 定 哪 些 进 程 访 问 CPU 以 及 何 时 进 行 访 问 此 外, 该 系 统 还 必 须 提 供 启 动 停 止 以 及 更 改 进 程 状 态 的 相 关 方 法 管 理 内 存 当 应 用 程 序 需 要 使 用 内 存 时, 必 须 向 其 分 配 RAM 和 交 换 空 间 ( 即 扩 展 内 存 ) 操 作 系 统 决 定 如 何 处 理 对 内 存 的 请 求 提 供 用 户 界 面 操 作 系 统 必 须 提 供 访 问 系 统 的 相 关 方 法 最 初, 主 要 是 通 过 一 个 被 称 为 Shell 的 命 令 行 解 释 器 来 访 问 Linux 系 统 如 今, 图 形 桌 面 界 面 也 被 广 泛 使 用 控 制 文 件 系 统 文 件 系 统 结 构 内 置 于 操 作 系 统 之 中 ( 或 者 说 作 为 模 块 加 载 到 操 作 系 统 中 ) 操 作 系 统 对 文 件 系 统 中 所 包 含 的 文 件 和 目 录 ( 文 件 夹 ) 的 所 有 权 和 访 问 进 行 控 制 提 供 用 户 访 问 和 身 份 验 证 创 建 用 户 账 户 并 在 用 户 之 间 设 置 允 许 边 界 是 Linux 的 一 项 基 本 功 能 分 离 用 户 账 户 和 组 账 户 能 够 让 用 户 控 制 他 们 自 己 的 文 件 和 进 程 提 供 管 理 实 用 工 具 在 Linux 中, 可 以 使 用 成 百 甚 至 上 千 个 命 令 和 图 形 窗 口 来 完 成 相 关 的 操 作, 比 如 添 加 用 户 管 理 磁 盘 监 视 网 络 安 装 软 件 管 理 计 算 机 以 及 确 保 计 算 机 安 全 等 启 动 服 务 为 了 使 用 打 印 机 处 理 日 志 消 息 以 及 提 供 各 种 不 同 的 系 统 和 网 络 服 务, 需 要 在 后 台 运 行 被 称 为 守 护 进 程 (daemon processes) 的 进 程, 从 而 等 待 请 求 的 到 来 在 Linux 中 可 以 运 行 多 种 不 同 类 型 的 服 务 此 外,Linux 还 提 供 了 不 同 的 方 法 来 启 动 和 停 止 这 些 服 务 换 句 话 说, 当 Linux 包 含 了 用 来 浏 览 Web 页 面 的 Web 浏 览 器 时, 它 也 是 一 台 可 以 向 他 人 提 供 Web 页 面 的 计 算 机 比 较 流 行 的 服 务 器 功 能 包 括 Web 电 子 邮 件 数 据 库 打 印 机 文 件 DNS 以 及 DHCP 服 务 器 编 程 工 具 在 Linux 中, 可 使 用 各 种 编 程 实 用 工 具 来 创 建 应 用 程 序, 以 及 使 用 不 同 的 库 来 实 现 专 业 界 面 如 果 想 要 更 好 地 管 理 Linux 系 统, 则 需 要 学 习 如 何 使 用 前 面 所 描 述 的 相 关 功 能 虽 然 可 以 通 过 使 用 图 形 界 面 来 管 理 大 部 分 功 能, 但 对 于 负 责 管 理 Linux 系 统 的 人 来 说, 理 解 Shell 命 令 行 是 至 关 重 要 的 现 代 Linux 系 统 的 功 能 已 经 大 大 超 越 了 最 初 的 UNIX 系 统 (Linux 是 基 于 UNIX 系 统 的 ) 的 功 能 在 大 型 企 业 中, 通 常 会 使 用 Linux 的 一 些 高 级 功 能, 比 如 : 群 集 Linux 可 被 配 置 为 在 群 集 (cluster) 中 工 作, 从 而 使 多 个 系 统 对 外 部 世 界 表 现 为 一 个 系 统 此 外, 还 可 以 对 服 务 进 行 相 关 配 置, 使 其 能 够 在 群 集 节 点 之 间 来 回 传 递, 从 而 使 这 些 节 点 在 使 用 相 关 服 务 时 感 觉 不 到 任 何 服 务 运 行 的 中 断 虚 拟 化 为 更 有 效 地 管 理 计 算 资 源, 可 以 将 Linux 作 为 一 个 虚 拟 主 机 来 运 行 在 该 主 机 上, 可 以 将 其 他 的 Linux 系 统 Microsoft Windows BSD 以 及 其 他 操 作 系 统 作 为 虚 拟 访 客 来 运 行 而 对 于 外 部 世 界 来 说, 每 一 个 虚 拟 访 客 都 表 现 为 一 个 单 独 的 计 算 机 而 在 Linux 中, 可 使 用 KVM 和 Xen 技 术 来 创 建 虚 拟 主 机 4
第 1 章 开 始 使 用 Linux 云 计 算 为 管 理 大 规 模 的 虚 拟 化 环 境, 可 以 使 用 基 于 Linux 的 成 熟 的 云 计 算 平 台 诸 如 OpenStack 和 Red Hat Enterprise Virtualization 之 类 的 项 目 可 以 同 时 管 理 多 个 虚 拟 主 机 虚 拟 网 络 用 户 和 系 统 验 证 虚 拟 访 客 以 及 网 络 存 储 空 间 实 时 计 算 可 以 对 Linux 进 行 相 关 配 置, 以 便 进 行 实 时 计 算, 此 时 高 优 先 级 的 进 程 可 以 得 到 更 快 可 预 测 的 关 注 专 的 存 储 空 间 在 Linux 中, 除 了 在 计 算 机 的 硬 盘 中 存 储 数 据 之 外, 还 可 以 使 用 许 多 专 的 本 地 和 网 络 存 储 空 间 Linux 中 可 用 的 共 享 存 储 设 备 包 括 iscsi Fibre Channel 以 及 Infiniband 而 完 全 开 源 的 存 储 平 台 包 括 诸 如 Ceph(http://ceph.com) 和 GlusterFS(http://gluster.org) 之 类 的 项 目 本 书 并 不 会 介 绍 所 有 这 些 高 级 主 题 然 而, 对 于 那 些 使 用 Shell 使 用 磁 盘 启 动 和 停 止 服 务 以 及 为 了 使 用 这 些 高 级 功 能 而 配 置 不 同 的 服 务 器 所 需 的 相 关 功 能, 本 书 将 会 详 细 进 行 介 绍 1.2 了 解 如 何 区 分 Linux 和 其 他 操 作 系 统 如 果 你 是 一 名 Linux 的 初 学 者, 且 使 用 过 Microsoft Windows 或 者 Apple Mac OS 操 作 系 统, 那 么 学 习 Linux 是 非 常 好 的 机 会 虽 然 Mac OS X 在 免 费 软 件 操 作 系 统 中 有 一 席 之 地, 通 常 被 称 为 Berkeley Software Distribution, 但 Microsoft 以 及 Apple 的 操 作 系 统 都 被 称 为 专 有 操 作 系 统 这 也 就 意 味 着 : 无 法 查 看 用 来 创 建 操 作 系 统 的 代 码 对 于 无 法 满 足 需 求 的 操 作 系 统, 不 能 在 最 基 本 层 面 对 其 进 行 更 改 并 且 不 能 使 用 该 操 作 系 统 构 建 自 己 的 操 作 系 统 不 能 对 源 代 码 进 行 检 查, 从 而 无 法 找 到 代 码 错 误, 发 现 安 全 漏 洞, 或 者 学 习 代 码 的 工 作 原 理 如 果 操 作 系 统 的 开 发 者 没 有 对 外 公 开 所 需 的 编 程 接 口, 你 将 无 法 向 操 作 系 统 中 插 入 自 己 的 软 件 当 你 看 到 这 些 关 于 专 有 软 件 的 相 关 陈 述, 可 能 会 说 : 我 不 在 乎 这 些 我 不 是 一 名 软 件 开 发 人 员 我 并 不 想 查 看 或 者 更 改 操 作 系 统 的 构 建 机 理 你 的 想 法 可 能 是 对 的 但 事 实 上, 很 多 其 他 软 件 已 经 成 为 免 费 的 开 源 的 软 件 并 被 使 用, 从 而 使 Internet( 比 如 Google) 移 动 电 话 ( 比 如 Android) 特 殊 的 计 算 设 备 ( 比 如 Tivo) 以 及 成 百 上 千 的 技 术 公 司 呈 现 爆 炸 式 发 展 免 费 软 件 不 仅 降 低 了 计 算 成 本, 还 有 利 于 创 新 的 爆 发 你 可 能 并 不 希 望 像 Google Facebook 以 及 其 他 公 司 那 样 使 用 Linux 为 一 家 数 十 亿 美 元 的 公 司 构 建 基 础 程 序 但 那 些 已 经 使 用 Linux 构 建 了 计 算 机 基 础 结 构 的 公 司 则 需 要 越 来 越 多 具 备 专 业 技 能 的 人 来 运 行 这 些 系 统 一 个 功 能 强 大 且 灵 活 的 计 算 机 系 统 是 如 何 免 费 的 呢? 要 了 解 这 一 切, 需 要 首 先 明 白 Linux 的 起 源 所 以, 本 章 的 下 一 节 将 介 绍 导 致 Linux 产 生 的 免 费 软 件 运 动 的 不 寻 常 且 曲 折 的 发 展 道 路 1.3 探 讨 Linux 历 史 Linux 的 历 史 起 源 于 1991 年 8 月 25 日 Linus Torvalds 向 comp.os.minix 新 闻 组 张 贴 的 一 则 消 息 5
第 Ⅰ 部 分 入 (http://groups.google.com/group/comp.os.minix/msg/b813d52cbc5a044b?pli=1): Linus Benedict Torvalds 所 有 使 用 Minix 的 朋 友 们, 大 家 好 目 前, 我 正 在 为 386(486)AT clones 编 写 一 个 免 费 的 操 作 系 统 ( 这 仅 仅 只 是 我 的 一 个 业 余 爱 好, 该 操 作 系 统 将 不 会 是 一 个 类 似 于 gnu 之 类 的 大 型 专 业 操 作 系 统 ) 该 想 法 从 今 年 4 月 份 开 始 酝 酿, 目 前 已 经 开 始 准 备 编 写 了 由 于 我 的 操 作 系 统 与 Minix 类 似 ( 比 如 相 同 的 文 件 系 统 物 理 布 局 ( 之 所 以 这 么 做, 最 主 要 是 出 于 现 实 原 因 )), 因 此 希 望 喜 欢 或 者 不 喜 欢 Minix 的 人 可 以 提 出 反 馈 意 见, 任 何 建 议 都 欢 迎, 但 我 不 能 保 证 会 实 现 所 有 的 意 见 Linus(torvalds@kruuna.helsinki.fi) 附 注 : 当 然, 该 操 作 系 统 不 包 含 任 何 Minix 代 码, 并 且 具 有 一 个 多 线 程 的 文 件 系 统 该 系 统 不 是 便 携 式 的 ( 原 文 如 此 )( 因 为 使 用 了 386 任 务 切 换 等 功 能 ), 同 时, 它 仅 支 持 AT-harddisks, 这 就 是 我 能 够 完 成 的 全 部 功 能 Minix 是 90 年 代 初 在 PC 上 运 行 的 类 似 于 UNIX 的 一 种 操 作 系 统 与 Minix 一 样,Linux 也 是 UNIX 操 作 系 统 的 克 隆 除 了 少 数 例 外, 比 如 Microsoft Windows, 大 多 数 现 代 计 算 机 系 统 ( 包 括 Mac OS X 和 Linux) 都 源 自 UNIX 操 作 系 统, 而 该 系 统 最 初 由 AT&T 所 创 建 如 果 你 真 正 体 会 到 了 AT&T Bell 实 验 室 是 如 何 根 据 一 个 专 有 系 统 创 建 出 一 个 免 费 的 操 作 系 统, 那 么 将 有 助 于 理 解 创 建 UNIX 时 的 文 化 背 景 以 及 使 UNIX 的 精 华 部 分 重 现 的 一 系 列 事 件 注 意 为 学 习 更 多 关 于 Linux 的 创 建 原 理, 请 参 考 以 下 书 籍 :Linus Torvalds 所 著 的 The Story of an Accidental Revolutionary(HarperCollins 出 版 社,2001) 1.3.1 Bell 实 验 室 中 自 由 流 动 的 UNIX 文 化 最 初,UNIX 操 作 系 统 在 一 个 公 共 社 区 中 被 创 建 并 逐 步 发 展 UNIX 的 创 建 并 不 是 受 市 场 需 求 所 驱 使 的, 而 是 用 来 克 服 生 产 程 序 中 的 障 碍 而 拥 有 UNIX 商 标 的 AT&T 最 终 使 UNIX 成 为 了 一 个 商 业 产 品, 但 在 那 时, 许 多 使 UNIX 特 殊 化 的 概 念 ( 甚 至 很 多 早 期 的 代 码 ) 都 已 经 进 入 了 公 共 领 域 如 果 你 非 常 年 轻 无 法 回 想 起 1984 年 AT&T 分 裂 时 的 情 景, 那 么 可 能 也 就 不 知 道 AT&T 曾 经 是 一 家 电 话 公 司 直 到 20 世 纪 80 年 代 初,AT&T 并 没 有 过 多 地 考 虑 竞 争 的 问 题, 因 为 当 时 在 美 国 如 果 想 要 买 一 部 电 话, 则 必 须 去 AT&T 公 司 所 以 它 将 大 部 分 资 金 投 入 了 纯 理 论 的 研 究 项 目 而 进 行 这 些 研 究 项 目 的 单 位 是 位 于 New Jersey 州 Murray Hill 的 Bell 实 验 室 在 1969 年 左 右, 一 个 被 称 为 Multics 的 项 目 失 败 了, 在 此 之 后,Bell 实 验 室 聘 用 了 Ken Thompson 和 Dennis Ritchie 开 始 创 建 一 种 新 的 操 作 系 统, 从 而 为 软 件 的 开 发 提 供 一 种 改 进 的 环 境 在 那 个 时 候, 大 部 分 应 用 程 序 都 是 写 在 穿 孔 卡 片 上, 并 批 量 地 输 入 到 大 型 机 中 在 1980 年 的 一 次 关 于 UNIX 分 时 系 统 的 演 变 的 演 讲 中,Dennis Richie 总 结 了 UNIX 系 统 的 灵 魂 : 我 们 想 要 开 发 的 并 不 仅 仅 是 一 个 能 够 进 行 编 程 的 好 环 境, 而 是 一 个 能 够 形 成 友 谊 的 系 统 根 据 经 验 我 们 知 道, 公 用 计 算 的 本 质 是 通 过 远 程 访 问 提 供 的, 分 时 系 统 并 不 仅 仅 是 为 了 将 程 序 输 入 一 个 终 端, 而 是 鼓 励 大 家 进 行 密 切 的 沟 通 从 那 时 开 始,UNIX 设 计 的 简 单 性 以 及 强 大 功 能 开 始 打 破 阻 碍 软 件 开 发 人 员 的 种 种 障 碍 而 UNIX 的 基 础 由 几 个 关 键 元 素 组 成 : 6
第 1 章 开 始 使 用 Linux UNIX 文 件 系 统 因 为 UNIX 包 含 了 一 个 允 许 子 目 录 级 别 的 文 件 系 统 结 构 ( 对 于 当 今 桌 面 用 户 而 言, 这 种 结 构 看 起 来 类 似 于 在 文 件 夹 中 包 含 了 文 件 夹 ), 所 以 可 以 使 用 UNIX 以 一 种 直 观 的 方 式 组 织 文 件 和 目 录 此 外,UNIX 将 磁 盘 磁 带 以 及 其 他 设 备 表 示 为 单 独 的 设 备 文 件, 这 样 就 能 够 将 它 们 作 为 目 录 中 的 条 目 来 进 行 访 问, 从 而 大 大 简 化 了 访 问 这 些 设 备 的 复 杂 方 法 输 入 / 输 出 重 定 向 早 期 的 UNIX 系 统 还 包 括 了 输 入 重 定 向 和 管 道 通 过 一 个 命 令 行, UNIX 用 户 能 够 使 用 右 箭 头 键 (>) 将 一 条 命 令 的 输 出 定 向 到 一 个 文 件 中 随 后,UNIX 又 引 入 了 管 道 ( ) 的 概 念, 从 而 将 一 条 命 令 的 输 出 定 向 到 另 一 条 命 令 的 输 入 中 例 如, 下 面 所 示 的 命 令 行 首 先 将 file1 和 file2 连 接 起 来 (cat), 然 后 按 照 字 母 顺 序 对 文 件 中 的 代 码 行 进 行 排 序 (sort), 紧 接 着 对 排 好 序 的 文 本 进 行 分 页 (pr), 以 便 进 行 打 印, 最 后 将 输 出 定 向 到 计 算 机 的 默 认 打 印 机 上 (lpr): $ cat file1 file2 sort pr lpr 这 种 对 输 入 和 输 出 进 行 定 向 的 方 法 能 够 让 开 发 人 员 创 建 自 己 专 业 的 实 用 工 具, 并 且 能 够 与 现 有 的 实 用 工 具 进 行 联 接 这 种 模 块 化 的 方 法 能 够 让 不 同 的 开 发 人 员 编 写 不 同 的 代 码, 并 且 在 用 户 需 要 的 时 候 将 这 些 代 码 片 段 组 合 起 来 可 移 植 性 简 化 使 用 UNIX 的 体 验 能 够 使 其 更 具 可 移 植 性, 从 而 在 不 同 的 计 算 机 上 运 行 通 过 使 用 设 备 驱 动 程 序 ( 表 示 为 在 文 件 系 统 树 中 的 若 干 个 文 件 ),UNIX 只 需 向 应 用 程 序 提 供 一 个 接 口 即 可, 而 应 用 程 序 则 无 须 知 道 底 层 硬 件 的 详 细 信 息 如 果 日 后 想 要 从 UNIX 移 植 到 另 一 个 系 统, 开 发 人 员 只 需 更 改 驱 动 程 序 即 可, 而 应 用 程 序 并 不 需 要 针 对 不 同 的 硬 件 进 行 修 改 然 而, 为 了 使 可 移 植 性 成 为 现 实, 还 需 要 使 用 一 种 高 级 编 程 语 言 来 实 现 所 需 的 软 件 为 此,Brian Kernighan 和 Dennis Ritchie 创 建 了 C 编 程 语 言 在 1973 年, 使 用 C 语 言 重 新 编 写 了 UNIX 如 今, C 语 言 仍 然 是 创 建 UNIX( 以 及 Linux) 操 作 系 统 内 核 所 使 用 的 主 要 语 言 在 1979 年 的 一 次 演 讲 中,Ritchie 接 着 说 (http://cm.bell-labs.com/who/dmr/hist.html): 如 今, 仍 然 使 用 汇 编 程 序 编 写 的 重 要 的 UNIX 程 序 就 只 剩 汇 编 程 序 自 己 了 ; 实 际 上, 所 有 的 实 用 工 具 都 已 经 使 用 C 语 言 进 行 编 写, 而 大 部 分 应 用 程 序 也 都 是 使 用 C 语 言 编 写 的, 虽 然 仍 然 有 许 多 介 绍 Fortran Pascal 和 Algol 68 的 网 站 似 乎 可 以 肯 定 的 是,UNIX 的 成 功 很 大 程 度 上 取 决 于 其 软 件 的 可 读 性 可 修 改 性 以 及 可 移 植 性, 而 这 三 性 又 取 决 于 UNIX 在 高 级 语 言 中 的 表 达 如 果 你 是 一 名 Linux 爱 好 者, 并 且 有 兴 趣 想 知 道 早 期 的 Linux 中 哪 些 功 能 被 保 留 下 来, 那 么 不 妨 读 一 下 Dennis Ritchie 再 版 的 第 一 个 UNIX 程 序 员 手 册 (1971 年 11 月 3 日 ) 可 以 在 Dennis Ritchie 的 网 站 中 找 到 该 手 册 :http://cm.bell-labs.com/cm/cs/who/dmr/lstedman.html 该 文 档 的 形 式 是 UNIX 手 册 页 (man pages), 如 今,UNIX 手 册 页 仍 然 是 介 绍 UNIX 和 Linux 操 作 系 统 命 令 和 编 程 工 具 的 主 要 形 式 通 过 阅 读 UNIX 系 统 的 早 期 文 档 和 说 明, 可 以 清 楚 地 看 到 UNIX 的 开 发 是 一 个 自 由 流 动 的 过 程, 从 而 使 UNIX 变 得 更 加 优 秀 而 该 过 程 还 导 致 了 代 码 的 共 享 ( 包 括 Bell 实 验 室 内 部 的 共 享 以 及 外 部 的 共 享 ), 从 而 能 够 快 速 地 开 发 高 质 量 的 UNIX 操 作 系 统 此 外, 还 可 以 产 生 一 个 AT&T 日 后 难 以 回 滚 的 操 作 系 统 7
第 Ⅰ 部 分 入 1.3.2 商 业 化 的 UNIX 在 1984 年 AT&T 资 产 剥 离 之 前 ( 当 时,AT&T 被 分 为 AT&T 以 及 七 个 Baby Bell 公 司 ),AT&T 被 禁 止 出 售 计 算 机 系 统 而 日 后 成 为 Verizon Qwest 和 Alcatel-Lucent 的 公 司 也 都 是 AT&T 的 一 部 分 由 于 AT&T 对 电 话 系 统 的 垄 断, 美 国 政 府 开 始 担 心 一 个 不 受 限 制 的 AT&T 可 能 会 主 导 新 兴 的 计 算 机 产 业 因 为 在 资 产 剥 离 之 前 AT&T 被 禁 止 直 接 向 客 户 出 售 计 算 机, 所 以 AT&T 将 UNIX 源 代 码 授 权 给 各 大 学 并 且 只 收 取 象 征 性 的 费 用 此 时,AT&T 所 出 售 的 UNIX 操 作 系 统 都 需 要 用 户 自 己 进 行 编 译 1. Berkeley 软 件 发 行 版 的 产 生 到 了 1975 年,UNIX V6 成 为 在 Bell 实 验 室 之 外 被 广 泛 使 用 的 UNIX 的 第 一 个 版 本 根 据 该 版 本 的 UNIX 源 代 码, 位 于 Berkeley 的 California 大 学 创 建 了 UNIX 的 第 一 个 主 要 变 异 版 本, 该 版 本 被 称 为 BSD(Berkeley Software Distribution,Berkeley 软 件 发 行 版 ) 在 接 下 来 的 10 年 里,UNIX 的 BSD 版 本 和 Bell Labs 版 本 在 各 自 不 同 的 方 向 得 到 了 迅 速 发 展 其 中 BSD 继 续 以 自 由 流 动 代 码 共 享 的 方 式 ( 这 也 是 早 前 Bell Labs UNIX 的 主 要 特 点 ) 向 前 发 展, 而 AT&T 则 开 始 使 UNIX 转 向 商 业 化 随 着 一 个 独 立 的 UNIX 实 验 室 的 产 生 ( 该 实 验 室 从 Murray Hill 搬 出, 搬 到 了 New Jersey 的 Summit),AT&T 开 始 尝 试 对 UNIX 进 行 商 业 化 到 了 1984 年, 资 产 剥 离 后 的 AT&T 开 始 准 备 真 正 出 售 UNIX 了 2. UNIX 实 验 室 和 商 业 化 UNIX 实 验 室 被 视 为 一 个 无 法 找 到 其 产 地 或 者 找 到 一 种 方 法 来 赚 钱 的 宝 石 由 于 它 在 Bell 实 验 室 和 AT&T 的 其 他 部 之 间 来 回 迁 移, 因 此 它 的 名 称 被 改 了 多 次 其 中 给 人 影 响 最 深 的 名 字 是 其 作 为 AT&T 的 剥 离 资 产 时 的 名 称 :USL(UNIX System Laboratories,UNIX 系 统 实 验 室 ) 来 自 USL 的 UNIX 源 代 码 被 部 分 卖 给 了 SCO(Santa Cruz Operation), 因 此 曾 经 一 段 时 间 SCO 使 用 这 部 分 代 码 作 为 诉 讼 依 据 与 主 要 的 Linux 供 应 商 ( 比 如 IBM 和 Red Hat 公 司 ) 打 官 司 所 以, 我 认 为 大 部 分 人 已 经 遗 忘 了 USL 对 Linux 的 成 功 所 做 的 贡 献 当 然, 在 20 世 纪 80 年 代, 许 多 计 算 机 公 司 担 心 相 对 于 一 家 位 于 华 盛 顿,Redmond 地 区 的 新 崛 起 的 公 司, 完 成 资 产 剥 离 的 AT&T 将 可 能 对 计 算 机 产 业 产 生 更 大 的 威 胁 为 了 消 除 IBM Intel Digital Equipment Corporation 以 及 其 他 计 算 机 公 司 的 担 心,UNIX 实 验 室 做 出 以 下 承 诺, 以 确 保 一 个 平 等 的 游 戏 规 则 : 仅 出 售 源 代 码 AT&T 将 继 续 只 出 售 源 代 码, 并 且 对 所 有 的 许 可 证 持 有 人 都 平 等 可 用, 而 不 会 生 产 自 己 的 UNIX 套 装 此 外, 每 一 家 公 司 还 可 以 将 UNIX 植 入 到 自 己 的 设 备 中 直 到 1992 年, 为 了 与 Novell 组 建 合 资 企 业 ( 被 称 为 Univel) 而 将 该 实 验 室 拆 分 出 来, 并 最 终 卖 给 了 Novell 随 后,Novell 根 据 源 代 码 直 接 生 产 了 UNIX 的 商 业 套 装 发 布 的 接 口 为 了 在 OEM(Original Equipment Manufacturers, 原 始 设 备 制 造 商 ) 之 间 创 建 一 个 公 平 的 社 会 环 境, 同 时 也 为 了 保 证 UNIX 的 本 质 内 容 不 变,AT&T 开 始 对 UNIX 的 不 同 端 口 进 行 标 准 化 为 此,UNIX 供 应 商 可 以 使 用 诸 如 POSIX(Portable Operating System Interface) 标 准 以 及 SVID(AT&T UNIX System V Interface Definition) 之 类 的 规 范 来 创 建 兼 容 UNIX 系 统 同 样, 这 些 文 档 也 为 Linux 的 创 建 提 供 了 线 路 图 8
第 1 章 开 始 使 用 Linux 注 意 在 早 前 的 电 子 邮 件 新 闻 组 帖 子 中,Linus Torvalds 曾 经 请 求 获 取 一 份 POSIX 标 准 的 副 本 ( 更 确 切 地 讲 是 在 线 文 档 ) 我 想 AT&T 可 能 会 认 为 如 果 不 使 用 任 何 UNIX 源 代 码, 没 有 人 能 够 仅 通 过 这 些 接 口 就 可 以 编 写 出 自 己 的 UNIX 克 隆 版 本 技 术 方 法 直 到 USL 结 束 时 为 止, 关 于 UNIX 发 展 方 向 的 大 多 数 决 定 都 是 基 于 技 术 上 的 考 虑 而 做 出 的 通 过 技 术 等 级 的 划 分, 使 管 理 得 到 了 极 大 提 升 据 我 所 知, 从 来 没 有 任 何 人 说 过 所 编 写 的 软 件 破 坏 了 其 他 公 司 的 软 件, 或 者 限 制 了 USL 合 伙 人 的 成 功 当 USL 最 终 开 始 雇 佣 市 场 营 销 专 家 并 为 终 端 用 户 创 建 桌 面 UNIX 产 品 时,Microsoft Windows 已 经 牢 牢 把 握 了 桌 面 市 场 同 时, 由 于 UNIX 的 营 销 方 向 是 为 大 型 计 算 机 系 统 指 定 源 代 码 许 可, 因 此 USL 很 难 为 其 产 品 定 价 例 如, 对 于 包 含 了 UNIX 的 软 件,USL 必 须 根 据 主 机 的 价 格 $100 000 支 付 每 台 计 算 机 的 许 可 费 用, 而 不 是 根 据 PC 的 价 格 $2000 再 加 上 没 有 适 用 于 UnixWare 的 应 用 程 序, 所 以 你 就 会 明 白 USL 努 力 失 败 的 原 因 了 然 而, 当 时 其 他 计 算 机 公 司 却 成 功 地 实 现 了 对 UNIX 系 统 的 营 销 其 中 SCO 发 现 了 一 个 利 基 市 场, 主 要 销 售 在 小 型 办 公 室 中 运 行 哑 终 端 的 UNIX 的 PC 版 本 Sun Microsystems 则 针 对 程 序 员 以 及 高 端 技 术 应 用 程 序 ( 比 如 股 票 交 易 ) 出 售 大 量 的 UNIX 工 作 站 ( 该 工 作 站 最 初 是 基 于 BSD 开 发 出 来 的, 但 最 终 在 SVR4 内 核 标 准 下 与 UNIX 合 并 ) 20 世 纪 80 年 代, 还 出 现 了 其 他 的 商 业 UNIX 系 统 这 种 新 的 UNIX 所 有 权 声 明 违 背 了 开 放 贡 献 的 精 神 为 此 产 生 了 诉 讼 案 件 来 保 护 UNIX 源 代 码 和 商 标 在 1984 年, 这 种 新 的 受 限 制 的 UNIX 促 使 了 一 个 新 组 织 的 诞 生, 而 该 组 织 最 终 促 使 了 Linux 的 诞 生 :Free Software Foundation 1.3.3 GNU 将 UNIX 转 变 为 免 费 在 1984 年,Richard M. Stallman 启 动 了 GNU 项 目 (http://www.gnu.org), 短 语 GNU is Not UNIX 的 缩 写 作 为 FSF(Free Software Foundation) 的 一 个 项 目, 其 主 要 目 的 是 重 新 编 写 整 个 UNIX 操 作 系 统, 从 而 可 以 自 由 地 进 行 分 发 GNU 项 目 页 面 (http://www.gnu.org/gnu/thegnuproject.html) 以 Stallman 自 己 的 话 讲 述 了 项 目 名 称 的 由 来 此 外, 该 页 面 还 列 举 了 专 有 软 件 公 司 给 那 些 希 望 共 享 创 建 和 创 新 的 软 件 开 发 人 员 所 带 来 的 问 题 虽 然 由 一 两 个 人 重 新 编 写 数 百 万 行 代 码 似 乎 是 不 可 能 的, 但 如 果 有 几 十 甚 至 上 百 个 程 序 员 共 同 努 力, 那 么 该 项 目 就 是 可 能 的 请 记 住, 设 计 UNIX 的 目 的 就 是 可 以 分 别 构 建 并 在 需 要 时 连 接 在 一 起 因 为 是 使 用 知 名 且 已 发 布 的 接 口 重 新 编 写 命 令 和 实 用 工 具, 所 以 可 以 非 常 容 易 地 在 许 多 开 发 人 员 中 分 配 任 务 事 实 证 明, 全 新 代 码 不 仅 可 以 获 得 相 同 的 结 果, 甚 至 在 某 些 方 面 比 原 始 的 UNIX 版 本 更 好 因 为 每 个 人 都 可 以 看 到 该 项 目 所 编 写 的 代 码, 所 以 随 着 时 间 的 流 逝, 不 完 善 的 代 码 可 以 被 快 速 更 改 或 者 替 换 如 果 你 非 常 熟 悉 UNIX, 可 以 尝 试 从 Free Software Directory(http://directory.fsf.org/wiki/GNU) 中 搜 索 数 以 千 计 的 GNU 软 件 包, 从 而 找 到 你 所 喜 欢 的 UNIX 命 令 除 此 之 外, 还 可 以 找 到 许 多 其 他 可 用 的 软 件 项 目 随 着 时 间 的 流 逝, 术 语 免 费 软 件 逐 步 被 术 语 开 源 软 件 所 取 代 虽 然 开 源 软 件 被 Open Source Initiative(http://www.opensource.org) 所 大 力 提 倡, 但 Free Software Foundation 仍 然 喜 欢 使 用 术 语 免 9
第 Ⅰ 部 分 入 费 软 件 为 了 调 节 两 个 阵 营 的 矛 盾, 一 些 人 使 用 术 语 免 费 和 开 源 软 件 (Free and Open Source Software, FOSS) 来 代 替 然 而, 虽 然 可 以 免 费 使 用 所 喜 欢 的 软 件, 但 FOSS 的 基 本 原 则 规 定 使 用 者 有 义 务 将 对 所 使 用 软 件 的 改 进 编 写 成 代 码, 并 供 其 他 人 使 用 也 就 是 说, 当 你 从 别 人 的 工 作 中 受 益 的 同 时, 别 人 也 可 以 从 你 的 工 作 中 受 益 为 清 晰 地 定 义 应 该 如 何 处 理 开 源 软 件,GNU 软 件 项 目 创 建 了 GNU Public License, 或 者 简 称 为 GPL 虽 然 许 多 其 他 的 软 件 许 可 证 在 保 护 免 费 软 件 方 面 使 用 了 不 同 的 方 法, 但 GPL 是 最 知 名 的, 且 自 身 包 含 了 Linux 内 核 GNU Public License 的 基 本 功 能 如 下 所 示 : 作 者 权 利 原 始 作 者 保 留 对 其 软 件 的 所 有 权 利 免 费 分 发 人 们 可 以 在 自 己 的 软 件 中 使 用 GNU 软 件, 修 改 以 及 重 新 分 发 软 件 然 而, 在 分 发 时 必 须 包 括 源 代 码 ( 或 者 可 以 使 他 人 非 常 容 易 地 获 得 源 代 码 ) 版 权 维 护 即 使 对 软 件 进 行 重 新 封 装 和 转 售, 该 软 件 中 也 必 须 维 护 原 始 的 GNU 协 议, 这 意 味 着 该 软 件 未 来 的 使 用 者 可 以 像 你 一 样 有 机 会 更 改 源 代 码 在 GNU 软 件 上 没 有 保 修 的 义 务 如 果 软 件 出 现 错 误, 该 软 件 的 原 始 开 发 人 员 没 有 义 务 解 决 该 问 题 然 而, 当 有 问 题 的 软 件 包 含 在 他 们 自 己 的 Linux 系 统 或 者 其 他 开 源 软 件 发 布 版 本 中 时, 许 多 大 型 和 小 型 的 公 司 都 提 供 了 付 费 技 术 支 持 (( 如 果 想 了 解 更 多 关 于 开 源 软 件 的 详 细 信 息, 请 参 阅 本 章 后 面 的 OSI 开 源 定 义 一 节 ) 尽 管 在 创 建 成 百 上 千 的 UNIX 实 用 工 具 方 面 取 得 了 成 功, 但 GNU 项 目 仍 然 无 法 创 建 一 段 关 键 的 代 码 : 即 内 核 代 码 起 初, 尝 试 使 用 GNU Hurd 项 目 (http://www.gnu.org/software/hurd) 构 建 开 源 内 核, 但 没 有 成 功, 所 以 GNU Hurd 项 目 无 法 成 为 主 要 的 开 源 内 核 1.3.4 BSD 失 去 了 一 些 动 力 一 个 有 机 会 击 败 Linux 并 成 为 主 要 开 源 内 核 的 软 件 项 目 是 BSD 项 目 在 20 世 纪 80 年 代 末 期, 位 于 伯 克 利 的 加 利 福 尼 亚 大 学 的 BSD 开 发 人 员 意 识 到 他 们 已 经 重 新 编 写 了 十 年 前 获 得 的 大 部 分 UNIX 源 代 码 在 1989 年, 加 利 福 尼 亚 大 学 发 布 了 与 UNIX 类 似 的 代 码 Net/1, 随 后 在 1991 年 又 发 布 了 Net/2 正 当 加 利 福 尼 亚 大 学 准 备 编 写 完 整 的 类 似 于 UNIX 的 操 作 系 统 ( 该 系 统 对 所 有 的 AT&T 代 码 免 费 ) 时, 1992 年,AT&T 一 纸 诉 状 打 断 了 编 写 进 程 该 诉 讼 声 称 加 利 福 尼 亚 大 学 使 用 了 来 自 AT&T UNIX 系 统 中 的 商 业 秘 密 编 写 了 该 软 件 需 要 重 点 注 意 的 是,BSD 开 发 人 员 已 经 对 来 自 AT&T 的 版 权 保 护 代 码 进 行 了 重 新 编 写 而 版 权 是 AT&T 用 来 保 护 其 对 UNIX 代 码 权 利 的 主 要 手 段 一 些 人 相 信, 如 果 AT&T 取 得 了 UNIX 代 码 中 所 包 含 概 念 的 专 利 权, 就 不 会 有 如 今 的 Linux 操 作 系 统 ( 或 者 任 何 UNIX 克 隆 版 本 ) 当 1994 年 Novel 从 AT&T 买 下 了 UNIX System Laboratories 之 后, 该 诉 讼 才 尘 埃 落 定 但 在 此 关 键 时 期, 人 们 开 始 担 心 和 怀 疑 BSD 代 码 的 合 法 性, 同 时 BSD 在 新 兴 的 开 源 社 区 所 取 得 的 动 力 也 在 逐 步 消 失 许 多 人 开 始 寻 找 其 他 的 开 源 替 代 产 品 此 时, 对 于 一 名 一 直 在 编 写 自 己 内 核 的 芬 兰 大 学 生 而 言, 时 机 已 经 到 来 注 意 如 今, 可 以 从 三 个 主 要 项 目 中 获 取 不 同 的 BSD 版 本 :FreeBSD NetBSD 以 及 OpenBSD 人 们 通 常 认 为 FreeBSD 是 最 易 于 使 用 的, 而 NetBSD 主 要 用 于 大 多 数 的 计 算 机 硬 件 平 台,OpenBSD 则 10
第 1 章 开 始 使 用 Linux 侧 重 于 安 全 性 许 多 注 重 安 全 性 的 人 仍 然 更 喜 欢 使 用 BSD 而 不 是 Linux 此 外, 由 于 其 许 可 功 能, BSD 还 可 以 被 专 有 软 件 供 应 商 所 使 用, 比 如 Microsoft 和 Apple, 因 为 它 们 都 不 希 望 其 他 人 共 享 自 己 的 操 作 系 统 代 码 其 中,Mac OS X 就 是 基 于 一 个 BSD 派 生 产 品 而 构 建 的 1.3.5 Linus 弥 补 了 缺 失 的 部 分 Linus Torvalds 于 1991 开 始 从 事 Linux 方 面 的 工 作, 当 时 他 还 是 芬 兰 赫 尔 辛 基 (Helsinki) 大 学 的 一 名 学 生 最 初, 他 想 要 创 建 类 似 于 UNIX 内 核 的 目 的 是 能 够 在 学 校 以 及 家 用 计 算 机 上 使 用 相 同 类 型 的 操 作 系 统 当 时,Linus 正 在 使 用 Minix, 但 他 想 要 超 越 Minix 标 准 所 许 可 的 范 围 如 前 所 述,Linus 于 1991 年 8 月 25 日 向 comp.os.minix 新 闻 组 宣 布 了 Linux 内 核 的 第 一 个 公 共 版 本, 虽 然 Torvalds 推 测 第 一 个 版 本 直 到 该 年 9 月 中 旬 才 会 真 正 出 来 虽 然 Torvalds 声 明 Linux 是 针 对 386 处 理 器 编 写 的, 并 且 可 能 不 具 有 可 移 植 性, 但 其 他 开 发 人 员 一 直 坚 持 提 倡 ( 以 及 致 力 于 ) 使 Linux 的 早 期 版 本 具 有 可 移 植 性 1991 年 10 月 5 日,Linux 0.02 版 本 发 布, 其 中 使 用 了 C 编 程 语 言 重 新 编 写 了 大 部 分 的 原 始 汇 编 代 码, 从 而 可 以 将 该 版 本 的 Linux 移 植 到 其 他 计 算 机 中 Linux 内 核 是 在 GPL 下 完 成 一 个 完 整 的 类 似 于 UNIX 操 作 系 统 所 需 的 最 后 且 最 重 要 的 代 码 片 段 所 以, 当 人 们 开 始 将 各 种 发 行 版 本 放 在 一 起 时, 会 将 Linux 和 GNU 联 系 在 一 起 一 些 诸 如 Debian 之 类 的 发 行 版 本 将 自 己 称 为 GNU/Linux 发 行 版 本 (( 在 Linux 操 作 系 统 的 标 题 或 者 子 标 题 中 不 包 括 GNU 也 是 GNU 项 目 中 一 些 成 员 常 抱 怨 的 事 情 参 见 http://gnu.org) 如 今, 可 将 Linux 描 述 为 一 个 开 源 的 类 似 于 UNIX 的 操 作 系 统, 它 符 合 SVID POSIX 和 BSD 标 准 同 时,Linux 一 直 在 努 力 符 合 POSIX 以 及 UNIX 商 标 所 有 人 Open Group(http://www.unix.org) 所 设 定 的 标 准 Open Source Development Labs 负 责 管 理 Linux 发 展 努 力 的 方 向 当 它 与 Free Standards Group (http://www.linuxfoundation.org) 合 并 后, 被 重 命 名 为 Linux Foundation, 并 且 聘 用 了 Linus Torvalds 其 赞 助 商 包 括 商 业 Linux 系 统 Who s Who 以 及 应 用 程 序 供 应 商, 比 如 IBM Red Hat SUSE Oracle HP Dell Computer Asscociates Intel Cisco Systems 等 Linux Foundation 的 宗 旨 是 通 过 为 Linux 开 发 人 员 提 供 法 律 保 护 和 软 件 开 发 标 准, 保 护 和 加 快 Linux 的 发 展 虽 然 大 部 分 Linux 努 力 主 要 在 企 业 计 算 方 面, 但 在 桌 面 舞 台 也 得 到 了 巨 大 的 提 高 KDE 和 GNOME 桌 面 环 境 不 断 提 升 了 临 时 用 户 的 Linux 体 验 而 诸 如 Xfce 和 LXDE 之 类 最 新 轻 量 级 的 桌 面 环 境 也 为 用 户 提 供 了 有 效 的 替 换 产 品, 从 而 将 数 以 千 计 的 上 网 本 用 户 带 入 了 Linux 世 界 Linus Torvalds 目 前 仍 在 继 续 维 护 和 改 善 Linux 内 核 注 意 如 果 想 了 解 更 多 关 于 Linux 历 史 的 详 细 信 息, 可 以 参 阅 Open Sources:Voices from the Open Source Revolution 一 书 (O Reily,1999) 可 从 http://oreilly.com/catalog/opensources/book/toc.html 在 线 获 取 该 书 完 整 的 第 一 个 版 本 1.3.6 OSI 开 源 定 义 Linux 提 供 了 一 种 平 台, 通 过 该 平 台, 软 件 开 发 人 员 可 以 按 照 自 己 的 意 愿 修 改 操 作 系 统, 并 且 可 以 在 创 建 应 用 程 序 的 过 程 中 得 到 所 需 的 帮 助 开 源 运 动 的 其 中 一 个 监 视 者 就 是 Open Source Initiative(OSI,http://www.opensource.org) 11
第 Ⅰ 部 分 入 虽 然 开 源 软 件 的 主 要 目 的 是 使 源 代 码 可 用, 但 OSI 在 其 开 源 定 义 中 还 定 义 了 开 源 软 件 的 其 他 目 的 下 列 针 对 可 接 受 的 开 放 源 码 许 可 证 所 指 定 的 规 则 主 要 是 为 了 保 护 开 源 代 码 的 自 由 性 和 完 整 性 : 免 费 发 布 一 个 开 源 许 可 证 不 能 向 那 些 转 售 软 件 的 人 收 取 任 何 费 用 源 代 码 源 代 码 必 须 包 括 在 软 件 中, 并 且 在 重 新 发 布 时 不 能 对 源 代 码 有 任 何 限 制 派 生 的 作 品 许 可 证 必 须 允 许 在 相 同 的 条 件 下 对 代 码 进 行 修 改 和 再 分 发 保 持 作 者 源 代 码 的 完 整 性 如 果 使 用 源 代 码 的 人 更 改 了 源 代 码, 许 可 证 可 以 要 求 他 们 删 除 原 始 项 目 的 名 称 或 者 版 本 不 能 针 对 个 人 或 者 团 体 进 行 区 别 对 待 许 可 证 必 须 允 许 所 有 的 人 平 等 合 法 地 使 用 源 代 码 不 能 针 对 不 同 活 动 领 域 进 行 区 别 对 待 许 可 证 不 能 因 为 某 项 目 具 有 商 业 化 特 征, 或 者 因 为 某 项 目 与 软 件 提 供 商 所 不 喜 欢 的 活 动 领 域 相 关 联 而 限 制 该 项 目 使 用 源 代 码 许 可 证 的 分 发 使 用 和 重 新 分 发 软 件 不 应 该 需 要 额 外 的 许 可 证 许 可 证 不 能 只 针 对 某 一 产 品 许 可 证 不 能 将 源 代 码 限 制 为 某 一 特 殊 的 软 件 发 行 版 本 许 可 证 不 能 限 制 其 他 软 件 许 可 证 不 能 够 阻 碍 人 们 在 相 同 的 介 质 上 将 开 源 软 件 作 为 非 开 源 软 件 来 使 用 许 可 证 必 须 在 技 术 上 是 中 立 的 许 可 证 不 能 够 限 制 可 以 重 新 分 发 源 代 码 所 使 用 的 方 法 软 件 开 发 项 目 所 使 用 的 开 源 许 可 证 必 须 满 足 这 些 标 准, 以 便 被 OSI 接 受 为 一 个 开 源 软 件 大 约 有 70 种 不 同 的 许 可 证 被 OSI 所 接 受, 并 被 用 来 将 软 件 标 记 为 OSI 认 证 开 源 软 件 除 了 GPL 之 外, 其 他 被 OSI 所 批 准 的 常 用 许 可 证 还 包 括 : LGPL GNU LGPL(Lesser General Public License) 通 常 被 用 来 分 发 其 他 应 用 程 序 所 依 赖 的 库 BSD Berkeley Software Distribution License 允 许 对 源 代 码 进 行 重 新 分 发, 但 有 两 点 要 求 : 1 重 新 分 发 的 源 代 码 必 须 保 留 BSD 版 权 声 明 ;2 在 没 有 征 得 书 面 允 许 的 情 况 下, 不 能 使 用 贡 献 者 的 名 字 来 宣 传 或 者 推 广 衍 生 软 件 然 而,BSD 与 GPL 主 要 的 一 个 区 别 是 BSD 不 要 求 修 改 代 码 的 开 发 人 员 将 其 所 做 的 修 改 传 到 社 区 中 这 样 做 的 结 果 是 诸 如 Apple 和 Microsoft 之 类 的 专 有 软 件 供 应 商 也 可 以 在 它 们 自 己 的 操 作 系 统 中 使 用 BSD 代 码 MIT MIT 许 可 与 BSD 许 可 类 似, 但 它 不 包 括 对 宣 传 和 推 广 的 要 求 Mozilla Mozilla 许 可 包 含 了 Firefox Web 浏 览 器 源 代 码 以 及 其 他 与 Mozilla 项 目 (http://www.mozilla.org) 相 关 的 软 件 源 代 码 的 使 用 和 重 新 分 发 相 对 于 前 面 所 提 到 的 许 可, Mozilla 许 可 内 容 更 长, 因 为 它 就 贡 献 者 以 及 重 复 使 用 源 代 码 的 开 发 人 员 应 该 如 何 行 为 进 行 了 更 详 细 的 定 义 其 中 包 括 提 交 修 改 时 应 该 提 交 更 改 文 件, 同 时, 那 些 为 了 重 新 分 发 而 向 源 代 码 中 添 加 了 额 外 代 码 的 开 发 人 员 应 该 知 道 专 利 问 题 以 及 其 他 与 代 码 相 关 联 的 限 制 开 源 代 码 的 最 终 结 果 是 软 件 可 以 加 快 发 展, 同 时 在 使 用 方 式 上 也 有 了 更 大 的 灵 活 性 很 多 人 相 信 这 么 一 个 事 实, 如 果 许 多 人 对 同 一 个 项 目 的 源 代 码 进 行 检 查, 那 么 将 会 产 生 高 质 量 的 软 件 就 如 开 源 提 倡 者 Eric S. Raymond 经 常 所 引 用 的 那 样 给 予 足 够 多 的 眼 球, 所 有 的 错 误 都 是 肤 浅 的 1.4 理 解 Linux 发 行 版 本 是 如 何 出 现 的 如 今 在 Internet 上 充 斥 着 大 量 源 代 码, 可 以 对 这 些 源 代 码 进 行 编 译 并 封 装 到 Linux 系 统 中 然 而, 12
第 1 章 开 始 使 用 Linux 对 于 大 多 数 临 时 Linux 用 户 而 言, 需 要 一 种 更 简 单 的 方 法 来 组 成 Linux 系 统 为 了 满 足 这 种 需 求, 一 些 最 优 秀 的 极 客 开 始 构 建 他 们 自 己 的 Linux 发 行 版 本 Linux 发 行 版 本 由 用 来 创 建 正 常 工 作 的 Linux 系 统 所 需 的 组 件 以 及 用 来 安 装 并 运 行 这 些 组 件 的 程 序 所 组 成 从 技 术 角 度 看,Linux 其 实 就 是 所 谓 的 内 核 但 在 使 用 该 内 核 之 前, 还 必 须 安 装 一 些 诸 如 基 本 命 令 ( 比 如 GNU 实 用 工 具 ) 之 类 的 其 他 软 件 以 及 需 要 提 供 的 相 关 服 务 ( 比 如 远 程 登 录 或 者 Web 服 务 器 ), 有 时 可 能 还 需 要 一 个 桌 面 界 面 和 图 形 应 用 程 序 因 此, 需 要 收 集 这 些 软 件 并 将 它 们 安 装 到 计 算 机 的 硬 盘 中 Slackware(http://www.slackware.com) 是 如 今 仍 在 被 持 续 开 发 的 历 史 最 悠 久 的 Linux 发 行 版 本 之 一 它 通 过 分 发 已 经 完 成 编 译 的 软 件 并 组 成 软 件 包 ( 这 些 软 件 组 件 包 以 一 种 被 称 为 tarballs 的 形 式 存 在 ), 从 而 使 Linux 对 于 那 些 非 技 术 用 户 更 加 友 好 用 户 只 需 使 用 基 本 的 Linux 命 令 就 可 以 完 成 相 关 操 作, 比 如 格 式 化 磁 盘 启 动 交 换 以 及 创 建 用 户 账 户 等 不 久 后, 许 多 其 他 的 Linux 发 行 版 本 也 陆 续 出 现 而 其 中 一 些 Linux 发 行 版 本 是 为 了 满 足 特 殊 需 要 而 创 建 的, 比 如 KNOPPIX( 一 个 光 盘 启 动 的 Linux) Gentoo( 一 个 很 酷 的 自 定 义 Linux) 以 及 Mandrake( 日 后 也 称 为 Mandriva, 它 是 多 个 桌 面 Linux 发 行 版 本 的 一 种 ) 但 有 两 种 主 要 的 发 行 版 本 逐 步 成 为 其 他 发 行 版 本 的 基 础 : 即 Red Hat Linux 和 Debian 1.4.1 选 择 Red Hat 发 行 版 本 当 Red Hat 在 20 世 纪 90 年 代 末 出 现 之 后, 由 于 多 种 原 因, 它 很 快 成 为 最 受 欢 迎 的 Linux 发 行 版 本 : RPM 包 管 理 如 果 需 要 对 计 算 机 上 的 软 件 进 行 解 压 缩,tarballs 是 非 常 好 用 的 但 如 果 想 要 更 新 删 除 甚 至 查 找 软 件,tarballs 则 望 尘 莫 及 为 此,Red Hat 创 建 了 RPM 封 装 格 式, 通 过 使 用 该 格 式, 一 个 软 件 包 不 仅 可 以 包 含 共 享 的 文 件, 还 可 以 包 含 包 版 本 的 相 关 信 息, 比 如 谁 是 创 建 者, 哪 些 文 件 是 文 档 或 是 配 置 文 件 以 及 何 时 被 创 建 通 过 安 装 以 RPM 格 式 封 装 的 软 件, 可 以 在 本 地 的 RPM 数 据 库 中 存 储 每 个 软 件 包 相 关 的 上 述 信 息, 从 而 便 于 查 找 安 装 了 什 么 软 件 以 及 更 新 或 者 删 除 软 件 简 单 的 安 装 过 程 Anaconda 安 装 程 序 使 安 装 Linux 变 得 更 加 简 单 用 户 只 需 要 完 成 一 些 简 单 的 问 题 ( 大 部 分 情 况 下 接 受 默 认 值 即 可 ) 就 可 以 安 装 Red Hat Linux 图 形 化 管 理 Red Hat 添 加 了 一 些 简 单 的 图 形 化 工 具 来 配 置 打 印 机 添 加 用 户 设 置 时 间 和 日 期 以 及 完 成 其 他 基 本 的 管 理 任 务 这 样, 桌 面 用 户 就 可 以 非 常 容 易 地 使 用 Linux 系 统, 而 不 必 运 行 命 令 多 年 来, 对 于 Linux 专 业 人 士 和 爱 好 者 来 说,Red Hat Linux 都 是 比 较 受 欢 迎 的 Linux 发 行 版 本 Red Hat, Inc. 除 了 分 发 Red Hat Linux 已 编 译 且 可 随 时 运 行 的 版 本 ( 被 称 为 二 进 制 版 本 ) 之 外, 还 分 发 了 源 代 码 但 随 着 Linux 社 区 用 户 需 求 和 大 客 户 需 求 开 始 逐 步 出 现 分 歧,Red Hat 放 弃 了 Red Hat Linux, 转 而 开 始 开 发 两 个 新 的 操 作 系 统 :Red Hat Enterprise Linux 和 Fedora 1. 使 用 Red Hat Enterprise Linux 到 了 2012 年 3 月,Red Hat 公 司 成 为 全 世 界 第 一 家 年 收 入 超 过 十 亿 美 元 的 开 源 软 件 公 司 而 完 成 该 目 标 的 途 径 主 要 是 通 过 围 绕 Red Hat Enterprise Linux(RHEL) 开 发 了 一 组 满 足 最 苛 刻 的 企 业 计 算 环 境 需 求 的 产 品 当 其 他 Linux 发 行 版 本 还 在 关 注 桌 面 系 统 或 者 小 型 商 业 计 算 时,RHEL 已 经 在 为 商 业 和 政 府 开 13
第 Ⅰ 部 分 入 发 处 理 任 务 关 键 性 应 用 程 序 所 需 的 相 关 功 能 它 所 构 建 的 系 统 能 够 加 快 世 界 上 最 大 的 金 融 交 易 所 的 交 易 速 度, 同 时 还 能 够 作 为 群 集 和 虚 拟 工 具 进 行 部 署 除 了 出 售 RHEL 之 外,Red Hat 还 为 Linux 用 户 提 供 了 一 个 有 益 的 生 态 环 境 如 果 想 要 使 用 RHEL, 客 户 需 要 购 买 订 阅, 从 而 可 以 部 署 任 何 所 希 望 的 版 本 如 果 退 出 了 RHEL 系 统, 还 可 以 使 用 该 订 阅 部 署 其 他 系 统 根 据 客 户 的 不 同 需 求, 可 以 使 用 RHEL 不 同 级 别 的 支 持 除 了 相 关 的 支 持 之 外, 客 户 可 以 获 取 硬 件 以 及 被 认 证 使 用 RHEL 的 第 三 方 软 件 可 以 咨 询 Red Hat 顾 问 和 工 程 师, 以 便 帮 助 他 们 组 成 所 需 要 的 计 算 环 境 同 时, 还 可 以 为 他 们 的 雇 员 进 行 培 训 和 认 证 考 试 ( 请 参 阅 本 章 后 面 对 RHCE 认 证 的 详 细 讨 论 ) Red Hat 还 向 Red Hat Enterprise Linux 添 加 了 其 他 的 产 品 作 为 对 Red Hat Enterprise Linux 的 自 然 延 伸 JBoss 是 一 个 中 间 件 产 品, 主 要 用 来 将 基 于 Java 的 应 用 程 序 部 署 到 Internet 或 者 公 司 内 部 互 联 网 而 Red Hat Enterprise Virtualiztion 由 虚 拟 主 机 管 理 员 以 及 允 许 安 装 运 行 管 理 迁 移 和 退 出 大 型 虚 拟 计 算 环 境 的 客 户 计 算 机 组 成 近 几 年,Red Hat 将 其 项 目 组 合 扩 展 到 云 计 算 RHEL OpenStack Platform 和 Red Hat Enterprise Virtualization 为 运 行 和 管 理 虚 拟 机 提 供 了 完 整 的 平 台 Red Hat Cloudforms 是 一 个 云 管 理 平 台 而 RHEL Atomic 以 及 Docker 格 式 的 Linux 容 器 为 云 提 供 了 对 应 用 程 序 进 行 集 装 箱 化 操 作 的 方 法 很 多 人 尝 试 通 过 使 用 免 费 获 得 的 RHEL 源 代 码 并 对 其 进 行 重 建 和 更 名 来 克 隆 RHEL 其 中, Orcale Linux 就 是 根 据 RHEL 源 代 码 构 建 的, 但 目 前 只 提 供 了 一 个 无 法 兼 容 的 内 核 此 外,CentOS 也 是 一 个 根 据 RHEL 源 代 码 构 建 的 社 区 赞 助 的 Linux 发 行 版 本 目 前,Red Hat 接 管 了 对 CentOS 项 目 的 支 持 针 对 本 书 中 的 许 多 示 例, 选 择 了 使 用 Red Hat Enterprise Linux, 因 为 如 果 想 要 从 事 关 于 Linux 系 统 方 面 的 工 作, 就 需 要 学 会 管 理 RHEL 系 统 然 而, 如 果 你 刚 开 始 学 习 Linux, 也 可 以 使 用 Fedora 作 为 一 个 比 较 好 的 入 口 点 来 学 习 使 用 和 管 理 RHEL 系 统 所 需 的 相 同 技 能 2. 使 用 Fedora RHEL 是 商 业 化 稳 定 且 受 支 持 的 Linux 发 行 版 本 而 Fedora 却 是 由 Red Hat 公 司 所 发 起 的 免 费 且 先 进 的 Linux 发 行 版 本 Fedora 是 Red Hat 用 来 创 建 Linux 开 发 社 区 并 鼓 励 那 些 想 要 免 费 的 Linux 用 于 个 人 使 用 以 及 快 速 开 发 的 人 而 开 发 的 一 款 Linux 系 统 Fedora 包 括 16 000 多 个 软 件 包, 其 中 大 部 分 使 用 了 最 新 的 可 用 开 源 技 术 作 为 一 名 用 户, 可 以 免 费 试 用 Fedora 中 最 新 的 Linux 桌 面 服 务 器 以 及 管 理 界 面 而 作 为 一 名 软 件 开 发 人 员, 则 可 以 使 用 最 新 的 Linux 内 核 和 开 发 工 具 来 创 建 和 测 试 自 己 的 应 用 程 序 因 为 Fedora 主 要 关 注 的 是 最 新 技 术, 所 以 很 少 关 注 稳 定 性 因 此 如 果 想 要 一 切 工 作 正 常, 可 能 还 需 要 完 成 一 些 额 外 的 工 作, 此 外, 并 不 是 所 有 的 软 件 都 完 全 成 熟 然 而, 我 建 议 针 对 本 书 的 大 多 数 示 例 使 用 Fedora, 主 要 理 由 如 下 : 可 以 使 用 Fedora 作 为 Red Hat Enterprise Linux 的 一 个 试 验 场 Red Hat 在 将 新 的 应 用 程 序 移 植 到 RHEL 之 前, 都 会 在 Fedora 上 进 行 测 试 通 过 使 用 Fedora, 可 以 学 习 使 用 为 Red Hat Enterprise Linux 所 开 发 的 功 能 所 需 的 技 能 Fedora 比 RHEL 更 便 于 学 习 Linux, 此 外, 它 也 包 括 RHEL 中 许 多 更 先 进 且 为 企 业 准 备 的 工 具 Fedora 是 免 费 的, 不 仅 在 于 可 以 自 由 使 用, 而 且 不 需 要 支 付 费 用 14
第 1 章 开 始 使 用 Linux Fedora 在 那 些 开 发 开 源 软 件 的 开 发 人 员 中 非 常 受 欢 迎 然 而, 在 过 去 几 年 里, 另 一 个 Linux 发 行 版 本 吸 引 了 许 多 初 学 者 的 注 意 : 即 Ubuntu 1.4.2 选 择 Ubuntu 或 者 其 他 Debian 发 行 版 本 与 Red Hat Linux 类 似,Debian GNU/Linux 发 行 版 本 也 是 一 个 擅 长 包 装 和 管 理 软 件 的 早 期 Linux 发 行 版 本 Debian 使 用 了 deb 包 装 格 式 和 工 具 来 管 理 系 统 中 的 所 有 软 件 包 此 外,Debian 还 因 为 稳 定 性 而 名 声 在 外 许 多 Linux 发 行 版 本 的 根 源 都 可 以 追 溯 到 Debian 根 据 distrowatch 网 站 (http://distrowatch.com) 的 调 查, 大 约 130 多 个 现 有 的 Linux 发 行 版 本 可 以 追 溯 到 Debian 如 今 流 行 的 基 于 Debian 的 发 行 版 本 包 括 Linux Mint elementary OS Zorin OS LXLE Kali Linux 等 然 而, 在 众 多 派 生 自 Debian 的 发 行 版 本 中, 取 得 最 大 成 功 的 当 属 Ubuntu(http://www.ubuntu.com) 通 过 依 赖 稳 定 的 Debian 软 件 开 发 和 包 装 技 术,Ubuntu Linux 发 行 版 本 不 断 发 展 并 添 加 了 Debian 所 不 具 备 的 相 关 功 能 在 吸 引 新 用 户 方 面,Ubuntu 项 目 增 加 了 一 个 简 单 的 图 形 化 安 装 程 序 以 及 易 于 使 用 的 图 形 化 工 具 此 外,Ubuntu 项 目 还 重 点 关 注 全 功 能 的 桌 面 系 统, 并 仍 然 提 供 了 流 行 的 服 务 器 软 件 包 在 创 建 运 行 Linux 的 新 方 法 方 面,Ubuntu 也 是 一 个 改 革 者 通 过 使 用 Ubuntu 所 提 供 的 CD 或 者 USB 驱 动 器, 可 以 在 几 分 钟 之 内 安 装 并 运 行 Ubuntu 通 常,CD 中 包 括 的 内 容 是 可 以 在 Windows 中 运 行 的 开 源 应 用 程 序, 比 如 Web 浏 览 器 和 文 字 处 理 软 件 对 于 某 些 人 来 说, 可 以 非 常 容 易 地 从 Linux 转 换 到 Windows 如 果 你 正 在 使 用 Ubuntu, 请 不 要 担 心 本 书 中 所 包 含 的 大 部 分 主 题 都 可 以 像 在 Fedora 或 RHEL 中 那 样 在 Ubuntu 中 正 常 工 作 本 书 中 增 加 了 对 Ubuntu 的 介 绍 内 容 1.5 利 用 Linux 找 到 职 业 机 会 如 果 想 要 为 一 个 与 计 算 机 相 关 的 研 究 项 目 或 者 技 术 公 司 创 造 一 种 理 念, 那 么 应 该 从 什 么 地 方 开 始 呢? 首 先 应 该 有 一 个 想 法 然 后 寻 找 所 需 的 工 具 来 探 究 并 最 终 实 现 自 己 的 想 法 此 外, 在 创 建 过 程 中, 还 可 以 寻 求 他 人 的 帮 助 如 今, 创 办 一 个 类 似 于 Google 或 者 Facebook 之 类 的 公 司 的 硬 成 本 仅 仅 包 括 一 台 计 算 机 连 接 到 Internet 以 及 用 来 保 持 整 晚 编 写 代 码 所 需 的 足 够 的 含 咖 啡 因 的 饮 料 如 果 你 拥 有 改 变 世 界 的 想 法, 那 么 可 以 使 用 Linux 以 及 数 以 千 计 的 软 件 包 来 帮 助 实 现 自 己 的 梦 想 开 源 世 界 还 包 括 可 以 帮 助 你 的 开 发 人 员 管 理 人 员 以 及 用 户 社 区 如 果 想 要 加 入 一 个 现 有 的 开 源 项 目, 那 么 有 很 多 的 项 目 可 以 参 加, 这 些 项 目 通 常 需 要 寻 找 相 关 人 员 来 编 写 代 码 测 试 软 件 或 者 编 写 文 档 在 这 些 项 目 中, 你 会 找 到 使 用 软 件 的 人, 改 进 软 件 的 人, 而 这 些 人 通 常 愿 意 分 享 他 们 的 专 业 知 识 来 帮 助 你 但 不 管 你 是 寻 求 开 发 下 一 个 伟 大 的 开 源 软 件 项 目, 还 是 只 想 获 取 所 需 的 技 能 来 争 取 高 薪 的 Linux 管 理 员 或 者 开 发 工 作, 知 道 如 何 安 装 和 维 护 Linux 系 统 以 及 如 何 确 保 系 统 安 全 都 是 大 有 裨 益 的 Linux 职 业 的 前 途 如 何 呢? 来 自 Linux Foundation(http://www.linuxfoundation.org/publications/ linux-foundation/linux-adoption-trends-end-user-report-2014) 的 2014 年 Linux 工 作 报 告 对 1100 多 位 15
第 Ⅰ 部 分 入 招 聘 经 理 以 及 4000 多 名 Linux 专 业 人 员 进 行 了 问 卷 调 查 Linux Foundation 的 调 查 结 果 是 : 当 务 之 急 急 需 的 是 Linux 人 才 77% 的 招 聘 经 理 认 为, 招 聘 具 有 Linux 专 业 知 识 的 人 是 当 务 之 急 职 业 发 展 就 职 业 发 展 机 会 来 说,86% 的 Linux 专 业 人 员 认 为 Linux 知 识 增 加 了 职 业 发 展 机 会 更 多 的 Linux 招 聘 对 招 聘 经 理 的 调 查 发 现,46% 的 人 说 他 们 计 划 比 上 一 年 增 加 Linux 人 才 的 招 聘 数 量 ( 比 上 一 年 提 高 3 个 百 分 点 ) 从 这 份 调 查 报 告 中 可 以 看 出,Linux 正 在 持 续 发 展, 并 且 增 加 了 对 Linux 专 业 技 术 的 需 求 那 些 已 经 开 始 使 用 Linux 的 公 司 继 续 向 前 发 展 它 们 扩 大 了 Linux 的 使 用 范 围, 并 且 发 现 Linux 所 提 供 的 节 约 成 本 安 全 性 以 及 灵 活 性 使 其 成 为 一 个 非 常 好 的 投 资 1.5.1 了 解 如 何 利 用 Linux 挣 钱 开 源 爱 好 者 相 信, 相 对 于 专 有 开 发 模 型, 开 源 软 件 开 发 模 型 可 以 创 建 更 好 的 软 件 从 理 论 上 讲, 对 于 那 些 想 要 开 发 自 用 软 件 的 公 司 来 说, 可 以 在 其 他 公 司 的 贡 献 的 基 础 之 上 作 出 自 己 的 贡 献, 从 而 得 到 一 个 更 好 的 最 终 产 品, 同 时 还 节 约 了 开 发 费 用 与 从 前 相 比, 那 些 想 要 通 过 出 售 软 件 挣 钱 的 公 司 需 要 更 具 有 创 造 性 虽 然 可 以 出 售 自 己 所 创 建 的 包 含 了 GPL 软 件 的 软 件, 但 必 须 向 前 传 递 该 软 件 的 源 代 码 当 然, 其 他 人 可 以 重 新 编 译 产 品, 使 用 甚 至 转 售 你 的 产 品, 而 不 必 付 费 下 面 列 举 了 不 同 公 司 用 来 处 理 该 问 题 的 不 同 方 法 : 软 件 订 阅 Red Hat 公 司 在 订 阅 的 基 础 上 出 售 它 的 Red Hat Enterprise Linux 产 品 用 户 每 年 只 需 支 付 一 定 数 量 的 费 用, 就 可 以 获 得 运 行 Linux 所 需 的 二 进 制 码 ( 因 此 用 户 不 必 自 己 进 行 编 译 ), 此 外, 还 可 以 获 取 有 保 障 的 支 持, 用 来 跟 踪 计 算 机 中 硬 件 和 软 件 的 工 具, 访 问 公 司 知 识 库 以 及 其 他 资 源 虽 然 Red Hat 的 Fedora 项 目 包 含 了 许 多 相 同 的 软 件, 并 且 也 是 以 二 进 制 的 形 式 提 供, 但 却 无 法 保 证 这 些 软 件 的 可 用 性 以 及 软 件 未 来 的 更 新 对 于 小 公 司 或 者 个 人 用 户 来 说, 可 以 冒 险 使 用 Fedora( 当 然 Fedora 本 身 也 是 一 个 非 常 出 色 的 操 作 系 统 ), 但 对 于 那 些 需 要 运 行 任 务 关 键 性 应 用 程 序 的 大 公 司 来 说, 还 是 会 为 RHEL 支 付 相 关 费 用 培 训 和 认 证 随 着 Linux 系 统 在 政 府 和 大 企 业 中 的 广 泛 采 用, 需 要 大 量 的 专 业 人 员 来 支 持 这 些 系 统 为 此,Red Hat 提 供 了 培 训 课 程 和 认 证 考 试 来 帮 助 系 统 管 理 员 熟 练 使 用 Red Hat Enterprise Linux 系 统 特 别 是 RHCE(Red Hat Certified Engineer) 和 RHCSA(Red Hat Certified System Administrator) 已 经 变 得 非 常 流 行 (http://www.redhat.com/certification) 稍 后 将 更 详 细 地 介 绍 RHCE/RHCSA 此 外,Linux Professional Institute(http://www.lpi.org) CompTIA(http://www.comptia.org) 以 及 Novell(https://training.novell.com/) 也 推 出 了 自 己 的 认 证 程 序 其 中 LPI 和 CompTIA 是 专 业 计 算 机 行 业 协 会 而 Novell 则 主 要 以 SUSE 上 的 培 训 和 认 证 为 中 心 赏 金 软 件 赏 金 是 开 源 软 件 公 司 非 常 喜 欢 使 用 的 一 种 挣 钱 方 式 假 设 你 正 在 使 用 XYZ 软 件 包 并 且 马 上 需 要 使 用 一 个 新 功 能, 那 么 通 过 向 项 目 或 者 其 他 软 件 开 发 人 员 支 付 一 笔 软 件 赏 金, 就 可 以 将 所 需 的 改 进 移 到 队 列 的 前 头 而 所 支 付 的 软 件 将 继 续 拥 有 开 源 许 可 证, 相 对 于 从 零 开 始 创 建 项 目 所 需 的 费 用, 软 件 赏 金 只 是 很 少 的 一 部 分 捐 款 很 多 开 源 项 目 接 收 来 自 使 用 了 它 们 项 目 代 码 的 个 人 或 开 源 公 司 的 捐 款 令 人 惊 讶 的 是, 许 多 开 源 项 目 支 持 一 两 个 开 发 人 员, 并 且 完 全 依 赖 捐 款 来 运 行 16
第 1 章 开 始 使 用 Linux 盒 装 套 装 马 克 杯 和 T 恤 一 些 开 源 项 目 拥 有 在 线 商 店 在 该 商 店 中, 可 以 购 买 盒 装 的 套 装 ( 但 有 些 人 仍 然 喜 欢 物 理 DVD 和 文 档 的 硬 盘 拷 贝 ) 以 及 各 种 马 克 杯 T 恤 鼠 标 垫 和 其 他 物 品 如 果 你 非 常 喜 欢 某 一 个 项 目, 看 在 上 帝 的 份 上, 请 购 买 一 件 T 恤 吧! 在 此 无 法 完 全 列 举 出 所 有 的 相 关 举 措, 因 为 每 天 都 有 更 多 富 有 创 造 性 的 方 法 被 创 造 出 来, 以 支 持 那 些 创 建 了 开 源 软 件 的 人 但 请 记 住, 有 许 许 多 多 的 人 已 经 成 为 开 源 软 件 的 贡 献 者 和 维 护 者, 因 为 他 们 自 己 也 需 要 开 源 软 件 每 个 人 为 开 源 软 件 所 做 的 贡 献 可 以 从 他 人 所 做 的 贡 献 中 得 到 回 报 1.5.2 获 得 Red Hat 认 证 虽 然 本 书 并 不 会 重 点 介 绍 如 何 获 得 Linux 认 证, 但 会 讲 授 通 过 流 行 的 Linux 认 证 考 试 所 需 要 掌 握 的 一 些 知 识 特 别 是 重 点 介 绍 针 对 Red Hat Enterprise Linux 7 的 RHCE 和 RHCSA 考 试 如 果 你 正 在 寻 找 一 份 Linux IT 专 业 方 面 的 工 作, 那 么 通 过 RHCSA 或 者 RHCE 认 证 已 经 成 为 应 聘 成 功 的 必 要 条 件 或 者 优 先 选 择 的 条 件 其 中,RHCSA 考 试 (EX200) 提 供 了 基 本 的 认 证, 相 关 的 内 容 包 括 配 置 磁 盘 和 文 件 系 统 添 加 用 户 设 置 一 个 简 单 的 Web 和 FTP 服 务 器 以 及 添 加 交 换 空 间 等 而 RHCE(EX300) 则 对 更 高 级 的 服 务 器 配 置 以 及 安 全 功 能 的 高 级 内 容 进 行 测 试, 比 如 SELinux 和 防 火 墙 等 虽 然 那 些 讲 授 RHCE/RHCSA 课 程 和 特 定 考 试 的 人 ( 就 像 我 在 过 去 的 三 年 里 所 做 的 那 样 ) 并 不 允 许 介 绍 考 试 到 底 考 什 么, 但 Red Hat 介 绍 了 该 考 试 是 如 何 进 行 的, 同 时 还 列 举 了 考 试 中 可 能 涉 及 的 相 关 主 题 可 以 通 过 下 面 的 网 址 找 到 这 些 考 试 目 标 : RHSCA http://www.redhat.com/en/services/training/ex200-red-hat-certified-system-administratorrhcsa-exam RHCE http://www.redhat.com/en/services/training/ex300-red-hat-certified-engineer-rhce-exam 如 考 试 目 标 所 述,RHCSA 和 RHCE 考 试 是 基 于 实 际 表 现 的, 这 也 就 意 味 着 应 试 者 被 给 定 某 些 任 务, 并 且 必 须 在 实 际 的 Red Hat Enterprise Linux 系 统 上 完 成 这 些 任 务, 就 像 在 完 成 某 些 工 作 一 样 然 后 再 根 据 所 获 得 的 这 些 任 务 的 结 果 进 行 评 分 如 果 要 参 加 考 试, 请 经 常 核 对 一 下 这 些 考 试 目 标, 因 为 它 们 有 时 会 发 生 变 化 此 外, 还 需 要 记 住 的 是,RHCSA 是 一 个 独 立 的 认 证 ; 但 只 有 通 过 RHCSA 和 RHCE 考 试, 才 可 以 获 得 RHCE 认 证 通 常, 这 两 考 试 在 同 一 天 举 行 可 以 在 http://training.redhat.com 上 报 名 参 加 RHCSA 和 RHCE 培 训 和 考 试 全 美 国 以 及 全 球 的 重 要 城 市 都 提 供 了 培 训 和 考 试 服 务 下 一 节 将 介 绍 完 成 这 些 考 试 所 需 掌 握 的 技 能 1. RHCSA 主 题 如 前 所 述,RHCSA 考 试 主 题 包 括 了 基 本 的 系 统 管 理 技 能 在 RHCSA 考 试 目 标 网 站 中 已 经 列 举 了 当 前 针 对 Red Hat Enterprise Linux 7 的 考 试 主 题 ( 为 了 防 止 考 试 主 题 发 生 变 化, 请 再 次 检 查 考 试 目 标 网 站 ), 并 且 在 本 书 中 可 以 学 习 这 些 内 容 : 了 解 基 本 工 具 需 要 全 面 了 解 命 令 Shell(bash) 的 应 用 知 识, 包 括 如 何 使 用 正 确 的 命 令 语 法 以 及 完 成 输 入 / 输 出 重 定 向 (< > >>) 需 要 知 道 如 何 登 录 到 远 程 和 本 地 系 统 以 及 如 何 创 建 编 辑 移 动 复 制 链 接 删 除 和 更 改 文 件 许 可 和 所 有 者 此 外, 还 应 该 知 道 如 何 在 手 册 页 和 /usr/share/doc 中 查 找 信 息 这 些 内 容 将 在 本 书 的 第 3 章 和 第 4 章 详 细 介 绍 而 第 5 章 则 讲 述 如 何 编 辑 和 查 找 文 件 17
第 Ⅰ 部 分 入 操 作 运 行 系 统 在 该 部 分 中, 必 须 了 解 Linux 启 动 过 程 进 入 单 用 户 模 式 关 闭 重 启 和 更 改 不 同 的 目 标 ( 以 前 被 称 为 运 行 级 别 ) 你 需 要 识 别 进 程 并 根 据 需 要 更 改 nice 值 或 者 终 止 进 程 此 外, 还 必 须 能 够 启 动 和 终 止 虚 拟 机 和 网 络 服 务, 以 及 找 到 并 解 释 日 志 文 件 第 15 章 描 述 如 何 更 改 目 标 和 运 行 级 别 以 及 管 理 系 统 服 务 第 6 章 介 绍 管 理 和 更 改 进 程 的 相 关 信 息 第 26 章 描 述 如 何 管 理 虚 拟 机 日 志 记 录 的 相 关 内 容 则 在 第 13 章 介 绍 配 置 本 地 存 储 设 置 磁 盘 分 区 包 括 创 建 物 理 卷 并 进 行 配 置, 以 便 用 于 LVM(Logical Volumn Management, 逻 辑 卷 管 理 ) 或 者 加 密 (LUKS) 此 外, 还 可 以 将 这 些 分 区 设 置 为 文 件 系 统 或 者 可 以 在 启 动 时 挂 载 或 启 用 的 交 换 空 间 第 12 章 将 详 细 介 绍 磁 盘 分 区 和 LVM, 而 LUKS 以 及 其 他 加 密 主 题 则 在 第 23 章 中 介 绍 创 建 和 配 置 文 件 系 统 创 建 和 自 动 挂 载 不 同 类 型 的 文 件 系 统, 包 括 常 见 的 Linux 文 件 系 统 (ext2 ext3 或 者 ext4),luks 加 密 文 件 系 统 以 及 网 络 文 件 系 统 (NFS 和 CIFS) 使 用 设 置 组 ID 位 功 能 和 ACL(Access Control List, 访 问 控 制 列 表 ) 创 建 协 作 目 录 此 外, 还 必 须 能 够 使 用 LVM 扩 展 逻 辑 卷 的 大 小 文 件 系 统 主 题 将 在 第 12 章 介 绍 而 CIFS 和 NFS 则 分 别 在 第 19 章 和 第 20 章 介 绍 部 署 配 置 和 维 护 系 统 该 部 分 包 含 了 一 系 列 主 题, 包 括 配 置 网 络 创 建 cron 任 务 设 置 默 认 的 运 行 级 别 以 及 安 装 RHEL 系 统 此 外, 必 须 能 够 配 置 一 个 简 单 的 HTTP 和 FT 服 务 器 而 对 于 软 件 包, 则 能 够 从 Red Hat 网 络 远 程 存 储 库 或 者 本 地 文 件 系 统 中 安 装 程 序 包 最 后, 还 必 须 可 以 正 确 地 安 装 新 的 内 核, 并 在 系 统 开 始 时 正 确 选 择 需 要 启 动 的 内 核 第 13 章 将 描 述 cron 工 具 而 Web 服 务 器 (HTTP) 和 FTP 服 务 器 则 分 别 在 第 17 章 和 第 18 章 介 绍 管 理 用 户 和 组 必 须 知 道 如 何 添 加 删 除 和 更 改 用 户 账 户 和 组 账 户, 以 及 什 么 是 密 码 老 化 并 学 会 使 用 change 命 令 还 必 须 知 道 如 何 配 置 一 个 系 统, 从 而 通 过 连 接 一 个 LDAP 目 录 服 务 器 进 行 身 份 验 证 第 11 章 将 介 绍 配 置 用 户 和 组 的 相 关 内 容 管 理 安 全 性 必 须 基 本 了 解 如 何 设 置 一 个 防 火 墙 (firewalld system-config-firewall 或 者 iptables) 以 及 如 何 使 用 SELinux 必 须 能 设 置 SSH 来 完 成 基 于 密 钥 的 身 份 验 证 可 以 在 第 24 章 学 习 SELinux 的 相 关 内 容, 而 防 火 墙 则 在 第 25 章 介 绍 第 13 章 将 讲 述 基 于 密 钥 的 身 份 验 证 本 书 将 介 绍 其 中 的 大 部 分 主 题 对 于 本 书 中 没 有 介 绍 的 功 能, 可 以 参 阅 Red Hat Enterprise Linux 标 题 下 的 Red Hat 相 关 文 档 (http://access.redhat.com/documentation/) 特 别 是 系 统 管 理 员 指 南 (System Administrators s Guide) 中 包 含 了 许 多 与 RHCSA 相 关 主 题 的 介 绍 2. RHCE 主 题 RHCE 考 试 主 题 包 含 了 更 高 级 的 服 务 器 配 置, 以 及 各 种 用 来 确 保 Red Hat Enterprise Linux 7 中 服 务 器 安 全 的 安 全 功 能 此 外, 还 需 要 检 查 一 下 RHCE 考 试 目 标 网 站, 以 便 确 定 考 试 所 需 要 学 习 主 题 的 最 新 信 息 系 统 配 置 和 管 理 RHCE 考 试 中 针 对 系 统 配 置 和 管 理 的 需 求 包 含 了 一 系 列 主 题, 包 括 : 绑 定 设 置 绑 定 以 聚 合 网 络 链 接 第 14 章 将 介 绍 绑 定 路 由 ID 流 量 为 特 定 的 网 络 地 址 设 置 静 态 路 由 第 14 章 将 介 绍 如 何 设 置 自 定 义 路 由 18
第 1 章 开 始 使 用 Linux 防 火 墙 允 许 或 者 阻 止 系 统 中 选 定 端 口 的 流 量, 这 些 端 口 提 供 了 诸 如 Web FTP 和 NFS 之 类 的 服 务, 此 外 还 可 以 根 据 发 起 人 的 IP 地 址 允 许 或 者 阻 止 访 问 相 关 服 务 第 25 章 将 介 绍 防 火 墙 的 相 关 内 容 内 核 可 调 参 数 学 会 使 用 /etc/sysctl.conf 文 件 和 sysctl 命 令 设 置 内 核 可 调 参 数 第 14 章 将 简 要 描 述 一 下 如 何 使 用 /etc/sysctl.conf 文 件 更 改 /proc/system 中 的 IP 转 发 设 置 Kerberos 身 份 验 证 使 用 Kerberos 对 RHEL 系 统 中 的 用 户 进 行 身 份 验 证 第 11 章 将 介 绍 如 何 将 一 个 系 统 的 身 份 验 证 添 加 到 一 个 Kerberos 服 务 器 中 配 置 iscsi 将 系 统 设 置 为 一 个 iscsi 目 标 和 发 起 人, 并 在 启 动 时 挂 载 一 个 iscsi 目 标 如 果 想 了 解 更 多 信 息, 请 参 阅 Red Hat Storage Administrator Guide(https://access.redhat.com/ documentation/en-us/red_hat_enterprise_linux/7/html/storage_administration_guide/ch-iscsi. html) 系 统 报 告 使 用 诸 如 sar 之 类 的 功 能 来 报 告 关 于 内 存 的 系 统 使 用 情 况 磁 盘 访 问 网 络 流 量 以 及 处 理 器 利 用 率 第 13 章 将 介 绍 如 何 使 用 sar 命 令 Shell 脚 本 创 建 一 个 简 单 的 Shell 脚 本, 以 便 以 不 同 的 方 式 获 取 输 入 和 生 成 输 出 第 7 章 将 介 绍 Shell 脚 本 远 程 日 志 通 过 配 置 rsyslogd 设 备 来 收 集 日 志 消 息, 并 将 它 们 分 发 到 一 个 远 程 的 日 志 服 务 器 中 此 外, 配 置 一 个 远 程 日 志 服 务 器 设 备, 以 便 收 集 来 自 登 录 客 户 端 的 日 志 消 息 第 13 章 将 讲 述 如 何 使 用 rsyslogd 实 现 远 程 日 志 SELinux 通 过 在 执 行 模 式 中 使 用 安 全 性 增 强 的 Linux, 可 以 确 保 下 一 节 所 介 绍 的 所 有 服 务 器 配 置 的 安 全 第 24 章 将 介 绍 SELinux 安 装 和 配 置 网 络 服 务 针 对 下 面 所 列 举 的 每 一 个 网 络 服 务, 都 需 要 确 保 正 确 完 成 以 下 工 作 : 安 装 服 务 所 需 的 程 序 包 ; 设 置 SELinux 从 而 允 许 访 问 服 务 ; 对 服 务 进 行 设 置, 以 便 在 系 统 启 动 时 启 动 ; 确 保 主 机 或 用 户 所 使 用 的 服 务 的 安 全 ( 使 用 iptables TCP Wrappers 或 者 服 务 本 身 所 提 供 的 相 关 功 能 ); 进 行 相 关 配 置 以 便 完 成 基 本 操 作 所 包 含 的 服 务 如 下 所 示 : Web 服 务 器 配 置 一 个 Apache(HTTP/HTTPS) 服 务 器 必 须 能 够 设 置 一 个 虚 拟 主 机, 部 署 一 段 CGI 脚 本, 使 用 私 有 目 录 以 及 允 许 一 个 特 定 的 Linux 组 来 管 理 内 容 第 17 章 将 描 述 如 何 配 置 一 个 Web 服 务 器 DNS 服 务 器 设 置 一 个 DNS 服 务 器 ( 绑 定 包 ), 以 便 充 当 一 个 可 以 将 DNS 查 询 转 发 到 另 一 台 DNS 服 务 器 的 缓 存 域 名 服 务 器 不 必 配 置 主 从 区 第 14 章 将 从 客 户 端 的 角 度 来 描 述 DNS 如 果 想 要 了 解 更 多 关 于 使 用 Bind 配 置 DNS 服 务 器 的 信 息, 请 参 阅 RHEL Networking Guide(https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html-single/ Networking_Guide) NFS 服 务 器 配 置 一 个 NFS 服 务 器, 以 便 与 特 定 的 客 户 端 系 统 共 享 特 定 目 录, 从 而 使 这 些 目 录 用 于 团 队 协 作 第 20 章 将 介 绍 NFS Windows 文 件 共 享 服 务 器 设 置 Linux(Samba) 向 特 定 的 主 机 和 用 户 提 供 SMB 共 享 同 时 为 团 队 协 作 配 置 该 共 享 第 19 章 将 讲 解 如 何 配 置 Samba Mail 服 务 器 对 后 缀 或 者 Sendmail 进 行 配 置, 从 而 接 收 来 自 本 地 主 机 之 外 的 电 子 邮 件, 并 将 其 转 发 到 一 个 智 能 主 机 本 书 将 不 会 讲 授 Mail 服 务 器 配 置 的 相 关 问 题 ( 并 且 也 不 应 该 轻 19
第 Ⅰ 部 分 入 率 地 进 行 讲 授 ) 如 果 想 要 了 解 更 多 这 方 面 的 相 关 信 息, 可 以 参 阅 RHEL 系 统 管 理 员 指 南 (https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html-single/system _Administrators_Guide/index.html#ch-Mail_Servers) 安 全 Shell 服 务 器 配 置 SSH 服 务 (sshd), 从 而 允 许 远 程 登 录 到 本 地 系 统 以 及 进 行 基 于 密 钥 的 身 份 验 证 另 外, 还 需 要 配 置 sshd.conf 文 件 第 13 章 将 介 绍 如 何 配 置 sshd 服 务 网 络 时 间 服 务 器 配 置 一 个 网 络 时 间 协 议 服 务 器 (Net Time Protocol server,ntpd), 从 而 与 其 他 NTP 服 务 器 保 持 时 间 同 步 关 于 配 置 ntpd 服 务 的 相 关 信 息, 请 参 阅 第 26 章 数 据 库 服 务 器 使 用 不 同 的 方 法 配 置 并 管 理 MariaDB 数 据 库 可 以 从 MariaDB.org 网 站 学 习 如 何 配 置 MariaDB(https://mariadb.com/kb/en/mariadb/documentation/) 如 前 所 述, 虽 然 在 RHCE 考 试 中 还 包 括 其 他 任 务, 但 是 请 记 住, 大 部 分 的 任 务 都 是 配 置 服 务 器, 然 后 使 用 任 何 需 要 的 技 术 确 保 这 些 服 务 器 的 安 全 这 些 技 术 包 括 防 火 墙 规 则 (iptables) SELinux TCP Wrappers 或 者 任 何 针 对 特 定 服 务 而 内 置 于 配 置 文 件 中 的 功 能 1.6 小 结 Linux 是 一 种 由 来 自 全 世 界 软 件 开 发 人 员 的 社 区 所 构 建 并 且 由 其 创 建 者 Linus Torvalds 所 领 导 的 操 作 系 统 它 最 初 源 自 UNIX 操 作 系 统, 但 多 年 来, 在 普 及 程 度 以 及 功 能 方 面 已 经 远 远 超 过 了 UNIX Linux 操 作 系 统 的 历 史 可 以 追 溯 到 早 期 的 UNIX 系 统, 当 时 该 系 统 免 费 向 大 学 分 发, 并 且 由 诸 如 BSD 之 类 的 创 始 人 不 断 提 高 Free Software Foundation 开 发 了 许 多 创 建 一 个 完 全 免 费 的 类 似 于 UNIX 的 操 作 系 统 所 需 的 组 件 而 Linux 内 核 本 身 就 是 完 成 该 工 作 所 需 的 主 要 组 件 大 多 数 Linux 软 件 项 目 都 被 一 组 许 可 证 所 保 护, 而 这 些 许 可 证 则 属 于 Open Source Initiative 其 中 最 卓 越 的 许 可 证 是 GNU Public License(GPL) 诸 如 Linux Standard Base 之 类 的 标 准 以 及 世 界 级 的 组 织 和 企 业 ( 比 如 Canonical 公 司 和 Red Hat 公 司 ) 使 Linux 在 未 来 成 为 一 款 稳 定 且 生 产 性 操 作 系 统 学 习 关 于 如 何 使 用 和 管 理 Linux 系 统 的 基 础 知 识 将 有 助 于 胜 任 与 Linux 工 作 相 关 的 各 个 方 面 后 续 每 一 章 都 会 提 供 一 系 列 练 习, 可 以 通 过 这 些 练 习 检 验 自 己 所 学 到 的 知 识 这 也 就 是 为 什 么 要 更 好 地 学 习 Linux 系 统, 以 便 可 以 顺 利 地 完 成 每 一 章 的 示 例 以 及 习 题 下 一 章 将 通 过 介 绍 如 何 获 取 和 使 用 一 个 Linux 桌 面 系 统 来 学 习 如 何 开 始 使 用 Linux 20