Robert Schwebel robert@schwebel.de writes:
I just had some time to investigate the problem a little bit further. It seems that lshd tries to open a pty, an strace contains this:
...
open("/dev/ptya0", O_RDWR|O_NOCTTY) = -1 ENOENT (No such file or directory) open("/dev/ptya1", O_RDWR|O_NOCTTY) = -1 ENOENT (No such file or directory) open("/dev/ptya2", O_RDWR|O_NOCTTY) = -1 ENOENT (No such file or directory)
The system is based on devfs which has the ptys in /dev/pty/; The device nodes itself are called m0..m99.
Do you have a /dev/ptmx, or is there anyway you can configure your system to support UNIX98-style ptys? Then HAVE_UNIX98_PTYS should be defined in your config.h, and the code looping over pty names should never run.
Which device nodes does lsh expect? Can I simply link the existing ones to the correct paths, and if yes, which ones are the equivalents to the /dev/ptyxx and /dev/ttyxx entries?
lshd only looks for pty:s with two characters after the "/dev/pty" or "/dev/tty". Which characters are used is determined by PTY_BSD_SCHEME_FIRST_CHARS and PTY_BSD_SCHEME_SECOND_CHARS. Look what values you have in config.h, and see if there's any way the corresponding configure tests can be improved. It uses things like
ls /dev/pty* | cut -c 10-10 | sort | uniq | tr -d '\n'
to figure out what to use.
----------8<---------- fork() = 83 close(7lshd: unix_user: exec failed (errno = 2): No such file or directory ) = 0 --- SIGCHLD (Child exited) --- ----------8<----------
lshd execs user processes via the helper program $prefix/sbin/lsh-execuv. Do you have that installed?
Regards, /Niels