Changes

Jump to: navigation, search

Container enter failed

362 bytes added, 19:30, 30 September 2014
no edit summary
'''Problem''': container created succesfully and started.== Symptoms ==But when trying to do
<pre>
vzctl enter 101 </pre>you get<pre>container enter failed(?)error: open pty: No such file or directory
</pre>
== Solutions == === Using strace, you see=== You can use [http://linux.die.net/man/1/strace strace] to analyse the command further:
<pre>
# strace -ff vzctl enter101
....
fstat64(...st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0)...) fail
</pre>
'''Solution''':
Recompile the kernel with the following option:
<pre> 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/preMAKEDEV 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.
'''Other solutions''':=== Debian only ===
1) enter * Enter the VE manually CTID=101 manually creating the LEGACY_PTYS devicesvzctl exec $CTID "mount -t devpts devpts /dev/pts" vzctl enter $CTID
<pre>* Remove udev using aptvzctl exec CTID=101 /sbin/MAKEDEV tty vzctl exec 101 /sbin/MAKEDEV pty$CTID apt-get remove udev vzctl enter 101</pre>restart $CTID
2A) If you want udev in VE, save the changes forcing udev to make LEGACY_PTYS:=== Older Slackware ===
<pre>cat > Check that /etcdev/udev/makedev.d/51-udev.nodes# These device have to be created manuallytty0tty1tty2tty3....ttyp0ttyp1ttyp2ttyp3....ptyp0ptyp1ptyp2ptyp3....</pre>pts is mounted under the container as a devpts filesystem:
vzctl exec VEID mount
2B) If you think it is better disable udev in VEnot, comment out in the VE the linetry this immediate fix:<pre>/sbin/start_udev</pre>in<pre>/etc/rc.d/rc.sysinit</pre>
.. <b>however<vzctl exec VEID mount /b> updates to the package which owns this file may revert your changes, so you must take steps to guard against this.dev/pts
Restart You should now be able to enter the VE VPS. You will need to fix /etc/rc.d/rc.S and make the devices with MAKEDEV:<pre>vzctl exec 101 /sbinor /MAKEDEV ttyvzctl exec 101 etc/sbinfstab to ensure that /MAKEDEV ptyvzctl enter 101<dev/pre>pts is mounted in the boot process.
3) Debian : enter the VE manually (the 1 && 2 solutions did'nt work on my VE debian-5.0)
<pre>
CTID=101
vzctl exec $CTID "mount -t devpts devpts /dev/pts"
vzctl enter $CTID
</pre>
4) Debian : Simply remove udev using apt
<pre>
CTID=101
vzctl exec $CTID apt-get remove udev
vzctl restart $CTID
</pre>
== See also ==
1
edit

Navigation menu