1.创建LFS的“创作基地”
export LFS=/mnt/lfs mkdir -pv $LFS
这里创建了整个目标系统的目录,为 /mnt/lfs
2.把空分区挂载到LFS目录上
mount /dev/sda2 $LFS
3.创建源代码编译用的目录
mkdir -v $LFS/sources chmod -v a+wt $LFS/sources
这个目录用于编译所有的软件,将该目录权限设置为“1777”(rwxrwxrwxt),所有人都可以对其进行读写
4.创建临时系统目录
4.创建临时系统目录
mkdir -v $LFS/tools ln -sv $LFS/tools /
上面这两句就建立了神奇的工具链目录(是工具链目录不是工具链),这样的创建方式是为了在创建工具链和使用工具链创建目标系统的时候对于工具链的位置都是/tools,这样可保证工具链的正常使用
注意:
ln-sv $LFS/tools /(这里有空格)执行后应该会输出
`/tools' ->`/mnt/lfs/tools'
表示正确。
5.创建lfs用户
ln-sv $LFS/tools /(这里有空格)执行后应该会输出
`/tools' ->`/mnt/lfs/tools'
表示正确。
5.创建lfs用户
groupadd lfs useradd -s /bin/bash -g lfs -m -k /dev/null lfs passwd lfs
命令“groupadd <用户名>”,用于创建一个用户组,任何用户必须存在于至少一个组中
命令“ useradd -s /bin/bash -g lfs -m -k /dev/null lfs ”用于创建新用户的命令,最后一个的 lfs 则是新用户的用户名
命令“ useradd -s /bin/bash -g lfs -m -k /dev/null lfs ”用于创建新用户的命令,最后一个的 lfs 则是新用户的用户名
- “-s” 用于指定该用户使用的shell环境,这里使用最常用的bash
- “-g” 用于指定该用户所在的用户组,这里使用了刚刚建立的 “lfs” 组
- “-m” 用于建立这个用户的专用目录,一般建立在 /home 下,目录名同用户名
- “-k” 用于指定建立该用户后复制指定的配置文件目录,这里指定了 /dev/null ,则不会复制任何配置目录
6.将 tools 和 sources 目录用户改成 lfs,以便后面用 lfs 用户来操作这两个目录
chown -v lfs $LFS/tools chown -v lfs $LFS/sources
7.切换到 lfs 用户
su - lfs
这时候你会发现命令行提示符已经由#改为了$
相关知识点:
其实如果不使用lfs用root也是能完成工具链的,不过需要对root的环境变量进行修改,还要防止因为输入错误而导致覆盖主系统下的文件,所以LFS手册中制作工具链部分就是为了解决这种意外的发生而用lfs用户来建立工具链
8.设置 lfs 用户的环境
相关知识点:
其实如果不使用lfs用root也是能完成工具链的,不过需要对root的环境变量进行修改,还要防止因为输入错误而导致覆盖主系统下的文件,所以LFS手册中制作工具链部分就是为了解决这种意外的发生而用lfs用户来建立工具链
8.设置 lfs 用户的环境
cat > ~/.bash_profile << "EOF" exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash EOF cat > ~/.bashrc << "EOF" set +h umask 022 LFS=/mnt/lfs LC_ALL=POSIX PATH=/tools/bin:/bin:/usr/bin export LFS LC_ALL PATH EOF source ~/.bash_profile
这里在当前用户的 “~” 目录(主目录)下新建了两个配置文件,.bash_profile 和 .bashrc
- login shell:此种方式登录时,shell会重新读取/etc/profile和~/.bash_profile来应用新的环境变量。
- non-login shell:此时shell不会读取/etc/profile和~/.bash_profile,而是读取~/.bashrc来应用新的环境变量。
.bash_profile:
这里使用了一个小技巧:在 “~/.bash_profile” 脚本中再次以非登录方式执行一次 bash , 可以保证用户无论是登陆还是非登录方式都会执行 “~/.bashrc” 文件,保证设置的环境是一致的。使用 exec 命令调用 bash ,防止 bash 递归调用,使用 env 命令是为了给非登录方式启动的 bash 设置几个环境变量
.bashrc:
set +h设置 bash 不开启 hash 功能
umash 022 表示新建目录默认权限为 “0755” , 新建文件权限为 “0644”
LC_ALL=POSIX设置语言环境为POSIX,使软件信息符合POSIX标准
PATH=/tools/bin:/bin:/usr/bin设置命令的搜索路径
注:
这里面最重要的就是PATH这个参数,目的是为了能够利用工具链里面的工具制作工具链:首先查找/tools/bin下是否有需要的命令,如果没有再到/bin和/usr/bin下找,然后用/bin或/usr/bin下面的命令来帮助生成需要的命令并放在/tools/bin下,这样此消彼涨,最终可完成一个自给自足的工具链。
source ~/.bash_profile应用用户环境设置