dbus的问题
Tuesday, December 12, 2006 1:22:58 AM
messagebus:x:81:81:System message bus:/:/bin/false
在/etc/group里增加
messagebus:x:81:
其中UID和GID都是直接从另外一个系统里抄过来的,用的是81
再次尝试启动dbus-1,依然出错,提示"user hal does not exist",于是同样增加hal用户和组,UID和GID则用了68。这时再尝试restart dbus-1,已经不会出现错误提示了。
然而启动gnome-volume-manager的时候,却提示Service "org.freedesktop.Hal" does not exist,可是明明ps ax能看到hald啊……而如果再次执行hald,然后执行gnome-volume-manager,却又不会出现这个提示了……
再看看/etc/init.d/dbus-1和/etc/dbus-1/event.d/20hal两个脚本,看到有个$PIDDIR变量,分别是/var/run/dbus和/var/run/hal,发现刚开始dbus下面有个pid文件,hal下面却是空的。而如果在命令行下执行hald,则在/var/run/hal就会出现pid文件了。
那么就看看通过20hal启动和直接命令行启动有啥不同。20hal的do_start()是这样的
do_start() {
if [ ! -d $PIDDIR ]; then
mkdir -p $PIDDIR
chown $DAEMONUSER:$DAEMONUSER $PIDDIR
fi
echo -n "Starting $DESC: "
start-stop-daemon --start --pidfile $PIDFILE \
--exec $DAEMON -- $DAEMON_OPTS
echo "$NAME."
}
加上一句echo把完整的start-stop-daemon命令行显示出现是这样的:
start-stop-daemon --start --pidfile /var/run/hal/hald.pid --exec /usr/sbin/hald -- --drop-privileges
于是就想到会不会是/var/run/hal权限的问题。ls -ld /var/run/hal一看,果然
drwxr-xr-x 2 109 hal 4096 Dec 12 09:06 /var/run/hal
我新加的hal的UID不是109,当然写不进去。可是组那里显示的不是109而是hal,说明系统里已经存在hal组了。再翻翻/etc/group,果然messagebus和hal两个组都是有的,GID分别是108和109。把/etc/passwd里messagebus和hal用户的UID和GID都改过来,再restart一下dbus-1,这回可以看到/var/run/hal/pid了。同样gnome-volume-manager也不会提示错误了,可是似乎插上u盘之后没有任何反应,要继续研究看看怎么回事……








How to use Quote function: