首页 > 代码库 > LFS(2)建立新用户和新环境
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
————————————————————————
本文出自 “Xmirage” 博客,请务必保留此出处http://mirage1993.blog.51cto.com/2709744/1535144