встроенный Linux с автоматическим входом в busybox

Мне нужно сделать приложение QT для запуска при запуске встроенной системы Linux, которую я сделал. У меня есть доступ к системе через последовательный порт ttySAC0. Я попытался добавить приложение в inittab, оно запускается, но tslib не работает, вероятно, потому, что он не может найти необходимые ему переменные среды, потому что я устанавливаю эти переменные среды в файле /etc/.profile, который запускается после пользователя авторизоваться. Мне нужно автоматически войти в систему пользователя, чтобы переменные среды были установлены так, чтобы tslib работал, или способ установить эти переменные среды без входа в систему. Система сделана с помощью buildroot и busybox.


person Islam A. Hassan    schedule 14.06.2012    source источник
comment
Привет @ iah.vector, вы можете написать сценарий в /etc/init.d/S99_your_script. Переменные среды могут быть установлены внутри этого сценария, после чего вы можете вызывать приложение Qt в фоновом режиме.   -  person Dien Nguyen    schedule 18.06.2012


Ответы (2)


Разобрался, сделал вот такой сценарий оболочки:

#!/bin/sh
#
#Sets necessary environment variables and runs the desktop
#

export TSLIB_TSDEVICE=/dev/touchscreen-1wire
export TSLIB_TSEVENTTYPE=INPUT
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_PLUGINDIR=/usr/lib/ts/
export TSLIB_CONSOLEDEVICE=none
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_CALIBFILE=/etc/pointercal
export LD_LIBRARY_PATH=/usr/lib
export QTDIR=/usr/lib/qt
export QWS_MOUSE_PROTO=tslib:/dev/touchscreen-1wire

/path/to/application -qws

Затем сделал его исполняемым с помощью:

$chmod +x startup.sh

затем добавил эту строку в inittab:

tty1::once:/path/to/startup.sh

Теперь, когда я загружаюсь, приложение отлично работает с tslib, и я все еще получаю доступ через последовательную линию, когда мне нужно.

person Islam A. Hassan    schedule 19.06.2012

Напишите /etc/init.d/S99myapp скрипт, который запускает ваше приложение после выполнения необходимых export VARIABLE=value команд для определения всех необходимых вам переменных среды. Вы можете посмотреть, например, package/stunnel/S50stunnel в источниках Buildroot для примера initscript.

person Thomas Petazzoni    schedule 18.06.2012
comment
Я написал сценарий rc с именем S99exportEnvVars, содержащий следующее: #! / Bin / sh # # Экспорт переменных среды для QT и TSLib # case $ 1 в начале) echo Экспорт переменных среды TSLib ... export TSLIB_TSDEVICE = / dev / touchscreen-1wire echo Экспорт QT переменные среды ... export QTDIR = / usr / lib / qt export QWS_MOUSE_PROTO = tslib: / dev / touchscreen-1wire ;; останавливаться) ;; перезапустить | перезагрузить) ;; *) эхо недействительно! exit 1 esac exit $? Когда я перезагрузился, я получил повторяющиеся строки, что означает, что скрипт работает, но когда я вошел в систему, я обнаружил, что env vars не установлены. - person Islam A. Hassan; 19.06.2012
comment
Это потому, что ваш экспорт зависит от терминала. Они не остаются такими, как когда вы помещаете их в свой .bashrc файл. - person VivienG; 04.03.2014