像其他操作系统那样,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
文件时要用到这些代号。
经常有人在 LFS 邮件列表询问如何进行系统分区。这是一个相当主观的问题。许多发行版在默认情况下会使用整个磁盘,只留下一个小的 swap 分区。对于 LFS 来说,这往往不是最好的方案。它削弱了系统的灵活性,使得我们难以在多个发行版或 LFS 系统之间共享数据,增加系统备份时间,同时导致文件系统结构的不合理分配,浪费磁盘空间。
一个 LFS 根分区 (不要与 /root
目录混淆) 一般分配 20
GB 的空间就足以保证多数系统的运行。它提供了构建 LFS 以及 BLFS
的大部分软件包的充足空间,但又不太大,因此能够创建多个分区,多次尝试构建 LFS 系统。
许多发行版自动创建交换空间。一般来说,推荐采用两倍于物理内存的交换空间,然而这几乎没有必要。如果磁盘空间有限,可以创建不超过 2GB 的交换空间,并注意它的使用情况。
如果您希望使用 Linux 的休眠功能 (挂起到磁盘),它会在关机前将内存内容写入到交换分区。这种情况下,交换分区的大小应该至少和系统内存相同。
交换到磁盘从来就不是一件好事。对于机械硬盘,通过听硬盘的工作噪声,同时观察系统的响应速度,就能分辨出系统是否在交换。对于 SSD,您无法听到工作噪声,但可以使用 top 或 free 命令查看使用了多少交换空间。应该尽量避免在 SSD 中建立交换分区。一旦发生交换,首先检查是否输入了不合理的命令,例如试图编辑一个 5GB 的文件。如果交换时常发生,最好的办法是为你的系统添置内存。
如果启动磁盘采用 GUID 分区表 (GPT),那么必须创建一个小的,一般占据 1MB 的分区,除非它已经存在。这个分区不能格式化,在安装启动引导器时必须能够被 GRUB 发现。这个分区在使用 fdisk 命令时显示为 'BIOS Boot' 分区,在使用 gdisk 命令时分区类型代号显示为为 EF02。
Grub Bios 分区必须位于 BIOS 引导系统使用的磁盘上。这个磁盘未必是存放 LFS 根分区的磁盘。不同磁盘可以使用不同分区表格式,只有引导盘采用 GPT 时才必须创建该分区。
还有其他几个并非必须,但在设计磁盘布局时应当考虑的分区。下面的列表并不完整,但可以作为一个参考。
/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 文件” 中讨论。