chrootをインストールした後、x11に接続するときに問題が発生しました。これは通常の使用例だと思いますが、この使用例について具体的なことは何も見つかりませんでした。
# debootstrap stable /srv/stable/
...
# chroot /srv/stable/ xeyes
No protocol specified
Error: Can't open display: :0
まず、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