Latest revision |
Your text |
Line 1: |
Line 1: |
− | == Symptoms ==
| + | '''Problem''': VPS created succesfully and started. |
− | | + | But when trying to do |
| + | <pre> |
| + | vzctl enter 101 |
| + | </pre> |
| + | you get |
| <pre> | | <pre> |
− | error: open pty: No such file or directory
| + | VPS enter failed(?) |
| </pre> | | </pre> |
| | | |
− | == Solutions ==
| + | Using strace, you see: |
− | | |
− | === Using strace ===
| |
− | | |
− | You can use [http://linux.die.net/man/1/strace strace] to analyse the command further:
| |
| <pre> | | <pre> |
− | # strace -ff vzctl enter 101 | + | # strace -ff vzctl enter |
| .... | | .... |
| fstat64(...st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0)...) fail | | fstat64(...st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0)...) fail |
Line 17: |
Line 17: |
| </pre> | | </pre> |
| | | |
| + | '''Solution''': |
| Recompile the kernel with the following option: | | Recompile the kernel with the following option: |
− | CONFIG_LEGACY_PTYS=y
| + | <pre> |
− | | + | CONFIG_LEGACY_PTYS=y |
− | === LEGACY_PTYS ===
| + | </pre> |
− | | |
− | ==== 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 == | | == See also == |