web-dev-qa-db-ja.com

プレーンchroot内でXorg-serverを起動する方法は?

私が走るときchroot /somepath /usr/bin/startxevdevの問題のように見えるものがあります...(正しく-バインドマウントされた/ dev// dev/pts/dev/shm/proc/sys/tmp)

画面が表示され、プログラムは正常に実行されますが、マウスもキーボードも使用できず、ローカル端末に切り替えることができず、ハードリブートが必要になります。

これの原因は何ですか?
サーバーを実行することで先に進むための解決策はありますか?

再現するための可能なステップ(すべてのディストリビューションで作業)

  • linuxディストリビューションのルートディレクトリを、ディストリビューションを実行しているフォルダにコピーします。

  • すべてを正しくバインドマウント(/ dev/pts/var/run/dev/shm/sys/kernel/debugfs ...)

  • chrootcommandでシェルを実行します。

  • X11サーバーがすでに実行されていないことを確認してからlaunchxinit /usr/bin/some X11 program

これで、コンピューターをハードリブートできます。 (リモートアクセスを設定しなかった場合)

6
user2284570

この質問は古いと思いますが、参考までに:

画面が表示され、プログラムは正常に実行されますが、マウスもキーボードも使用できず、ローカル端末に切り替えることができず、ハードリブートが必要になります。

私は正しく--bindマウントされた/ dev// dev/pts/dev/shm/proc/sys/tmp

上記をマウントすることに加えて、マウスとキーボードを動作させるために bind mount/run/udevもしなければなりませんでした私のchroot。私はnotxorg.conf *を使用しましたが、Xorgは私の設定を正しく検出できました。

私の/etc/schroot/default/fstabのエントリ:

/run/udev /run/udev none rw,bind 0 0

標準のchrootを実行している場合は、代わりに/etc/fstabに配置できます。

/run/udev /path/to/chroot/run/udev none rw,bind 0 0

...またはmount --bindそれ。


*まあ-最初はxorg.confを使ってみましたが、うまくいきませんでした。私も追加してみました

xorg.confのSection "ServerFlags" Option "AutoAddDevices" "false" EndSection。これにより、マウスは機能しましたが、キーボードは機能しませんでした。

6
transistor1

Gentoo wikiに、必要な手順を詳しく説明した記事があります。
HOWTO_startx_in_a_chroot
この記事では、最初にchrootを設定する方法、次にchrootを入力してメインシステムを設定する方法について詳しく説明しています。

別のそのような記事はArchLinuxから来ています:
chrootからのグラフィカルアプリケーションの実行

Ubuntuの詳細:
chroot内のグラフィカルアプリケーションへのアクセス
サウンドとX11を使用してchrootジェイルを作成する

KDEの場合: Kde4schroot 。それが要求されているものなので、ここにいくつかの詳細があります:

/etc/schroot/schroot.confを:に置き換えます

# schroot chroot definitions.
# See schroot.conf(5) for complete documentation of the file format.
#
# Please take note that you should not add untrusted users to
# root-groups, because they will essentially have full root access
# to your system.  They will only have root access inside the chroot,
# but that's enough to cause malicious damage.
#
[experimental]
type=directory
description=Debian experimental (unstable)
priority=4
groups=sbuild,root
users=kde4
#root-groups=root,sbuild
aliases=unstable,default
#device=/dev/hda_vg/experimental_chroot
mount-options=-o atime,sync,user_xattr
location=/home/chroot
run-setup-scripts=true
run-exec-scripts=true

次に、/etc/schroot/mount-defaultsを置き換えます:

# mount.defaults: static file system information for chroots.
# Note that the mount point will be prefixed by the chroot path
# (CHROOT_PATH)
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev            /dev            none    rw,bind         0       0
/dev/pts        /dev/pts        none    rw,bind         0       0
tmpfs           /dev/shm        tmpfs   defaults        0       0
/home           /home           none    rw,bind         0       0
/tmp            /tmp            none    rw,bind         0       0

Kde4ユーザーに切り替えます:

su - kde4

次に、schrootしてrootpasswdと入力します。

schroot -u root

Lennyと実験的なリポジトリを/etc/apt/sources.listに追加します。

echo "deb http://ftp.us.debian.org/debian experimental main non-free contrib" >> /etc/apt/sources.list
echo "deb http://ftp.us.debian.org/debian lenny main" >> /etc/apt/sources.list

/etc/apt/preferencesを編集し、以下を追加して、固定を設定します。

 Package: *
 Pin: release a=experimental
 Pin-Priority: 800
 Package: *
 Pin: release a=unstable
 Pin-Priority: 400
 Package: *
 Pin: release a=lenny
 Pin-Priority: 200

次に、updateを実行してkde4をインストールします。

aptitude update && aptitude install -t experimental kde4 xorg

Kdmをインストールします。

aptitude install -t experimental kdm

次に、/ etc/kde4/kdm/kdmrcを編集し、StaticServersとReserveServersを変更します。

StaticServers=:1
ReserveServers=:2,:3

または、gdmを使用します(DISPLAY:0がすでに使用されている場合、gdmは別のディスプレイを使用するように要求します。

aptitude install gdm

完全なkde4セッションを実行するには、現在のXセッションの外部にあるテキスト仮想端末(vt)、たとえばvt2(ctrl-alt-F2)に移動します。完全なkde4セッションにログインするには、以下を実行します。

su - kde4
schroot
su (use root passwd here)
invoke-rc.d kdm start

これで、kdmが表示され、kde4からkde4としてログインできるようになります。
詳細については、上記の記事を参照してください。

2
harrymc