6. 详细安装

6.1. 安装准备

Linux 比 MS-DOS、Windows 或 NT 更有效地利用 PC 硬件,因此对配置错误的硬件的容忍度更低。在开始之前,您可以做一些事情来减少因这类问题而停止的可能性。

首先,收集您拥有的任何硬件手册——主板、显卡、显示器、调制解调器等——并将它们放在容易拿到的地方。

其次,收集有关您的硬件配置的详细信息。一种简单的方法是,如果您运行的是 MS-DOS 5.0 或更高版本,则打印 Microsoft 诊断实用程序 msd.exe 的报告(您可以省略 TSR、驱动程序、内存映射、环境变量字符串和操作系统版本部分)。 除此之外,这将保证您获得有关显卡和鼠标类型的完整和正确信息,这将有助于稍后配置 X。

第三,检查您的机器是否存在受支持硬件的配置问题,这些问题可能会在 Linux 安装期间导致无法恢复的死机。

如果可能,请获取一位有经验的 Linux 用户的电话号码,以便您在紧急情况下可以致电。 十次中有九次您不需要它,但拥有它会让人感到安心。

为安装预算时间。 在裸机系统或正在转换为全 Linux 操作的系统上,这将大约需要一个小时。 或者对于双启动系统最多三个小时(它们的误启动和挂起发生率更高)。

6.2. 创建启动盘和根盘

(如果您无法从 CD-ROM 启动,则只需执行此步骤。)

您的 Linux CD-ROM 可能附带安装辅助工具,这些工具将引导您完成使用交互式提示构建启动盘、根盘和救援盘的过程。 这些可能是 MS-DOS 安装程序(例如 Red Hat redhat.exe 程序)或 Unix 脚本,或两者兼而有之。

如果您有这样的程序并且可以使用它,则应阅读本小节的其余部分仅供参考。 运行该程序以执行实际安装——其作者肯定比我更了解特定发行版,并且您将避免许多容易出错的手动输入步骤。

有关制作启动盘的更多详细信息,请参阅 Linux 启动盘 HOWTO

您的第一步是选择适合您硬件的启动盘映像。 如果您必须手动执行此操作,通常会发现 (a) CD-ROM 上的启动盘映像的命名方式可以帮助您选择正确的映像,或者 (b) 附近有一个索引文件描述每个映像。

接下来,您必须从您选择的启动盘映像创建软盘,并可选择从救援盘映像创建软盘。 这就是 MS-DOS 程序 RAWRITE.EXE 发挥作用的地方。

接下来,您必须有两个或三个高密度 MS-DOS 格式化的软盘。 (它们的类型必须相同;也就是说,如果您的启动软盘驱动器是 3.5 英寸驱动器,则两个软盘都必须是高密度 3.5 英寸磁盘。)您将使用 RAWRITE.EXE 将启动盘映像写入软盘。

不带任何参数调用它,如下所示

C:\> RAWRITE

回答有关要写入的文件名称和要写入的软盘(例如 A:)的提示。 RAWRITE 会将文件逐块直接复制到软盘。 也将 RAWRITE 用于根磁盘映像(例如 COLOR144)。 完成后,您将有两个软盘:一个包含启动盘,另一个包含根盘。 请注意,这两个软盘将不再可由 MS-DOS 读取(在某种意义上,它们是“Linux 格式”软盘)。

您可以使用 UNIX 系统上的 dd(1) 命令来完成相同的工作。 (为此,您当然需要一台带有软盘驱动器的 UNIX 工作站。)例如,在带有设备上软盘驱动器的 Sun 工作站上/dev/rfd0,您可以使用命令

$ dd if=bare of=/dev/rfd0 obs=18k

您必须在某些工作站(例如 Sun)上提供适当的输出块大小参数(“obs”参数),否则这将失败。 如果您遇到问题,dd(1) 的手册页可能会有所帮助。

确保您使用的是全新的、无错误的软盘。 软盘上不得有坏块。

请注意,您无需运行 Linux 或 MS-DOS 即可安装 Linux。 但是,运行 Linux 或 MS-DOS 可以更轻松地从 CD-ROM 创建启动盘和根盘。 如果您的机器上没有操作系统,您可以使用别人的 Linux 或 MS-DOS 仅用于创建软盘,然后从那里安装。

