Member 13376650 Ответов: 2

Как заставить linux запускать только мою программу на C++?


Я пытаюсь построить робота. Я написал код на языке C++, который распознает голосовые команды пользователя и выполняет некоторые действия (показывает изображение/видео или произносит ответ на эту команду). Итак, я использовал Ubuntu-server 16.04 с оконным менеджером openbox для этого, и моя программа успешно работает на нем.

Но мой вопрос: как я могу сделать это автоматически? Я имею в виду, что сейчас я должен перейти к терминалу после загрузки моей платы(я использую плату на базе ARM), затем перейти туда, где моя программа находится "cd /home/m/", а затем выполнить ее с помощью "./my-program". Но мне понравилось, что это произошло автоматически! Я имею в виду, что моя программа начинает работать автоматически после загрузки.

Кроме того, мне нравится, когда пользователь включает моего робота, он показывает мой логотип, затем показывает изображение по умолчанию из моего кода C++, затем распознает голос пользователя и выполняет связанное с ним действие, и это будет повторяться как цикл снова(изображение по умолчанию, распознавание команд пользователя,выполняет действие, изображение по умолчанию, распознавание команд пользователя, выполняет действие и снова...).

Я выбрал Linux-сервер, потому что мне не нравилось иметь настольные или какие-либо другие распространенные приложения. Мне нравится только то, что моя ОС запускает мою программу при запуске, и пользователь не имеет никакой возможности взаимодействовать с роботом, иначе голосовые команды!

Я не знаю, как я могу настроить свой Linux на это?

Что я уже пробовал:

Я поискал его и обнаружил, что он называется Kiosk Linux. Но каждый учебник говорит о киосках веб-браузера. и я думаю, что многие из них устарели(не сработали для меня). Мне не нравится, что мой Linux запускает firefox при запуске, мне нравится, что он запускает мой код C++!

Кроме того, я новичок в Linux и мало что знаю о нем, и мне нужен простой учебник!

2 Ответов

Рейтинг:
2

Jochen Arndt

Самый простой метод-это добавление команды(команд) к /etc/rc.local (файл/местоположение зависит от дистрибутива, но Ubuntu использует его; создайте его, если он не существует). Тогда вы, вероятно, захотите запустить свою программу в фоновом режиме, используя оболочку & оператор (пробел, разделенный в конце строки):

/path_to_app [options] &

Если приложение использует X11, вы можете сказать X11, чтобы запустить приложение. См., например: Xsession - Debian Wiki[^] и CustomXSession - Ubuntu Wiki[^] . Снова используйте оболочку & оператор.

Если приложение не использует X11 (например, когда оно записывает непосредственно в буфер кадров), оно также может быть запущено как служба с помощью сценария уровня выполнения. Это распространенный метод для систем без окон в режиме киоска, но требует написания сценария уровня выполнения и подтверждения этого (зависит от метода, используемого дистрибутивом Linux).

Это методы, которые приходят мне на ум, но есть и другие.


Отображение изображения в режиме ожидания должно обрабатываться приложением. Он также может показать ваш логотип при запуске.

Если вы хотите показать свой логотип при включении системы, вам нужно изменить загрузочный заставочный образ. Это зависит от используемой системы и дистрибутива и является сложной задачей, поскольку она должна быть выполнена как можно раньше в процессе загрузки и требует, чтобы дисплей SPI был готов.

Кроме того, вы можете проверить, можете ли вы использовать Плимут - Ubuntu Wiki[^] (это может быть сложно, потому что у вас уже должен быть включен и запущен дисплей SPI).

Цитата:
Кроме того, я новичок в Linux и мало что знаю о нем, и мне нужен простой учебник!
Мы все когда-то начинали, не имея или почти ничего не зная. Но вы обычно должны понимать, что вы делаете, а не просто Койп из учебника, и должны, по крайней мере, знать самые основы о оболочке и (для вашего проекта) процессе загрузки и запуска. Это особенно относится к вашей системе, которая не является стандартным настольным компьютером, сервером или часто используется (например, Raspberry Pi), так что многие источники (например, учебные пособия) не могут быть использованы без изменений.


Member 13376650

У меня есть код C, который имеет исполняемый файл с именем "img" и представляет собой код gtk3, показывающий изображение. Я добавил эту строку в свой "etc/rc.local" : "/home/m/img &", но она не работала после загрузки!

Jochen Arndt

Требуется ли вашему приложению X11 и запускается ли оно?

Member 13376650

Да, мое приложение показывает изображение библиотеки GTK, также я добавил "startx" в свой rc.local раньше.

Member 13376650

Я попробовал Ubuntu custum Xsession до шага 8 с этим файлом ~/.xinitrc:

#!/usr/bin/env bash
/главная страница/m/img &
exec openbox-сессия


Но мой ЖК-дисплей не работал после перезагрузки!

Jochen Arndt

Вы должны загрузить модуль драйвера ЖК-дисплея.

Рейтинг:
1

Member 13376650

Так я должен использовать какой из них? Systemd, Shels, Графический?