在本书中,我们经常使用环境变量 LFS
。您应该保证,在构建 LFS
的全过程中,该变量都被定义且设置为您构建 LFS 使用的目录 —— 我们使用 /mnt/lfs
作为例子,但您可以任意选择目录名。如果您在一个独立的分区上构建
LFS,那么这个目录将用作该分区的挂载点。选择一个目录,然后用以下命令设置环境变量:
export LFS=/mnt/lfs
设置该环境变量的好处是,我们可以直接输入书中的命令,例如 mkdir -v $LFS/tools。Shell 在解析命令时会自动将 “$LFS” 替换成 “/mnt/lfs” (或是您设置的其他值)。
现在设定创建文件时使用的访问权限模式掩码 (umask) 为 022
,以防个别宿主发行版使用不同的默认值:
umask 022
将 umask 设定为 022,保证只有文件所有者可以写新创建的文件和目录,但任何人都可读取或搜索 (仅针对目录) 它们 (如果 open(2) 系统调用使用默认模式,则新文件将具有权限模式 644,而新目录具有权限模式 755)。过于宽松的默认值可能在 LFS 系统中遗留安全问题,而过于严格的默认值可能在构建或使用 LFS 时引发奇怪的问题。
无论何时,如果您离开并重新进入了工作环境,一定要再次确认 LFS
已经正确设定,且 umask 被设为 022
(例如,使用
su 切换到 root
或者其他用户时)。以下命令可用于检查 LFS
的设置是否正确:
echo $LFS
确认上述命令输出用于构建 LFS 系统的位置,如果使用了本书的例子,就是 /mnt/lfs
。
以下命令可用于检查 umask 是否设定正确:
umask
该命令应该输出 022
。
如果上述两条命令中任意一条的输出不正确,则需要按照本页面之前给出的命令,将 $LFS
设为正确的目录名,并将 umask 设为 022
。
确保 LFS
变量和 umask 始终正确的一种方法是:编辑您的主目录中的
.bash_profile
,以及/root/.bash_profile
,为它们加入上述 export 和 umask 命令。另外,在 /etc/passwd
中,每个需要使用 LFS
变量的用户的 shell 都必须是 bash,以保证每次登录时都执行 .bash_profile
中的命令。
另外还要考虑登录宿主系统的方式,如果您使用图形显示管理器登录,再启动虚拟终端,那么 .bash_profile
一般不会被虚拟终端执行。此时,应该将上述命令加入到您使用的用户和
root
用户的 .bashrc
文件中。另外,一些发行版的 .bashrc
中使用 "if" 命令,使其在非交互 bash
的启动过程中不执行其余命令。此时必须将上述命令添加到交互性检测之前。