Saya telah membuat lingkungan chroot berbasis Debian menggunakan di debootstrap
bawah Arch Linux, dan mengisinya dengan kehidupan seperti ini:
#!/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"
Masalahnya adalah setelah menjalankan skrip di atas, saya tidak dapat lagi membuka terminal baru pada sistem host:
urxvt: can't initialize pseudo-tty, aborting.
Mematikan chroot
(menghentikan sshd
, melepas proc dan dev / pts) tidak membawa kembali terminal baru pada host.
Apa yang kulewatkan di sini?
ls -l /dev/pts
sebelum dan sesudah. Menusuk dalam gelap: apakahmount --bind /dev/pts $CHROOT/dev/pts
ada yang lebih baik? Anda mungkin akan menghemat banyak upaya dengan menggunakan schroot alih-alih membangun sendiri.mount --bind
lakukan triknya, terima kasih! ;) Output darils -l /dev/pts
tidak berbeda.Jawaban:
Ketika Anda menjalankan
mount -t devpts devpts $CHROOT/dev/pts
, ini me-mount instance terpisah dari sistem file devpts di chroot. Cara alternatif untuk membuat devpts tersedia di chroot adalah dengan menggunakan bind mount, yang membuat instance sistem file yang sama tersedia di lokasi baru. Bind mounts seperti membuat tautan keras, hanya untuk mount point bukan file.Instance terpisah dari devpts berbagi file yang sama (jika Anda membuat atau menghapus terminal atau mengubah metadata-nya, itu tercermin dalam semua instance). Namun ternyata ada beberapa perbedaan di bawah kap yang membuatnya tidak berfungsi. Bind mount memastikan bahwa semua yang perlu disinkronkan disinkronkan karena itu adalah sistem file yang sama dan bukan hanya yang identik.
sumber