6.3. 重新分区您的 DOS/Windows 驱动器

在大多数常用系统中,硬盘驱动器已经专用于 MS-DOS、OS/2 等的分区。 您需要调整这些分区的大小,以便为 Linux 腾出空间。 如果您要运行双启动系统,强烈建议您阅读以下一个或多个迷你 HOWTO,其中描述了不同的双启动配置。

即使它们不直接适用于您的系统,它们也将帮助您理解所涉及的问题。

Note

某些 Linux 发行版将安装到 MS-DOS 分区上的目录中。 (这与 MS-DOS 分区安装不同。)相反,您使用“UMSDOS 文件系统”,它允许您将 MS-DOS 分区的目录视为 Linux 文件系统。 这样,您不必重新分区驱动器。

如果您的驱动器已经有四个分区(DOS 支持的最大分区数)并且重新分区会带来更多麻烦(由于文件名转换开销,它会减慢您的 Linux 速度),我才建议使用此方法。 或者,如果您想在重新分区之前试用 Linux,这是一种很好的方法。 但在大多数情况下,您应该重新分区,如此处所述。 如果您计划使用 UMSDOS,则您需要自行承担风险——此处未详细记录。 从现在开始,我们假设您不使用 UMSDOS,并且您将重新分区。

分区只是硬盘驱动器的一部分,专门用于特定操作系统使用。 如果您只安装了 MS-DOS,则您的硬盘驱动器可能只有一个分区,完全用于 MS-DOS。 但是,要使用 Linux,您需要重新分区驱动器,以便您有一个用于 MS-DOS 的分区,以及一个(或多个)用于 Linux 的分区。

分区有三种类型:主分区扩展分区逻辑分区。 简而言之,主分区是驱动器上的四个主要分区之一。 但是,如果您希望每个驱动器有四个以上的分区,则需要将最后一个主分区替换为扩展分区,扩展分区可以包含许多逻辑分区。 您不会直接在扩展分区上存储数据——它仅用作逻辑分区的容器。 数据仅存储在主分区或逻辑分区上。

换句话说,大多数人只使用主分区。 但是,如果您需要在驱动器上有四个以上的分区,则可以创建一个扩展分区。 然后在扩展分区之上创建逻辑分区,这样您就有了——每个驱动器四个以上的分区。

请注意,您可以轻松地将 Linux 安装在系统上的第二个驱动器上(MS-DOS 中称为 D:)。 您只需在创建 Linux 分区时指定适当的设备名称。 下面将详细介绍这一点。

回到重新分区驱动器。 过去,在不破坏分区上的数据的情况下,没有办法调整分区大小。 如今,有一些分区实用程序可以非破坏性地调整大小; 它们了解文件系统的结构,可以找到文件系统上的可用空间,并且可以在分区上移动文件数据,以便将可用空间移动到需要的位置,以便调整大小正常工作。 仍然建议您在使用其中一种之前进行完整备份,以防程序或人为错误。

在 Linux 下,GNU parted 允许您创建、销毁、调整大小和复制分区。 它支持 ext2、FAT16 和 FAT32 文件系统、Linux 交换设备; 它还了解 MS-DOS 磁盘标签。 Parted 可用于为新操作系统创建空间、重新组织磁盘使用情况、在硬盘之间复制数据以及磁盘映像。 它是相对较新的代码,但据报告运行良好且不会破坏数据。

有一个可用于 MS-DOS 的非破坏性磁盘重新分区程序,称为 FIPS。 借助 FIPS、磁盘优化程序(例如 Norton Speed Disk)和一点运气,您应该能够在不破坏 MS-DOS 分区上的数据的情况下调整其大小。

如果您没有这些调整大小分区编辑器中的任何一个,则调整分区大小的旧方法是删除分区,然后以较小的尺寸重新创建它们。 如果您使用此方法,则绝对必须进行备份才能保存您的任何数据。

修改分区的经典方法是使用程序 FDISK。 例如,假设您有一个 80 兆字节的硬盘驱动器,专用于 MS-DOS。 您想将其分成两半——40 兆字节用于 MS-DOS,40 兆字节用于 Linux。 为了做到这一点,您需要在 MS-DOS 下运行 FDISK,删除 80 兆字节的 MS-DOS 分区,并在其位置重新创建一个 40 兆字节的 MS-DOS 分区。 然后,您可以格式化新分区并从备份重新安装 MS-DOS 软件。 驱动器的 40 兆字节被留空。 稍后,您在驱动器的未使用部分创建 Linux 分区。

