Подскажите, пожалуйста, как решить такую проблему: нужно чтобы при старте 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 tty12: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 или нет ?Наталья
В вашем случае необходимо создать пользователя (не 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