进一步阅读

进一步阅读

这个问题快把我逼疯了!

我在 FreeBSD 上使用“/etc/ttys”来配置执行 getty 时执行的命令。

这是我的配置文件的相关行/etc/ttys

ttyv8   "/usr/local/bin/startx" xterm on secure

我的问题是,启动时,当前控制台切换到 ttyv8 (按预期工作),然后我的 VirtualBox 窗口调整大小(这通常表明 X Server 正在控制图形输出),但随后 X 服务器立即关闭。 FreeBSD 重试 5 次,等待 30 秒,然后重试 5 次,等待 30 秒,依此类推。这真让我抓狂!

然而,登录文本控制台并startx从那里运行后,它工作得完全正常,没有任何问题。我没有,~/.xinitrc但修改了默认的 xinit 文件/usr/local/etc/X11/xinit

当我尝试调试整个内容时,将管道添加到我的 tty 命令中:

ttyv8   "/usr/local/bin/startx > /tmp/startx.log" xterm on secure

startx.log 不存在。它根本不起作用。然而,标准 Xorg.0.log 会随着每次 getty 尝试启动 x 服务器而更新。 Xorg.0.log 根本什么也没说。只是在加载驱动程序等后成功结束。就像我的 xinitrc 根本不会被读取一样。

请注意,我不想使用登录管理器,也不需要任何自动登录机制。

先感谢您。

答案1

ttyv8 "/usr/local/bin/startx" xterm 安全

接近,但错误。

手册ttys给出了如何准确执行此操作的示例。您需要使用window=设置指定实际的 X 服务器,并指定要在记录的第二个字段中运行的初始 X 客户端:

# 终端模拟/窗口系统
ttyv0 "/usr/local/bin/xterm -display :0" xterm on window="/usr/local/bin/X :0"

就我个人而言,我建议不要使用这种机制ttys,原因有以下三个:

  • 正如您所发现的,重新启动行为并不漂亮。事实上,与适当的服务管理器相比,它的可配置性几乎为零,在服务管理器中,人们可以相当简单地执行诸如配置 X 客户端和服务器的环境变量以及启用/禁用服务之类的事情。
  • 一旦混合了桌面管理器,这并不是真正的做法。这FreeBSD 手册展示如何通过各自的 Mewburnrc脚本运行各种 destkop 管理器,通过rc.conf. TrueOS 将其替换为由 OpenRC 脚本调用的 PCDM。两者都不ttys涉及数据库条目。
  • 这不是在 nosh 服务管理下执行此操作的方式,它具有 PCDM 和各种桌面管理器的服务捆绑包,并且可以类似地使用服务捆绑包来启动普通 X 服务器和客户端,在此类服务包的正常方式。不ttys涉及数据库条目。

我建议您编写一个 Mewburnrc脚本、一个 OpenRC 脚本,甚至一个 nosh 服务包来运行您的 X 服务器和客户端。

进一步阅读

  • ttysFreeBSD 文件格式手册。 2014年3月9日。
  • X 窗口系统”。FreeBSD 手册

答案2

我正在使用以下方式:

  1. ttyv0我的用户上自动登录。
  2. ~/.login检查了 tty。如果是的话ttyv0就会运行startx
  3. 结束后startx(关闭 xorg 会话)询问有关暂停/重新启动的信息。

说明:

1.自动登录: 到/etc/ttys

ttyv0   "/usr/libexec/getty autologin" xterm   on  secure

/etc/gettytab

autologin::al=MYUSER

2.&3.相关内容~/.login。我正在使用tcsh,但这个想法也有效sh

if ($tty == "ttyv0") then
  echo Starting Xorg...
  startx
  echo "Halt (h) Reboot (r) Nothing (n) ?"
  set answer = $<
  if ($answer == "h") then
    /sbin/shutdown -p now
  else if ($answer == "r") then
    /sbin/shutdown -r now
  endif
endif

相关内容