简而言之,您应该执行以下操作以使用 FDISK 调整 MS-DOS 分区的大小

  1. 对您的系统进行完整备份。

  2. 使用如下命令创建 MS-DOS 可启动软盘
    FORMAT /S A:
    将文件 FDISK.EXEFORMAT.COM 以及您需要的任何其他实用程序复制到此软盘。(例如,从备份恢复系统的实用程序。)

  3. 启动 MS-DOS 系统软盘。

  4. 运行 FDISK,可能需要指定要修改的驱动器(例如 C: 或 D:)。

  5. 使用 FDISK 菜单选项删除您要调整大小的分区。 这将销毁受影响分区上的所有数据。

  6. 使用 FDISK 菜单选项以较小的尺寸重新创建这些分区。

  7. 退出 FDISK 并使用 FORMAT 命令重新格式化新分区。

  8. 从备份还原原始文件。

请注意,MS-DOS FDISK 将为您提供创建“逻辑 DOS 驱动器”的选项。 逻辑 DOS 驱动器只是硬盘驱动器上的逻辑分区。 您可以将 Linux 安装在逻辑分区上,但您不希望使用 MS-DOS fdisk 创建该逻辑分区。 因此,如果您当前正在使用逻辑 DOS 驱动器,并且想要在其位置安装 Linux,则应使用 MS-DOS FDISK 删除逻辑驱动器,并(稍后)在其位置为 Linux 创建逻辑分区。

用于为 OS/2 和其他操作系统重新分区的机制类似。 请参阅这些操作系统的文档以了解详细信息。

6.4. 为 Linux 创建分区

重新分区驱动器后,您需要为 Linux 创建分区。 在描述如何执行此操作之前,我们将讨论 Linux 下的分区和文件系统。

6.4.1. 分区基础知识

Linux 至少需要一个分区,用于根文件系统,它将保存 Linux 内核本身。

您可以将文件系统视为为 Linux 格式化的分区。 文件系统用于保存文件。 每个系统都必须至少有一个根文件系统。 但是,许多用户更喜欢使用多个文件系统——目录树的每个主要部分一个文件系统。 例如,您可能希望创建一个单独的文件系统来保存/usr目录下的所有文件。 (请注意,在 UNIX 系统上,正斜杠用于分隔目录,而不是像 MS-DOS 那样使用反斜杠。)在这种情况下,您同时拥有根文件系统和/usr文件系统。

每个文件系统都需要自己的分区。 因此,如果您同时使用根文件系统和/usr文件系统,则需要创建两个 Linux 分区。

此外,大多数用户都会创建一个交换分区,用于虚拟 RAM。 例如,如果您的机器上有 4 兆字节的内存和一个 10 兆字节的交换分区,那么就 Linux 而言,您有 14 兆字节的虚拟内存。

使用交换空间时,Linux 会将未使用的内存页移到磁盘上,从而允许您在系统上同时运行更多应用程序。 但是,由于交换通常很慢,因此它不能替代真正的物理 RAM。 但是,需要大量内存的应用程序(例如 X 窗口系统)通常会在您没有足够的物理 RAM 时依赖交换空间。

几乎所有 Linux 用户都使用交换分区。 如果您的 RAM 小于或等于 4 兆字节,则需要交换分区才能安装软件。 强烈建议您仍然拥有交换分区,除非您有大量的物理 RAM。

交换分区的大小取决于您需要的虚拟内存量。 通常建议您总共至少拥有 16 兆字节的虚拟内存。 因此,如果您有 8 兆字节的物理 RAM,您可能需要创建一个 8 兆字节的交换分区。 请注意,交换分区的大小存在平台相关的限制; 如果您要创建大于 1GB 的交换分区,请参阅 Partition-HOWTO。

