像其他操作系统那样,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 的文件。如果交换时常发生,最好的办法是为你的系统添置内存。
使用 UEFI 引导系统需要这个分区 (简称 ESP)。它存储在引导过程中运行的 EFI 程序。引导磁盘或许可以采用 MBR (DOS) 分区表,但它往往会导致兼容问题。建议总是将引导磁盘以 GUID 分区表 (GPT) 格式分区。如果仅通过 UEFI 引导 LFS,则 ESP 只需要不超过 20 MB 空间。它需要略大于 GRUB 的 EFI 映像,因为 GRUB 在创建 EFI 映像前会向分区写入较多数据。一般建议为其分配 128 MB 至 256 MB 空间,但实验表明实际不需要如此之多的空间。在使用 fdisk 分区时,应将该分区的标签设为 'EFI 系统'。
GRUB 预期将 EFI 系统分区挂载到 /boot/efi。
还有其他几个并非必须,但在设计磁盘布局时应当考虑的分区。下面的列表并不完整,但可以作为一个参考。
/boot – 在这一 LFS
改编版上不受支持。将不同发行版的内核都挤在同一个跨发行版共享的分区带来的问题过于棘手,以至于维护这一改编版的编辑不愿意在这种配置上浪费时间。如果您希望在多个
LFS 实例中共享 GRUB,考虑为 /boot/grub
准备一个单独的分区。如果希望配置 LFS 和宿主发行版的双重引导,则更干净的做法是保持它们的引导加载器的独立性,并从
LFS 的 grub “链式加载”宿主发行版的引导加载器,详见 第 10.4 节 “使用 GRUB
设定引导过程”。
/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 文件”中讨论。
下面给出在空的磁盘上安装 LFS 时可用的一种分区布局。
Number Start (sector) End (sector) Size Code Name 1 2048 22527 10.0 MiB EF00 EFI system partition 2 22528 4216831 2.0 GiB 8200 swap 3 4216832 88102911 40.0 GiB 8300 lfs13.0+ 4 88102912 171988991 40.0 GiB 8300 /home
本例假设:
采用 GUID 分区表 (GPT)
必须将 EFI 分区格式化为 VFAT。
需要初始化 swap 分区。
建议使用 ext4 格式化其他所有分区。
另外可以增加一个安装构建 LFS 所用的“宿主”发行版的分区。一般来说分配 10 GiB 就足以安装宿主发行版了。如果使用 LiveCD 构建系统,就不需要这个分区。