web-dev-qa-db-ja.com

debootstrap chrootx11はディスプレイ0を開くことができませんプロトコルエラーはありません

chrootをインストールした後、x11に接続するときに問題が発生しました。これは通常の使用例だと思いますが、この使用例について具体的なことは何も見つかりませんでした。

# debootstrap stable /srv/stable/
...
# chroot /srv/stable/ xeyes
No protocol specified
Error: Can't open display: :0
1
ThorSummoner

まず、x11クライアントはソケットファイル(通常は/tmp/.X11-unix/X0)を介してx11サーバーと通信する必要があります。

# mount -o bind /tmp/ /srv/stable/tmp/

第二に、 xauth つまり、私はxhostを混同し続けています。

a、(推奨)chroot内のプロセスのuidは、ホスト上のxauthorityを所有するユーザーのuidと一致する必要があります。たとえば、ホストユーザーのユーザー名/グループ名userid/groupidをchrootに複製できます(通常はuid/gid 1000/1000)

# chroot /srv/stable groupadd -g $(id -g) $(id -gn)
# chroot /srv/stable useradd -u $(id -u) -g $(id -g) $(id -un)

またはB、chroot内のプロセスのuidは、xauthorityファイルなどで許可されている必要があります。 chrootはchroot内でuid0として実行されるため、次のようにchroot外でuid0を認証できます。

# xhost +si:localhost:root
localhost:root being added to access control list

グラフィカルプログラムには、x11ディスプレイを使用するための接続性と権限が必要です。

# chroot /srv/stable Sudo -u $(id -un) xeyes
# chroot /srv/stable xeyes
1
ThorSummoner