2023年2月16日木曜日

Ubuntu 18.04デスクトップをX11でヘッドレスに

現在Ubuntu 18.04が動いているデスクトップPCを使っているのですが、
昨年末くらいから繋いでいるモニターから変な音がするようになり、
年が明けると変な臭いもしてきて、いよいよ寿命かなと。
ちなみに変な臭いというのは多分電解コンデンサが焼ける臭いです。
ただデスクトップPCとは言え、
実はあんまりデスクトップPCっぽく使っておらず、
可能な限りssh/sftp経由でリモートログインして使用しております。
とはいえ完了までに長時間かかるコマンドを実行する際には、
途中で接続が切れると色々めんどうなのでローカルで実行し、
その操作と結果確認のときだけ短時間モニターの電源をオンして
取り敢えず運用でカバーしています。
ただしGUIアプリケーションを使うときは、
長時間モニターを使用せざるをえません。

本来Ubuntuの場合、[設定]アプリの[共有]メニューで
[画面共有]を[アクティブ]にしていると、
ローカルでのログイン後ならVNCクライアントから
ローカルで表示されている画面そのままを
リモートでコントロールできます。
手順についてはWindowsから接続する方法
Ubuntuから接続する方法を参照ください。

ところが、この画面被共有機能、
接続を許可するネットワークインターフェイスを
指定しなければならないのですが、
コンテナなどを使うためにブリッジを使用していると
[設定]アプリで指定できず、そういうUbuntuには接続できません。
きっと何か方法があるのでしょうが、よくわかっていません。

で、そういうことをまるっと解決したいな、
ということで、WindowsをXサーバ化することに。
そうすればUbuntu上で動作するプログラムのGUI部分を
Windowsに表示させて操作もでき、
しかも予めローカルでログインしなくてもアプリを起動できます。
この手のことを実現するのは昔はいろいろ大変でしたが、
今ならCygwinで簡単にできます。

セットアップの方法は以下の通り。
なお、私は既にCygwinはインストールしていて、
sshクライアント等の基本的なツールを
インストール済みな環境へセットアップしたので、
もしかすると何か抜けがあるかもしれません。
ということで参考程度と認識ください。

セットアップはCygwinのサイトから
"setup-x86_64.exe"をダウンロードし、
これを実行して始まるウィザードをデフォルト設定で進めていきます。
[Choose A Download Site]にたどり着いたら
適当な"*.jp"のURLを選択して進めます。
[Select Packeges]では[View]を[Category]にし、
[All]大分類の中の[X11]小分類を探し[New]列を[Default]を[Install]に変更、
[All]大分類の中の[Net]小分類から[openssh]を探し[New]列を[Install]に変更、
そして突き進み、終了すればセットアップ完了。
リモート接続先となるUbuntuにWindowsからsshでログインできるよう、
鍵のセットアップ等を行なっておきます。
詳しくはこの辺を参考にしてください。

GUIプログラムのリモート実行の前にWindows起動毎に準備が必要です。
[スタート]メニューの[Cygwin-X]から[XWin Server]を実行すると
タスクトレイに[黒いXのアイコン](マウスオンで"Cygwin/X Server:0.0"と表示)と
[緑のXのアイコン](同じく"X applications menu on :0")が現れるので、
[緑のXのアイコン]を右クリックして現れるメニューの
[システムツール]-[XTerm]を選択します。
すると特殊なターミナル(環境変数が調整されている)が起動するので、
$ ssh -Y <接続先マシンのホスト名/IPアドレス>
を実行します。単に'-Y'オプション付きでリモートログインするだけです。
ログイン後に適当なGUI付きアプリケーションを実行すれば、
接続先マシンで処理しつつ、GUIを手元で扱えます。
例えばxeyesなら
$ xeyes
でOKです。管理者権限が必要なアプリ(例 gparted)も
$ sudo gparted
で実行可能です。
これらは予めローカルでログインしておく必要はありません。
これで接続対象をヘッドレスにしても、
つまりモニタの電源を全く入れなくても使用に支障はありません。
ただしリモートで電源を入れるには別の仕組みが必要なので、
それはまた別の機会にでも。

0 件のコメント:

コメントを投稿