您可以在 Linux Partition 迷你 HOWTO 中找到有关交换空间布局和磁盘分区的更多理论(http://www.linuxdoc.org/HOWTO/mini/Partition.html)。

注意:在双启动系统中,Linux 和 Windows 95 之间共享交换分区是可能的,尽管有点棘手。 有关详细信息,请参阅 Linux 交换空间迷你 HOWTO

注意事项 #1:如果您有一个 EIDE 驱动器,其分区超过 504MB,则您的 BIOS 可能不允许您启动到安装在那里的 Linux。 因此,请将根分区保持在 504MB 以下。 这对于 SCSI 驱动器控制器来说应该不是问题,SCSI 驱动器控制器通常有自己的驱动器 BIOS 固件。 有关技术细节,请参阅 大磁盘迷你 HOWTO

注意事项 #2:您是否混合使用了 IDE 和 SCSI 驱动器? 然后注意。 您的 BIOS 可能不允许您直接启动到 SCSI 驱动器。

6.5. 启动安装盘

第一步是启动您生成的启动盘。 通常,您将能够免手动启动; 启动内核提示将在 10 秒后自行填写。 这就是您通常从 IDE 磁盘启动的方式。

这里实际发生的情况是:启动盘提供了一个微型操作系统,该操作系统(因为硬盘驱动器未准备好)使用您 RAM 的一部分作为虚拟磁盘(逻辑上称为“内存盘”)。

启动盘将一小部分文件和安装工具加载到内存盘上,您将使用这些文件和安装工具来准备硬盘驱动器并从 CD-ROM 在其上安装生产 Linux。

(过去这是一个两阶段过程,涉及第二个磁盘,称为“根磁盘”;当引入内核模块时,这种情况发生了变化。)

通过在内核名称后给出参数,您可以在启动 Linux 内核之前指定各种硬件参数,例如您的 SCSI 控制器 IRQ 和地址,或驱动器几何结构。 如果 Linux 未检测到您的 SCSI 控制器或硬盘驱动器几何结构,则这可能是必要的。

特别是,许多无 BIOS 的 SCSI 控制器要求您在启动时指定端口地址和 IRQ。 同样,IBM PS/1、ThinkPad 和 ValuePoint 机器不会将驱动器几何结构存储在 CMOS 中,您必须在启动时指定它。 (稍后,您将能够配置您的生产系统以自行提供此类参数。)

观看系统启动时的消息。 它们将列出并描述您的安装 Linux 检测到的硬件。 特别是,如果您有 SCSI 控制器,您应该看到检测到的 SCSI 主机的列表。 如果您看到消息

SCSI: 0 hosts

那么您的 SCSI 控制器未被检测到,您将必须弄清楚如何告诉内核它在哪里。

此外,系统将显示有关检测到的驱动器分区和设备的信息。 如果此信息有任何不正确或丢失,您将必须强制硬件检测。

另一方面,如果一切顺利并且您的硬件似乎已被检测到,您可以跳到以下部分“加载根盘”。

要强制硬件检测,您必须在启动提示符下输入适当的参数,使用以下语法

linux <parameters...>

有许多此类参数可用; 我们在下面列出一些最常见的参数。 现代 Linux 启动盘通常会为您提供查看帮助屏幕的选项,其中描述了您启动之前的内核参数。

如果您对这些启动时选项有疑问,请阅读 Linux SCSI HOWTO,该文档应可在任何 Linux FTP 存档站点上获得(或从您获得本文档的任何地方获得)。 SCSI HOWTO 更详细地解释了 Linux SCSI 兼容性。

6.5.2. 使用 fdiskcfdisk

一旦根磁盘 Linux 启动,您的第一个安装步骤将是在磁盘上创建或编辑分区表。 即使您之前使用 FDISK 设置了分区,您现在也需要返回到分区表并插入一些特定于 Linux 的信息。

要创建或编辑 Linux 分区,我们将使用 Linux 版本的 fdisk 程序或其面向屏幕的同级程序 cfdisk。 请注意,fdisk 的参数需要是对应于整个磁盘的设备(例如/dev/sda),而不是其任何分区(例如/dev/sda1).

)。 通常,安装程序将查找预先存在的分区表,并提供为您在其上运行 fdiskcfdisk。 在两者中,cfdisk 绝对更容易使用,但其当前版本对于不存在或乱码的分区表的容忍度也较低。

