2016年9月22日木曜日

startx の Xorg で 6000 を Listen させる

何年ぶりかで手元の Fedora で startx で起動した X サーバにリモートの画面を表示させ
ないといけない状況になった。
ssh  の -X とか -Y じゃなくて、生の X プロトコルで。
かなりレガシィなお題なので余裕かましてたらハマったのでメモ。

とりあえず xhost + して、リモート側に DISPLAY 変数設定してリモートで
firefox 起動。普通に firefox の画面が出るかと思ったら、あれ?出ない。

昔だったら普通にできたよねぇ、、、と思いつつ ss -tan したら 6000 LISTEN が無い。 
しかも ps すると Xorg に -nolisten tcp がついてる。

あぁ、そういや startx になんかオプション必要だったっけ。と、/usr/bin/startx を読み解
くと「--」のあとに -listen をつければ良いらしいと。

startx -- -listen

これで -nolisten 消えたろうと ps したらまだついてる。まさか...
 $ which startx
alias startx='/usr/bin/startx -- -nolisten tcp'
    /usr/bin/startx
なんだよそれ。とりあえず \startx -- -listen で起動したら -nolisten 消えたぞと。
これで良いだろうと思いまたリモートから firefox 起動したけど X に接続できないエラー。
また ss -tan したら 6000 LISTEN してないじゃん。えーー?
「Xorg -listen tcp」で確認したら 6000 は LISTEN できてる。
んーーー、こりゃ startx の問題だなぁと。

なんやら、/usr/bin/startx の中を見ると、~/.xserverrc がそのまま X のサーバとして
実行されてるので、ここにいろいろ書いてみた。
 #!/bin/sh
 /usr/bin/Xorg -listen tcp
しかし parse_vt_settings: Cannot open /dev/tty0 (No such file or directory)
などというエラー。もう面倒なのでこれを手がかりにググる。

 https://bbs.archlinux.org/viewtopic.php?id=205959

上記発見。~/.xserverrc を以下の内容にしてやっとのことで 
 #!/bin/sh
exec /usr/bin/X -listen tcp vt${XDG_VTNR} "${@}"
いやいや、なんだか基本的なことなのにトラップが多かったなぁ。
しかし X で飛ばした firefox の遅いこと。これはまた後で調べよう...




1 件のコメント:

  1. クライアントからssh -Xで接続すればポート開放は不要です。

    返信削除