追加読書

追加読書

この質問が私を狂わせる!

私はFreeBSDで "/etc/ttys"を使ってgettyが実行されたときに実行されるコマンドを設定します。

私の設定ファイルの関連行は次のとおりです/etc/ttys

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

私の問題は、起動時に現在のコンソールがttyv8に切り替えられ(予想どおりに機能している)VirtualBoxウィンドウのサイズが変更されることです(これは通常、Xサーバーがグラフィック出力を制御していることを示します)。ちなみに、Xサーバーはすぐにシャットダウンされます。。 FreeBSD は 5 回再試行して 30 秒を待ってから 5 回再試行して 30 秒を待つように続きます。これが私を狂わせている!

しかし、startxテキストコンソールにログインしてそこから実行した後は、問題なく完璧に動作しました。私はそうしませんでしたが、デフォルトの~/.xinitrcxinitファイルを修正しました/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サーバーを指定し、レコードの2番目のフィールドで実行する初期Xクライアントを指定する必要があります。

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

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

  • 発見したように、再起動の動作は悪いです。実際には、Xクライアントとサーバーの環境変数の設定やサービスの有効化/無効化などの操作を非常に簡単に実行できる適切なサービスマネージャと比較して、構成可能性はほとんどありません。
  • デスクトップマネージャを混在させた後は、実際に行くことはできません。これFreeBSDマニュアル各Mewburnスクリプトを介してrcさまざまなデスクトップマネージャを実行し、rc.confそれを.TrueOSを介してOpenRCスクリプトから呼び出されるPCDMに置き換える方法を示します。どちらもttysデータベースエントリとは関係ありません。
  • これはnoshサービス管理で行われる方法ではなく、PCDMおよびさまざまなデスクトップ管理者のためのサービスバンドルがあり、サービスバンドルはこれらのサービスバンドルの一般的な方法で通常のXサーバーとクライアントを起動するために同様に使用できます。ttysデータベースエントリは関係ありません。

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

追加読書

答え2

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

  1. ttyv0私のユーザーへの自動ログイン。
  2. ~/.loginttyを確認しました。その場合はttyv0実行されますstartx
  3. 完了(xorgセッションの終了)後の一時startx停止/再開についてお問い合わせください。

説明する:

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

関連情報