因此,您可能会发现(特别是如果您在全新的硬件上安装),您需要从 fdisk 开始才能达到 cfdisk 可以处理的状态。 尝试运行 cfdisk; 如果它报错,则运行 fdisk。 (如果您正在构建全 Linux 系统并且 cfdisk 报错,则一个好的方法是使用 fdisk 删除所有现有分区,然后启动 cfdisk 来编辑空表。)

一些注意事项适用于 fdiskcfdisk。 两者都采用一个参数,该参数是您希望在其上创建 Linux 分区的驱动器的名称。 硬盘驱动器设备名称为

例如,要在系统中的第一个 SCSI 驱动器上创建 Linux 分区,您将使用(或您的安装程序可能会从菜单选项生成)命令

cfdisk /dev/sda

如果您在不带参数的情况下使用 fdiskcfdisk,它将假定/dev/hda.

要在系统中的第二个驱动器上创建 Linux 分区,只需指定/dev/hdb(对于 IDE 驱动器)或第一个 SCSI 驱动器(对于 SCSI 驱动器)在运行 fdisk 时。

您的 Linux 分区不必都在同一个驱动器上。 您可能希望在/dev/hda上创建根文件系统分区,并在/dev/hdb上创建交换分区,例如。 为了做到这一点,只需为每个驱动器运行一次 fdiskcfdisk

在 Linux 中,分区根据它们所属的驱动器命名。 例如,驱动器上的第一个分区/dev/hda/dev/hda1,第二个是/dev/hda2,依此类推。 如果您有任何逻辑分区,它们的编号从/dev/hda5, /dev/hda6开始,依此类推。

Note

您不应使用 Linux fdiskcfdisk 创建或删除 Linux 以外的操作系统的分区。 也就是说,不要使用此版本的 fdisk 创建或删除 MS-DOS 分区; 请改用 MS-DOS 版本的 FDISK。 如果您尝试使用 Linux fdisk 创建 MS-DOS 分区,则 MS-DOS 很可能无法识别该分区并且无法正确启动。

这是一个使用 fdisk 的示例。 在这里,我们有一个 MS-DOS 分区,在驱动器上使用了 61693 个块,驱动器的其余部分可用于 Linux。 (在 Linux 下,一个块是 1024 字节。因此,61693 个块大约是 61 兆字节。)在本教程示例中,我们将仅创建两个分区,交换分区和根分区。 您可能应该根据上述建议将其扩展到四个 Linux 分区:一个用于交换分区,一个用于根文件系统,一个用于系统软件,以及一个主目录区域。

首先,我们使用“p”命令显示当前分区表。 正如您所见,/dev/hda1(上的第一个分区/dev/hda)是 61693 个块的 DOS 分区。

Command (m for help):   p
Disk /dev/hda: 16 heads, 38 sectors, 683 cylinders 
Units = cylinders of 608 * 512 bytes

     Device Boot  Begin   Start     End  Blocks   Id  System
  /dev/hda1   *       1       1     203   61693    6  DOS 16-bit >=32M

Command (m for help):

接下来,我们使用“n”命令创建一个新分区。 Linux 根分区的大小为 80 兆字节。

Command (m for help):  n 
Command action 
    e   extended 
    p   primary partition (1-4)
p

在这里,我们被问到是否要创建扩展分区还是主分区。 在大多数情况下,您希望使用主分区,除非您需要在驱动器上有四个以上的分区。 有关更多信息,请参阅上面的“重新分区”部分。

Partition number (1-4): 2
First cylinder (204-683):  204
Last cylinder or +size or +sizeM or +sizeK (204-683): +80M

第一个柱面应该是最后一个分区结束后的柱面。 在这种情况下,/dev/hda1结束于柱面 203,因此我们从柱面 204 开始新分区。

如您所见,如果我们使用符号“+80M”,则指定大小为 80 兆字节的分区。 同样,符号“+80K”将指定一个 80 千字节的分区,“+80”将仅指定一个 80 字节的分区。

Warning: Linux cannot currently use 33090 sectors of this partition

如果您看到此警告,可以忽略它。 它遗留自一个旧限制,即 Linux 文件系统的大小只能为 64 兆字节。 但是,使用较新的文件系统类型,情况不再如此……分区现在可以达到 4 太字节的大小。

接下来,我们创建 10 兆字节的交换分区,/dev/hda3.

Command (m for help): n
Command action 
    e   extended 
    p   primary partition (1-4) 
