我正在尝试构建一个基于 FreeBSD + XBMC 的媒体盒。除了一点之外,一切都工作正常。
我需要将 XBMC 作为 RCNG 启动脚本启动,这一切都很好,除了:
如果启动 X 和 XBMC 的命令在前台运行,则一切正常。如果它被推到后台(用 & ),它就会开始工作,然后被 getty 启动踢出(我认为)。
有什么方法可以阻止 getty 杀死 X,还是我完全找错了树?
rcng脚本:
#!/bin/sh
#
# $FreeBSD$
#
# PROVIDE: xbmc
# REQUIRE: sshd
# KEYWORD: shutdown
#
# Add the following line to /etc/rc.conf to enable xbmc:
#
# xbmc_enable="YES"
#
# You will also need to fill in the xbmc_flags="" variable to suit your configuration.
#
xbmc_enable=${xbmc_enable:-"NO"}
xbmc_flags=${xbmc_flags:-""}
. /etc/rc.subr
name=xbmc
rcvar=`set_rcvar`
#required_files="/usr/local/etc/xbmc.conf"
xbmc_start() {
PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin
HOME=/root
/usr/local/bin/xinit /usr/local/bin/xbmc # adding & makes it all fail
}
start_cmd=xbmc_start
#command=/usr/local/bin/xbmcboot
load_rc_config $name
run_rc_command "$1"
还有一点要注意——当它确实把它踢出来时,屏幕就被拧紧了。它向我显示了 X.Org 启动消息的第一部分,仅此而已。无法登录,无法控制它,甚至无法远程再次启动 X。
我现在已经在 /etc/ttys 中关闭了 ttyv2 及以上版本 - 它在踢出 Xorg 时阻止了屏幕锁定(给我一个正常的 getty 提示符),但它仍然将其踢出。所以它肯定与 getty / init 相关。
好的,我 100% 确信这与 getty 启动有关。如果我将启动 x 会话的命令放在带有睡5因此,直到 getty 开始运行之后,X 会话才真正开始,一切正常。
虽然我现在可以忍受这个,但很高兴理解为什么它会这样,也许让它启动得更友好。
答案1
- 我认为您缺少 REQUIRE 行,因此它是在正确的点开始的。我会尝试类似的东西
# 要求:登录系统控制台
- 在您的 /etc/ttys 中您是否配置了类似 xdm/gdm/kdm 的内容?您甚至可以尝试从 /etc/ttys 启动您的程序