<< Back to shouce.jb51.net

创建 passwd 和 group 文件

为了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 等等)将总是使用新的程序。