ホスト上のDebian chrootブロッキングPTTY


8

debootstrapArch Linuxの下でDebianベースのchroot環境を作成し、次のような生活で満たしています。

#!/bin/sh

mount -t proc proc $CHROOT/proc
mount -t devpts devpts $CHROOT/dev/pts

chroot $CHROOT /bin/bash --login -c "/etc/init.d/ssh start"

問題は、上記のスクリプトを実行した後、ホストシステムで新しい端末を開くことができなくなったことです。

urxvt: can't initialize pseudo-tty, aborting.

シャットダウンchrootsshdprocとdev / ptsの停止、アンマウント)は、ホストに新しいターミナルを戻しません。

ここで何が欠けていますか?


1
ls -l /dev/pts前後の出力を投稿してください。暗闇で刺す:mount --bind /dev/pts $CHROOT/dev/pts何か良いですか?独自にビルドする代わりにschrootを使用すると、多くの労力を節約できます。
Gilles 'SO-邪悪なことをやめなさい'

mount --bindトリックをやった、ありがとう!;)の出力にls -l /dev/pts違いはありませんでした。
lynix 2013

回答:


4

を実行するmount -t devpts devpts $CHROOT/dev/ptsと、devptsファイルシステムの個別のインスタンスがchrootにマウントされます。devptsをchrootで使用できるようにする別の方法は、バインドマウントを使用することです。これにより、ファイルシステムの同じインスタンスを新しい場所で使用できるようになります。バインドマウントはハードリンクを作成するようなもので、ファイルではなくマウントポイントに対してのみです。

mount --bind /dev/pts "$CHROOT"/dev/pts

devptsの個別のインスタンスは同じファイルを共有します(ターミナルを作成または削除するか、そのメタデータを変更すると、すべてのインスタンスに反映されます)。ただし、内部的には明らかに違いがあり、機能しません。バインドマウントは、同じファイルシステムであり、同一のファイルシステムではないため、同期する必要があるすべてのものが確実に同期されるようにします。


1
QNAPのQTS LinuxベースのOSで実行されているDebian chrootで反対の問題が発生しました。バインドマウントを使用したため、画面が失敗し、代わりにdevptsマウントに切り替えて修正しました。
markhep
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.