URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 81906
[ Назад ]

Исходное сообщение
"Запуск собственной программы вместо getty (FreeBSD)"

Отправлено nn_khv , 10-Сен-08 07:00 
Подскажите, пожалуйста, как решить такую проблему: нужно чтобы при старте FreeBSD на одной из виртуальных консолей запускалась вместо getty самописанная программка my_prog, которая рисует на экране некоторую табличку с данными (используя окна ncurses ) и ждёт нажатия определённых клавиш (getch();).

Раньше вместо FreeBSD стоял Linux, и там всё было очень просто - в /etc/inittab вместо
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
и т.п.

писали
1:2345:respawn:/sbin/mingetty tty1

2:2345:respawn:/usr/local/bin/my_prog
3:2345:respawn:/sbin/mingetty tty3


и всё работало.

После того, как перекомпилировали my_prog под FreeBSD, она нормально запускается только тогда, когда сначала залогируешься в какой-нибудь виртуальной консоли, а потом её запустишь руками /usr/local/sbin/my_prog

а если я её прописываю в /etc/ttys :
ttyv0   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv1   "/usr/local/sbin/my_prog"       cons25  on  secure
ttyv2   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv3   "/usr/libexec/getty Pc"         cons25  on  secure

то после старта если посмотреть ps -A , там есть строчка :
815 ?? S 0:00.44 /usr/local/sbin/my_prog ttyv1
но система вообще не реагирует на Alt+F2...

Очевидно я что-то не понимаю в процессах, которые запускаются на виртуальных консолях. Как мне организовать такой экран ? Каждый раз логироваться в системе после перезапуска невозможно - эта машина находится на удалении. Попробовала запускать через cron на консоли - в /etc/crontab прописала:
@reboot                        root    /usr/local/sbin/my_prog

- стартует, но экран не рисует - начинает только, но вместо рамочки ( my_win=newwin(23,80,1,0); box(my_win,0,0); ) рисует строчку "+--------------------------------------"
и всё - виснет - реагирует только на Ctrl+C - вываливается.

Нашла в интернете советы по запуску программки rungetty, но такого порта для FreeBSD нет, т.е она только для Линукса написана, а в Линуксе у нас и так всё работает...

Подскажите, пожалуйста, возможно это сделать на FreeBSD или нет ?

Наталья


Содержание

Сообщения в этом обсуждении
"Запуск собственной программы вместо getty (FreeBSD)"
Отправлено LukLos , 10-Сен-08 11:20 
В вашем случае необходимо создать пользователя (не root-a) От имени которого будет запускаться программа. И настроить процедуру автоматической регистрации пользователя в системе используя autologin.
Программу поставить пользователю в качестве сшела (ну или настроить ее автозапуск другим доступным способом).

----------- Далее выписка из инструкции по настройке.----------

Теперь, чтобы при включении компьютера выполнялся автоматический вход пользователя tuser . Создадим тип терминалла getty, добавив следующие строки в файл /etc/gettytab :

#
# autologin - automatically log in as trusted user
#

tuserlogin|tu.9600:\
        :al=tuser:tc=std.9600:


ГДЕ tuser - имя пользователя, от именим которого будет запускаться программа.

Теперь отредактируем файл /etc/ttys, задав вход на нулевой (или нужной) консоли и отключим лишиние консоли для экономии памяти:

ttyv0   "/usr/libexec/getty tuserlogin" cons25r on  secure
#ttyv0  "/usr/libexec/getty Pc  "       cons25r on  secure
# Virtual terminals
ttyv1   "/usr/libexec/getty Pc"         cons25r on  secure
ttyv2   "/usr/libexec/getty Pc"         cons25r off secure
ttyv3   "/usr/libexec/getty Pc"         cons25r off secure
ttyv4   "/usr/libexec/getty Pc"         cons25r off secure
ttyv5   "/usr/libexec/getty Pc"         cons25r off secure
ttyv6   "/usr/libexec/getty Pc"         cons25r off secure
ttyv7   "/usr/libexec/getty Pc"         cons25r off secure
ttyv8   "/usr/X11R6/bin/xdm -nodaemon"  xterm   off secure