ターゲット:
ヘッドレスLinuxシステムで実行されているJavaプログラムのグラフィック出力ビデオをストリーミング(例:Twitchで)したいと思います。また、モニターを接続せずにリモートで起動できるようにしたいです。sudo reboot
たとえば、SSHを使用して再起動した後、SSHを使用して再起動できます。
私はかなりの進歩を遂げ、最初の部分はほとんど働きます。しかし、現時点では、すべての部分に役立つ精神モデルを持つほどLinuxについて十分に知らないので、次に何を試すべきかについてのアドバイスを聞きたいと思います。問題は、ログインプロセスおよび/またはログインマネージャとXサーバーとの関係、コンソールユーザーと仮想ユーザーの違いにあるようです。
質問:
デバイスをモニターとキーボードに接続してログインすると、ストリーミングは期待どおりに機能します。以下を実行して(別の画面セッションで)SSHを介してアプリケーションを起動してストリーミングできます。
DISPLAY=:0 ./gradlew viz DISPLAY=:0 obs --startstreaming
- しかし、ログインしないと、glxinfoと同様に、これらのアプリケーションも失敗します。
私が実行した場合DISPLAY=:0 glxinfo
:
No protocol specified
Error: unable to open display :0
(存在しないディスプレイを使用しようとすると、最初の行が出ていないため、:0が存在しますが、何らかの理由で動作しません。ログイン後にglxinfoが期待どおりに機能します。)
Javaプログラムから以下を取得します。
Exception in thread "main" java.awt.AWTError: Can't connect to X11 window server using ':0' as the value of the DISPLAY variable.
at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
(etc.)
obsは私に以下を提供します:
No protocol specified
QXcbConnection: Could not connect to display :0
Aborted (core dumped)
ps aux は Xorg プロセスが実行中であることを示します。
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1227 0.1 0.2 149588 48116 tty7 Ss+ 16:14 0:01 /usr/lib/xorg/Xorg :0 vt7 -nolisten tcp -auth /var/lib/xdm/authdir/authfiles/A:0-vcuAPl
前述のように、コンピュータに接続されたキーボードで入力するなど、コンピュータで物理的に実行する必要がある日常的な手順は本当に避けたいと思います。
現在の設定の詳細:
- 仮想マシンではなく実際のマシンを使用しています。 Ubuntu Server 16.04を実行しています。
- このボックスの主な目的は、このプログラムと私が書いたいくつかの異なるプログラムを実行することです。必要に応じて、インストールされているソフトウェアが正常に動作するように大幅に変更します。オペレーティングシステムを再インストールまたは変更するのは面倒ですが、オプションです。
- Linux用OBS Studioを使用してストリーミングしています。最近では、--startstreamingコマンドラインパラメータが追加され、モニタが接続されている間にストリームを一度設定した後、いつでもリモートでストリームを開始できます。
- LinuxのOBS StudioはOpenGL 3.2をサポートする必要があるため、GeForce 9500 GT用にコンピュータを再設計しました。 NVidia独自のドライバ( "nvidia-current")を使用している限り、必要なOpenGLバージョンをサポートしています。
- 標準のUbuntuサーバーのインストールとは異なり、Xサーバーも実行する必要があり、Windowsマネージャも実行する必要があるようです。これを行うには、次のページに従ってXorg、Fluxbox、およびXDMをインストールしました。https://help.ubuntu.com/community/ServerGUIそしてhttps://help.ubuntu.com/community/Installation/LowMemorySystems、代わりにGNOME(またはUbuntuデスクトップインストール)などを使用すると、実際には実際の問題はありません。
- 「偽のモニター」HDMIアダプターを購入しましたが、うまく機能しているようですので、心配しないでください。ソフトウェアソリューションコンピュータにモニターが接続されていると考えさせてください。 (モニターまたは物理モニターが接続されている状態でコンピューターを起動すると、ps auxはディスプレイが0のXorgプロセスを表示します。モニターまたは物理モニターが接続されている状態で起動するとプロセスは存在しません。)
編集:結果
さらに使いやすい状態に変わりました。より良いソリューションがあると確信していますが、ストリーミングボックスに物理的にアクセスする必要はなくなりました。
まずxdmを削除しました。その後、起動時に "startx"を実行するスクリプトを追加しました。スクリプトは明らかにrootとして実行されており、これはXauthorityの問題とMIT-MAGIC-COOKIEに関するエラーメッセージを生成するため、XAUTHORITY /home/myUsername/.Xauthority
。これには別の解決策が必要です。起動後、sudo chown
.Xauthorityファイルを自分のユーザー(所有権がrootに設定されている)に返す必要があります。その後、期待どおりに DISPLAY:0 でプログラムを実行できます。
答え1
私はこのトピックのArchLinux Wikiページを読むことをお勧めします。これは、Ubuntuの最近のsystemdの使用と共通点が多いためです。新しい問題がたくさん紹介されました。会議権限があり、setuid ルートなしで X サーバーを実行できます。
まず自動ログインVTに移動して実行します。開始xまたはそこから出てください。読むことができる他のページは次のとおりです。到来の牙サーバーとディスプレイマネージャそしてシステムユーザー。キーワードもブラウズキオスクモデルあなたが望むものに似ているからです。まだこれを行っていないため、詳細を提供できません。