Open main menu

OpenVZ Virtuozzo Containers Wiki β

Difference between revisions of "Container enter failed"

(Temporary fix, added in the mknod line for ptmx which may not get created)
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
 +
== Symptoms ==
  
 +
<pre>
 +
error: open pty: No such file or directory
 +
</pre>
  
 
== Solutions ==
 
== Solutions ==
Line 73: Line 77:
 
  vzctl exec $CTID apt-get remove udev
 
  vzctl exec $CTID apt-get remove udev
 
  vzctl restart $CTID
 
  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 ==
 
== See also ==

Latest revision as of 19:30, 30 September 2014

Contents

SymptomsEdit

error: open pty: No such file or directory

SolutionsEdit

Using straceEdit

You can use strace to analyse the command further:

# strace -ff vzctl enter 101
....
fstat64(...st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0)...) fail
....

Recompile the kernel with the following option:

CONFIG_LEGACY_PTYS=y

LEGACY_PTYSEdit

Temporary fixEdit

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 udevEdit

  • 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 udevEdit

  • 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 onlyEdit

  • 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 SlackwareEdit

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 alsoEdit