getty используется для наблюдения за состоянием последовательной линии, и при поступлении звонка он передает звонящего соответствующей программе. Есть два getty, коотрые очень хорошо работают с ifmail - getty_ps и mgetty+sendfax-0.98. Я использую mgetty+sendfax, так как он работает и с uucp, и с fido звонками.
Чтобы использовать mgetty вам нужно отредактировать его несколько конфигурационных файлов, но из них только один самый важный - это файл login-config.dist . Вот мой файл /etc/mgetty-0.98/login-config.dist :
# login.config
#
# This is a sample "login dispatcher" configuration file for mgetty
#
# Format:
# username userid utmp_entry login_program [arguments]
#
# Meaning:
# for a "username" entered at mgettys login: prompt, call
# "login_program" with [arguments], with the uid set to "userid",
# and a USER_PROCESS utmp entry with ut_user = "utmp_entry"
#
# username may be prefixed / suffixed by "*" (wildcard)
#
# userid is a valid user name from /etc/passwd, или "-" to not set
# a login user id и keep the uid/euid root (needed for /bin/login)
#
# utmp_entry is what will appear in the "who" listing. Use "-" to not
# set an utmp entry (a must for /bin/login), use "@" to set it to the
# username entered. Maximum length is 8 characters.
#
# login_program is the program that will be exec()ed, with the arguments
# passed in [arguments]. A "@" in the arguments will be replaced with the
# username entered. Warning: if no "@" is given, the login_program has
# no way to know what user name the user entered.
#
#
# SAMPLES:
# Use this one with my Taylor-UUCP patch (taylor104.p1) и Taylor-UUCP
# passwd files. (Big advantage: tuucp can use the same passwd file for
# serial dial-in и tcp dial-in [uucico running as in.uucpd]).
#
#U* uucp @ /usr/lib/uucp/uucico -L @
#
# If you use Taylor UUCP 1.05, use that:
#
U* uucp @ /usr/lib/uucp/uucico -l -u @
#
# Use this one for fido calls (login name /FIDO/ is handled specially)
#
# You need Eugene Crosser's "ifmail" package for this to work.
# mgetty has to be compiled with "-DFIDO" in the options list, otherwise a
# fido call won't be detected.
#
/FIDO/ fnet uucp /usr/lib/ifmail/ifcico @
#
#
# An example where no login name in the argument list is desired:
# automatically telnetting to machine "smarty" for a given login name
#
#telnet-smarty gast telnet /usr/bin/telnet -8 smarty
#
# This is the "standard" behaviour - *dont* set a userid или utmp
# entry here, otherwise /bin/login will fail!
# This entry isn't really necessary: if it's missing, the built-in
# default will do exactly this.
#
* - - /bin/login @
Если вы используете getty_ps, не забудьте добавить #define FIDO в tune.h. Вам также надо будет определить конфигурационный файл для ttyS устройства, которое вы используете. Примеры есть в /etc/default для uugetty и в архиве. Вот мой /etc/default/uugetty.ttyS1:
ALTLOCK=cua1
ALTLINE=cua1
INITLINE=cua1
TIMEOUT=60
DEBUG=110
INIT="" ATZS0=1\r OK
# Its very important to include these two lines. Otherwise fido callers
# will go undetected. Also some older versions of uugetty are case sensitive
# so watch for this in the example configs that accompanied your archive.
FIDO=/usr/lib/ifmail/ifcico
EMSI=yes
WAITFOR=RING
CONNECT="" ATA\r CONNECT
DELAY=1
HANGUP=yes
Далее вам нужно добавить строку в ваш /etc/inittab для вашего getty.
Вот мой /etc/inittab :
# Serial lines
# This is my mgetty line for com port 2 .
S1:35:respawn:/usr/sbin/mgetty -D -s 38400 ttyS1
#
# You can add this line instead to your inittab if your using uugetty
#S1:35:respawn:/sbin/uugetty -d /etc/default/uugetty.ttyS1 -t 180 ttyS1 38400
Первое поле определяет устройство. Вторая runlevel`ы, для которых действительны
значения остальных полей. Третье поле 'respawn:' перезапускает программы, если
она завершит свою работу. Четвертое поле - путь и имя программы для запуска и
параметры, нужные для запуска getty. Более подробно описано в 'man inittab'.