Google Adsense FreeBSD 6.0 下 devfs 的使用
nov 18

系统从 5.4-Release-p8 升级到 6.0-Release 后,cvsd 的初始化工具 cvsd-buildroot 一直不能用:

[root@rednora ~]# cvsd-buildroot /export0/cvsd
creating directory structure under /export0/cvsd... done.
installing binaries... cvs.
locating libnsl.so... not found (probably not fatal)
locating libnss_compat.so... not found (probably not fatal)
locating /lib/ld-linux.so.2... not found (probably not fatal)
locating /lib64/ld-linux-x86-64.so.2... not found (probably not fatal)
locating ld-elf.so... /usr/libexec/ld-elf.so.1
locating libnss_compat.so.2... not found (probably not fatal)
locating libnss_files.so.2... not found (probably not fatal)
locating /usr/libexec/ld.so... /usr/libexec/ld.so
locating /usr/lib/ld.so.1... not found (probably not fatal)
locating nss_files.so.1... not found (probably not fatal)
installing libraries... ld-elf.so.1 ld.so libgnuregex.so.3 libmd.so.3
libcrypt.so.3 libz.so.3 libgssapi.so.8 libkrb5.so.8 libasn1.so.8
libcrypto.so.4 libroken.so.8 libcom_err.so.3 libc.so.6.
creating /export0/cvsd/dev devices... FAILED (unable to use devices)
adding users to /export0/cvsd/etc/passwd...getent: not found
getent: not found
getent: not found
getent: not found
.
getent: not found
getent: not found
getent: not found
making /export0/cvsd/etc/pwd.db...done.
fixing ownership... done.
chrooted system created in /export0/cvsd
if your cvs binary changes (new version) you should rerun cvsd-buildroot

研究了一下 cvsd-buildroot 脚本,发现问题在于为 cvsd 创建的 jail 中的 dev/null 和 dev/zero 设备文件失效。找了一圈,发现在 6.0 中加强了 devfs 的使用,需要把 /export0/cvsd/dev 加载为 devfs 才能用:

[root@rednora ~]# mount_devfs devfs /export0/cvsd/dev

但这么操作之后,发现所有设备文件都出现在了 /export0/cvsd/dev 目录中,而我们只是需要 null 和 zero,这就需要用到 devfs 的 rule 设置:

[root@rednora ~]# devfs -m /export0/cvsd/dev ruleset 10
[root@rednora ~]# devfs -m /export0/cvsd/dev rule -s 10 add hide
[root@rednora ~]# devfs -m /export0/cvsd/dev rule -s 10 add path null unhide
[root@rednora ~]# devfs -m /export0/cvsd/dev rule -s 10 add path zero unhide
[root@rednora ~]# devfs -m /export0/cvsd/dev rule -s 10 applyset

经过这些设置,cvsd 又恢复正常了!

@TODO:

这些信息在系统重启后会丢失,需要仔细研究 devfs 在 FreeBSD 系统中使用,添加到相应的启动脚本中。

dirk 发表于 2005-11-18 Friday


0 Responses to “FreeBSD 6.0 Release 下的 cvsd-buildroot 问题”

  1. No comments yet

Comment »