为了root用户能登陆,并且"root"这个名字能被正确地解释,我们要在 /etc/passwd 和 /etc/group 文件中加上相关的条目。
创建 /etc/passwd 文件的命令如下:
cat > /etc/passwd << "EOF" root:x:0:0:root:/root:/bin/bash EOF |
root用户的真正密码(这里的“x“只是一个占位符)后面会设置。
创建 /etc/group 文件的命令如下:
cat > /etc/group << "EOF" root:x:0: bin:x:1: sys:x:2: kmem:x:3: tty:x:4: tape:x:5: daemon:x:6: floppy:x:7: disk:x:8: lp:x:9: dialout:x:10: audio:x:11: EOF |
上面创建的用户组不是任何标准的一部分,它们只是后面MAKEDEV脚本要用到的。除了根用户组以外,LSB(http://www.linuxbase.org)仅仅推荐将bin组的GID定义为GID 1,我们都照做了。其它用户组名和GID可以由用户任意选择。一般来说,写得较好的程序包并不是依赖GID的数值而是采用用户组名。这样一来,一个组有什么样的GID对程序并没有任何影响。
最后,我们在chroot环境中重新登陆。在创建了/etc/passwd 和 /etc/group 文件后,用户名和组名解析应该马上生效,因为我们在第五章里安装了完整的Glibc。也就是说,现在 "I have no name!" 提示符就没有了.
exec /tools/bin/bash --login +h |
+h 参数关掉bash的 "hash"功能。hash 通常是一个有用的特性,这时 bash 使用 hash 表(哈希表)来记住可执行文件的完整路径,以避免为了找到同一个文件而进行多次 `PATH' 搜索。然而,我们希望立刻就能使用新安装的工具。关掉hash功能,那些交互的命令(make,patch, sed,cp 等等)将总是使用新的程序。