web-dev-qa-db-ja.com

FreeBSDにログインする前の自動startx

この問題は私を夢中にさせています!

FreeBSDで「/ etc/ttys」を使用して、gettyの実行時に実行されるコマンドを構成します。

これは私の設定ファイルの関連行です/etc/ttys

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

私の問題は、起動時に、現在のコンソールがttyv8に切り替わり(期待どおりに機能する)、VirtualBoxウィンドウのサイズが変更されることです(通常、Xサーバーがグラフィック出力を制御していることを示します)ただし、Xサーバーはすぐに閉じます。 FreeBSDは、5回再試行し、30秒待機し、5回再試行し、30秒待機します。これは私を夢中にさせています!

ただし、テキストコンソールにログインし、そこからstartxを実行すると、問題なく完全に正常に動作します。 ~/.xinitrcはありませんが、/usr/local/etc/X11/xinitのデフォルトの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
fameman
ttyv8 "/ usr/local/bin/startx" xterm on secure

閉じますが、間違っています。

ttysのマニュアルには、これを正確に行う方法の例が示されています。 window=設定で実際のXサーバーを指定し、レコードの2番目のフィールドで実行する最初のXクライアントを指定する必要があります。

#ターミナルエミュレート/ウィンドウシステム
 ttyv0 "/ usr/local/bin/xterm -display:0" xterm on window = "/ usr/local/bin/X:0"

個人的には、次の3つの理由から、このttysのメカニズムを使用しないことをお勧めします。

  • ご存知のように、再起動の動作はきれいではありません。実際、Xクライアントとサーバーの環境変数の構成やサービスの有効化/無効化などを行うことができる適切なサービスマネージャーと比較すると、これの構成可能性はほとんどありません。
  • これは、デスクトップマネージャーが混在している場合、実際にはこれを行う方法ではありません。 FreeBSDハンドブックは、rc.confの設定によって有効/無効にされるそれぞれのMewburnrcスクリプトを介してさまざまなdestkopマネージャーを実行する方法を示しています。 TrueOSは、これをOpenRCスクリプトによって呼び出されるPCDMに置き換えます。 ttysデータベースエントリはどちらにも関係していません。
  • これは、PCDMとさまざまなデスクトップマネージャー用のサービスバンドルがあり、同様にサービスバンドルを使用してプレーンXサーバーとクライアントを起動するnoshサービス管理でこれを行う方法ではありません。このようなサービスバンドルの通常の方法。 ttysデータベースエントリは含まれていません。

Xサーバーとクライアントを実行するには、Mewburn rcスクリプト、OpenRCスクリプト、またはnoshサービスバンドルを作成することをお勧めします。

参考文献

4
JdeBP

私は次の方法を使用しています:

  1. ttyv0で、ユーザーは自動的にログインします。
  2. 私の~/.loginはttyをチェックします。 ttyv0の場合、startxが実行されます。
  3. startxの終了後(xorgセッションを閉じる)、停止/再起動について尋ねます。

説明:

1。自動的にログイン:to /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
3
uzsolt