LFS之(2)建立新用户和新环境

本来想使用我的日常工作用户mirage,但是看到LFS-Book里建立了新账户还进行了各种设置,我也就建立了新账户,防止不小心搞破坏。

建立新的group名为lfs,建立新用户lfs,

groupadd lfs
useradd -s /bin/bash -g lfs -m -k /dev/null lfs

-s 是指定默认的shell,不指定也行,反正默认都是bash

-g 是指定新用户将加入lfs组

-m 这个选项指明为新用户建立家目录,(这个选项不可省略,会报错)

-k 这个选项是指定从/dev/null复制用户文件。

当一个新用户建立时会从/dev/skel目录下复制文件到新用户家目录下,那么复制了哪些文件呢?就是.bash_logout .bash_profile .bashrc这些等。详见http://mirage1993.blog.51cto.com/2709744/1535143

我们指定让它从/dev/null复制就是不让它初始化这些文件,让它什么都不复制(以后手动设置)。

lfs 这选项就是新用户名

――――――――――――――

给lfs用户设密码。

之前我们把新建立的LFS分区挂到了/mnt/lfs下,然后在lfs目录下建立了tools和sources目录。还把/mnt/lfs/tools软链接到/tools。

现在

chown -v lfs $LFS/tools
chown -v lfs $LFS/sources

把这两个目录属主改为lfs用户。

然后退掉当前用户,重新登陆为lfs用户。

再家目录下看看,真干净,啥都没有。

现在开始手动建立

再新建~/.bash_profile

内容为

exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
这句话意思是start with an empty environment。将初始一个全新环境。

PS1是改改命令提示符,改成了 用户名:当前目录$

后面是调用bash程序执行。

新建~/.bashrc

内容为

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

set +h是关闭bash hash function,因为bash会用hash function记忆命令全路径从而节省搜索PATH路径的时间,但是当新工具安装好后应该立即得到应用。所以关掉hash function,让bash每次执行命令都搜索PATH路径。故,当/mnt/lfs/tool里面的工具一旦设置好,下次执行时,必将执行新工具,而不是之前被记忆的同一程序的不同旧版本。

umask是更改掩码,以后新建立的文件默认权限为644,目录默认权限为755.

LC_ALL与Glibc版本有关,暂且不谈。

LFS_TGT=$(uname -m)-lfs-linux-gnu是为了指明一个compatible machine description

重设PATH变量,把/tools/bin放到最前面是为了首先搜索到。和之前关闭hash function结合起来,以确保新工具编译好后会首先搜索到并执行新工具,屏蔽宿主系统的旧工具。

最后,

source ~/.bash_profile
source ~/.bashrc

――――――――――――――――――――――――


你可能感兴趣的:(搭建,lfs,新环境)