Roger Leigh wrote:
"Thomas H. George" <lists@tomgeorge.info> writes:I installed this chrooted version of Etch as described in Debian Reference - Debian tips, sections 8.6.35.1-4. From the console (Ctl-Alt-F8) I can enter commands and edit files with no problems. From X-Window (CTL-ATL-F9) I can launch programs - example: Gimp2.2 - and access the internet - Gnome Web Browser 2.14.3 - but I can't do any system administration or open a working terminal window.Perhaps there is an ownership or permission issue that is the root of the terminal problem? If so, I haven't been able to pin it down.You need to have /dev/pts mounted inside the chroot in order to set up the pseudo-terminal master/slave pair needed by the terminal emulator to run a virtual terminal device.
I have recently been experimenting with a similar setup (running etch but with a chrooted testing - lenny - installation on a separate partition). I have the same problem as the OP even though I have mounted (--bind) /dev from the 'real' installation. I don't understand why this isn't good enough - shouldn't this bring in /dev/pts as well? Or is there some reason why you have to mount that explicitly as well? Also, I have written a short script to automatically prepare and begin a chrooted session, which I have pasted below both in case anyone else finds it useful, and for constructive criticism from anyone with more skill than I have with this stuff who wants to comment. To use the script, first edit the line 'JAIL_ROOT=/jail' to point to your chrooted installation, then save it in /usr/local/bin on the non-chrooted system. Then start a root terminal session as usual, and call the script. It mounts /tmp/.X11-unix from the host system into the chrooted one, allowing you to start X applications from the command line and have them appear on your normal X display (probably best to do 'su username' from the chrooted prompt first if you want to do this.) andy #!/bin/bash # # testing-shell - start a root shell chrooted to the testing release. # must be run as root JAIL_ROOT=/jail # modify this to point to your chrooted directory. PROGRAM=$0 if [ `id -u` -ne 0 ] ; then echo "Must be run as root" exit fi if [ `ps ax | grep $PROGRAM | grep -v grep | wc -l` -gt 2 ] ; then # n.b. -gt 2 above is because the process forks so you get 2 lines in the output. echo "${PROGRAM##*/} seems to be running already - not preparing the chrooted system." else echo "Preparing the chrooted system..." mount /dev $JAIL_ROOT/dev -o bind mount proc -t proc $JAIL_ROOT/proc mount /tmp/.X11-unix $JAIL_ROOT/tmp/.X11-unix -o bind cp /tmp/.X0-lock $JAIL_ROOT/tmp fi cp /etc/hosts $JAIL_ROOT/etc/hosts echo "--- entering chrooted system --->" echo chroot $JAIL_ROOT /bin/bash if [ `ps ax | grep $PROGRAM | grep -v grep | wc -l` -gt 2 ] ; then echo "${PROGRAM##*/} still running - not taking down chrooted system." else # last one out clean up... echo "Taking down the chrooted system..." umount $JAIL_ROOT/dev umount $JAIL_ROOT/proc umount $JAIL_ROOT/tmp/.X11-unix rm $JAIL_ROOT/tmp/.X0-lock fi echo "<--- returned to root system ---" echo