1
edit
Changes
no edit summary
== Symptoms ==
<pre>
error: open pty: No such file or directory
</pre>
== Solutions ==
=== Using strace ===
You can use [http://linux.die.net/man/1/strace strace] to analyse the command further:
<pre>
# strace -ff vzctl enter 101
....
fstat64(...st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0)...) fail
....
</pre>
Recompile the kernel with the following option:
CONFIG_LEGACY_PTYS=y
=== LEGACY_PTYS ===
==== Temporary fix ====
''Note: This is a temporary fix so you can enter the VE.''
* Create the LEGACY_PTYS devices:
vzctl exec 101 /sbin/MAKEDEV tty
vzctl exec 101 /sbin/MAKEDEV pty
vzctl exec 101 mknod --mode=666 /dev/ptmx c 5 2
vzctl enter 101
==== Permanent fix with udev ====
* For a permanent fix with udev, you will need to force udev to make LEGACY_PTYS:
cat > /etc/udev/makedev.d/51-udev.nodes
# These device have to be created manually
tty0
tty1
tty2
tty3
....
ttyp0
ttyp1
ttyp2
ttyp3
....
ptyp0
ptyp1
ptyp2
ptyp3
....
==== Permanent fix without udev ====
* Alternatively, you can disable udev:
Edit the ''/etc/rc.d/rc.sysinit'' file and comment out the ''/sbin/start_udev'' line
Or you can run the following command:
sed -i 's|/sbin/start_udev|#/sbin/start_udev|g' /etc/rc.d/rc.sysinit
''Warning'' Updates to the package which owns this file may revert your changes.
''Note'' This was tested with CentOS VE.
=== Debian only ===
* Enter the VE manually
CTID=101
vzctl exec $CTID "mount -t devpts devpts /dev/pts"
vzctl enter $CTID
* Remove udev using apt
CTID=101
vzctl exec $CTID apt-get remove udev
vzctl restart $CTID
=== Older Slackware ===
Check that /dev/pts is mounted under the container as a devpts filesystem:
vzctl exec VEID mount
If it is not, try this immediate fix:
vzctl exec VEID mount /dev/pts
You should now be able to enter the VPS. You will need to fix /etc/rc.d/rc.S and/or /etc/fstab to ensure that /dev/pts is mounted in the boot process.
== See also ==