Linux系统的创建当然离不开软件包和补丁,本文就列出所需的软件列表!
既然要下载软件,当然需要一个存放软件的地方,以方便在整个构建过程中都能有效访问。
另外还需要一个工作目录用于解压源代码并执行编译。可以用目录 $LFS/sources
保存软件包和补丁,同时作为工作目录。
放到这个目录,所有需要的元素都在 LFS 分区中,因此在构建过程中的所有阶段都可以访问。
$LFS
就是上一篇中讲到的环境变量:export LFS=/mnt/lfs
创建下载目录:
在开始下载任务之前,先用 root
用户执行下面的命令创建这个目录,并且设置目录的写权限和粘滞模式:
mkdir -pv $LFS/sources chmod -v a+wt $LFS/sources
接下来就是下载所需的软件包和补丁,使用 wget-list
作为 wget 的输入:
wget https://linux.cn/lfs/LFS-BOOK-7.7-systemd/wget-list-LFS7.7-systemd-USTC wget --input-file=wget-list-LFS7.7-systemd-USTC --continue --directory-prefix=$LFS/sources
📢 注意: 由于这些文件都分布在国外的不同站点上,因此有些会下载很慢。感谢中科大提供的镜像:wget-list-LFS7.7-systemd-USTC,感谢 Love-xuan 提供本文件。
另外,从 LFS-7.0 开始,多了一个单独的文件 md5sums ,可以在正式开始前校验所有的文件是否都正确。
使用 wget
将这个文件下载到 $LFS/sources
目录里并执行:
cd $LFS/sources wget https://linux.cn/lfs/LFS-BOOK-7.7-systemd/md5sums pushd $LFS/sources md5sum -c md5sums popd
软件包和补丁下载好之后,我们需要编译这些软件,那么就需要一个 $LFS/tools
文件夹用来安装!
mkdir -v $LFS/tools ln -sv $LFS/tools /
接下来,就是创建用户:
groupadd lfs useradd -s /bin/bash -g lfs -m -k /dev/null lfs passwd lfs chown -v lfs $LFS/tools chown -v lfs $LFS/sources
设置 LFS 用户的环境变量:
cat > /home/lfs/.bash_profile << "EOF" exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash EOF
当以 lfs
用户身份登录时,初始 shell 通常是一个可登录的 shell,它先读取宿主机的 /etc/profile
文件(很可能包括一些设置和环境变量),然后是 .bash_profile
文件。
.bash_profile
文件中的 exec env -i.../bin/bash
命令用一个除了 HOME、TERM 和 PS1 变量,完全空环境的 shell 代替运行中的 shell。
这可以确保没有不必要的或者有潜在风险的环境变量从宿主机系统中泄露到构建环境。这里使用的技巧是为了有一个干净环境。
新的 shell 实例是一个非登录 shell,不会读取 /etc/profile 或者 .bash_profile 文件,而是读取 .bashrc 文件。 现在创建 .bashrc
文件:
cat > /home/lfs/.bashrc << "EOF" set +h umask 022 LFS=/mnt/lfs LC_ALL=POSIX LFS_TGT=$(uname -m)-lfs-linux-gnu PATH=/tools/bin:/bin:/usr/bin export LFS LC_ALL LFS_TGT PATH EOF
set +h 命令关闭了 bash 的哈希功能。
哈希通常是一个有用的功能,bash 用一个哈希表来记录可执行文件的完整路径,以避免搜索 PATH 的时间和又找到一个相同的可执行文件。
然而,新工具要一安装后就使用。通过关闭哈希功能,一个程序准备运行时 shell 总是会搜索 PATH 变量。
如此,shell 能在新编译的工具可用时马上在文件夹 $LFS/tools 中找到,而不是记录相同程序在其它地方的之前版本。
设置用户文件新建掩码(umask)为 022 ,确保新建的文件和目录只有它们自己的所有者可写,任何人都可读和可执行(假定 open(2) 系统调用使用的默认模式是新文件使用 644 模式,文件夹使用 755 模式)。
本次分享到此结束啦~
如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持,你的支持就是我创作最大的动力。
❤️ 技术交流可以 关注公众号:Lucifer三思而后行 ❤️