Arch LinuxでDebianベースのchroot環境を作成し、debootstrap
次のように入力しました。
#!/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.
シャットダウンchroot
(sshd
procおよびdev / ptsを停止、マウント解除)しても、ホストに新しい端末が復元されません。
私がここで何を見逃しているのでしょうか?
答え1
これを実行すると、mount -t devpts devpts $CHROOT/dev/pts
chrootにdevptsファイルシステムの別のインスタンスがマウントされます。 chrootでdevptを有効にするもう1つの方法は、バインドマウントを使用することです。これにより、ファイルシステムの同じインスタンスが新しい場所で使用可能になります。バインドマウントは、ファイルの代わりにマウントポイントに対してのみハードリンクを生成するのと同じです。
mount --bind /dev/pts "$CHROOT"/dev/pts
別のdevptsインスタンスは同じファイルを共有します(ターミナルを作成または削除したり、そのメタデータを変更したりすると、すべてのインスタンスに反映されます)。しかし、動作を妨げる背面には明らかにいくつかの違いがあります。バインドマウントを使用すると、同期する必要があるすべての項目が同じファイルシステムではなく同じファイルシステムであるため、同期されます。