2.4. 创建新的分区

像其他操作系统那样,LFS 一般也被安装在一个专用的分区。我们推荐您为 LFS 选择一个可用的空分区,或者在有充足未划分空间的情况下,创建一个新分区。

一个最小的系统需要大小约 10 吉字节 (GB) 的分区。这足够保存所有源代码压缩包,并且编译所有软件包。然而,如果希望用 LFS 作为日常的 Linux 系统,很可能需要安装额外软件,需要更多空间。一个 30 GB 的分区是比较合理的。LFS 系统本身用不了太多空间,但大分区可以提供足够的临时存储空间,以及在 LFS 构建完成后增添附加功能需要的空间。另外,编译软件包可能需要大量磁盘空间,但在软件包安装完成后可以回收这些空间。

计算机未必有足够满足编译过程要求的内存 (RAM) 空间,因此可以使用一个小的磁盘分区作为 swap 空间。内核使用此分区存储很少使用的数据,从而为活动进程留出更多内存。LFS 的 swap 分区可以和宿主系统共用,这样就不用专门为 LFS 创建一个。

启动一个磁盘分区程序,例如 cfdisk 或者fdisk。在启动分区程序时需要一个命令行参数,表示希望创建新分区的硬盘,例如主硬盘 /dev/sda。创建一个 Linux 原生分区,如果有必要的话再创建一个 swap 分区。请参考 cfdisk(8) 或者 fdisk(8) 来学习如何使用分区程序。

[注意]

注意

有经验的用户可以尝试其他分区架构。LFS 系统可以被构建在软件 RAID 阵列或 LVM 逻辑卷上。然而,一些分区架构需要 initramfs,这是一个比较复杂的话题。对于初次构建 LFS 的用户来说,不推荐采用这些分区方法。

牢记新分区的代号 (例如 sda5)。本书将这个分区称为 LFS 分区。还需要记住 swap 分区的代号。之后在设置 /etc/fstab 文件时要用到这些代号。

2.4.1. 其他分区问题

经常有人在 LFS 邮件列表询问如何进行系统分区。这是一个相当主观的问题。许多发行版在默认情况下会使用整个磁盘,只留下一个小的 swap 分区。对于 LFS 来说,这往往不是最好的方案。它削弱了系统的灵活性,使得我们难以在多个发行版或 LFS 系统之间共享数据,增加系统备份时间,同时导致文件系统结构的不合理分配,浪费磁盘空间。

2.4.1.1. 根分区

一个 LFS 根分区 (不要与 /root 目录混淆) 一般分配 20 GB 的空间就足以保证多数系统的运行。它提供了构建 LFS 以及 BLFS 的大部分软件包的充足空间,但又不太大,因此能够创建多个分区,多次尝试构建 LFS 系统。

2.4.1.2. 交换 (Swap) 分区

许多发行版自动创建交换空间。一般来说,推荐采用两倍于物理内存的交换空间,然而这几乎没有必要。如果磁盘空间有限,可以创建不超过 2GB 的交换空间,并注意它的使用情况。

如果您希望使用 Linux 的休眠功能 (挂起到磁盘),它会在关机前将内存内容写入到交换分区。这种情况下,交换分区的大小应该至少和系统内存相同。

交换到磁盘从来就不是一件好事。对于机械硬盘,通过听硬盘的工作噪声,同时观察系统的响应速度,就能分辨出系统是否在交换。对于 SSD,您无法听到工作噪声,但可以使用 topfree 命令查看使用了多少交换空间。应该尽量避免在 SSD 中建立交换分区。一旦发生交换,首先检查是否输入了不合理的命令,例如试图编辑一个 5GB 的文件。如果交换时常发生,最好的办法是为你的系统添置内存。

2.4.1.3. Grub Bios 分区

如果启动磁盘采用 GUID 分区表 (GPT),那么必须创建一个小的,一般占据 1MB 的分区,除非它已经存在。这个分区不能格式化,在安装启动引导器时必须能够被 GRUB 发现。这个分区在使用 fdisk 命令时显示为 'BIOS Boot' 分区,在使用 gdisk 命令时分区类型代号显示为为 EF02

[注意]

注意

Grub Bios 分区必须位于 BIOS 引导系统使用的磁盘上。这个磁盘未必是存放 LFS 根分区的磁盘。不同磁盘可以使用不同分区表格式,只有引导盘采用 GPT 时才必须创建该分区。

2.4.1.4. 常用分区

还有其他几个并非必须,但在设计磁盘布局时应当考虑的分区。下面的列表并不完整,但可以作为一个参考。

  • /boot – 高度推荐。这个分区可以存储内核和其他引导信息。为了减少大磁盘可能引起的问题,建议将 /boot 分区设为第一块磁盘的第一个分区。为它分配 200 MB 就绰绰有余。

  • /boot/efi – EFI 系统分区,在使用 UEFI 引导系统时是必要的。阅读 BLFS 页面 以获得详细信息。

  • /home – 高度推荐。独立的 /home 分区可以在多个发行版或 LFS 系统之间共享 home 目录和用户设置。它的尺寸一般很大,取决于硬盘的可用空间。

  • /usr – 在 LFS 中,/bin/lib,以及 /sbin 是指向 /usr 中对应目录的符号链接。因此,/usr 包含系统运行需要的所有二进制程序和库。对于 LFS,通常不需要为 /usr 创建单独的分区。如果仍然需要这种配置,需要为其建立一个能够容纳系统中所有程序和库的分区。同时,在这种配置下,根分区可以非常小 (可能只需要一吉字节),因此它适用于瘦客户端或者无盘工作站 (此时 /usr 从远程服务器挂载)。然而,需要注意的是,必须使用 initramfs (LFS 没有包含),才能引导具有单独的 /usr 分区的系统。

  • /opt – 这个目录往往被用于在 BLFS 中安装 KDE 或 Texlive 等大型软件,以免把大量文件塞进 /usr 目录树。如果将它划分为独立分区,5 到 10 GB 一般就足够了。

  • /tmp – 默认情况下,systemd 在这里挂载一个 tmpfs。如果希望覆盖默认行为,在配置 LFS 系统系统时按照第 9.10.3 节 “禁止将 tmpfs 挂载到 /tmp”进行操作。

  • /usr/src – 将它划分为独立分区,可以用于存储 BLFS 源代码,并在多个 LFS 系统之间共享它们。它也可以用于编译 BLFS 软件包。30-50 GB 的分区可以提供足够的空间。

如果您希望在启动时自动挂载任何独立的分区,就要在 /etc/fstab 文件中指定。指定挂载分区的详细过程将在第 10.2 节 “创建 /etc/fstab 文件” 中讨论。