p

Partition number (1-4): 3
First cylinder (474-683):  474
Last cylinder or +size or +sizeM or +sizeK (474-683):  +10M

同样,我们显示分区表的内容。 务必记下此处的信息,特别是每个分区的大小(以块为单位)。 您稍后需要此信息。

Command (m for help): p
Disk /dev/hda: 16 heads, 38 sectors, 683 cylinders 
Units = cylinders of 608 * 512 bytes

     Device Boot  Begin   Start     End  Blocks   Id  System
  /dev/hda1   *       1       1     203   61693    6  DOS 16-bit >=32M
  /dev/hda2         204     204     473   82080   83  Linux native
  /dev/hda3         474     474     507   10336   83  Linux native

请注意,Linux 交换分区(此处为/dev/hda3)的类型为“Linux native”。 我们需要将交换分区的类型更改为“Linux swap”,以便安装程序将其识别为交换分区。 为了做到这一点,请使用 fdisk “t”命令

Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 82

如果您使用“L”列出类型代码,您会发现 82 是对应于 Linux 交换分区的类型。

要退出 fdisk 并将更改保存到分区表,请使用“w”命令。 要退出 fdisk 而不保存更改,请使用“q”命令。

退出 fdisk 后,系统可能会告诉您重新启动以确保更改生效。 通常,在使用 fdisk 后没有理由重新启动——现代版本的 fdiskcfdisk 足够智能,无需重新启动即可更新分区。

6.5.3. 分区后步骤

编辑分区表后,您的安装程序应查看它们并提供为您启用交换分区。 回答“是”。

(这是一个问题,而不是自动完成,因为您可能正在运行双启动系统,并且您的非 Linux 分区之一可能看起来像交换卷。)

接下来,程序将要求您将 Linux 文件系统名称(例如 /、/usr、/var、/tmp、/home、/home2 等)与您将要使用的每个非交换分区关联起来。

对此只有一个硬性规定。 必须有一个根文件系统,名为 /,并且它必须是可启动的。 您可以将其他 Linux 分区命名为您喜欢的任何名称。 但是,有一些关于如何命名它们的约定,这可能会简化您以后的生活。

早些时候,我推荐了一个基本的三分区设置,包括一个小根分区、一个中等大小的系统软件分区和一个大的主目录分区。 传统上,这些分区将被称为 /、/usr 和 /home。 反直觉的 `/usr` 名称是历史遗留下来的,当时(小得多)Unix 系统在单个非根分区上携带系统软件和用户主目录。 某些软件依赖于它。

如果您有多个主目录区域,则按照惯例将它们命名为 /home、/home2、/home3 等。 如果您有两个物理磁盘,则可能会出现这种情况。 例如,在我的个人系统上,布局当前看起来像这样

Filesystem         1024-blocks  Used Available Capacity Mounted on
/dev/sda1              30719   22337     6796     77%   /
/dev/sda3             595663  327608   237284     58%   /usr
/dev/sda4            1371370    1174  1299336      0%   /home
/dev/sdb1            1000949  643108   306130     68%   /home2

第二个磁盘 (sdb1) 实际上并非全部是 /home2; 此显示中未显示 sda 和 sdb 上的交换分区。 但是您可以看到 /home 是 sda 上的大型可用区域,而 /home2 是 sdb 的用户区域。

如果您想为暂存、假脱机、临时、邮件和新闻文件创建一个分区,请将其称为 /var。 否则,您可能需要创建一个 /usr/var 并创建一个名为 /var 的符号链接,该链接指向它(安装程序可能会为您执行此操作)。

6.6. 安装软件包

一旦您完成了准备分区的工作,其余的安装应该是几乎自动的。 您的安装程序(无论是基于 EGA 还是基于 X)将引导您完成一系列菜单,您可以在其中指定要从中安装的 CD-ROM、要使用的分区等等。

在这里,我们不打算记录安装此阶段的许多细节。 它是 Linux 发行版之间差异最大的部分之一(供应商传统上在这里竞争以增加价值),但也是最简单的部分。 并且安装程序几乎是不言自明的,并具有良好的屏幕帮助。

6.7. 软件包安装后

安装完成后,如果一切顺利,安装程序将引导您完成一些选项,以在首次从硬盘驱动器启动之前配置系统。