Vino astra linux автозапуск

Обновлено: 04.07.2024

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

Стоит сразу заметить — чтобы программа была полноценным сервисом/демоном, она должна быть соответствующе написана (link1, link2). Впрочем такое делают не всегда, хотя возможно это и не совсем правильно.

  • записать вызов программы/скрипта запуска в /etc/rc.local в фоновом режиме (&) (в разных дистрибутивах может лежать в разных местах, например, /etc/rc.d/rc.local) с перенаправленными потоками ввода/вывода в /dev/null. Например, "/home/user/my_prog 1 > /dev/null 2 > /dev/null &". Также, дополнительно, можно воспользоваться командой nohup;
  • внести вызов в /etc/inittab, согласно правилам его оформления. В отличие от первого способа тут можно указать уровень запуска для программы;
  • написать скрипт, позволяющий запускать/останавливать/перезапускать программу как демона, а также получать информацию о её состоянии.

Второй метод довольно экзотичный, сам узнал о нём совсем недавно, хотя пишут, что им пользуются многие администраторы. Тем не менее, используя его, нельзя оперировать запущенными таким способом программами как демонами, что довольно неудобно. Да и загромождать inittab некрасиво.

Последний метод на текущий момент самый «кошерный», но немного сложнее предыдущих (возможно, на первый взгляд). Именно им представлены все системные демоны, что говорит само за себя. Потому его и рассмотрю ниже.

Также есть способ автозапуска графических программ, но его опишу в конце, отдельно от остальных, т.к. он имеет недемоническую сущность.

Сразу обмолвлюсь, что у меня стоит Debian 6 и в других дистрибутивах пути могут несколько различаться.


Автозапуск программы как демона

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

Для начала стоит заглянуть в каталог /etc/init.d. Здесь содержатся запускные скрипты всех сервисов, а также два файла для желающих написать себе такой же:

README и skeleton

skeleton содержит в себе болванку скрипта запуска с довольно подробными комментариями, а README его неплохо дополняет, не смотря на его небольшой размер. Также можно посмотреть и другие файлы и попытаться найти там что-то, что прояснит непонятную ситуацию.

В 6-ом debian`е для запускных скриптов демонов используется LSB (Linux Script Base) Init Standart. Почитать о нём подробнее можно тут. Для систем, где LSB не используется стоит взглянуть сюда.

Может показаться, что это просто лишняя информация от автора, но это не так. То, что указано здесь используется при прописывании скрипта в систему. Тут как раз пригодится файл README, который показывает, что в заголовке skeleton перечислены не все возможные параметры. Как минимум есть ещё следующие:

Все параметры и их полное описание (на английском) можно увидеть тут, а на русском тут и тут (спасибо awzrno за новые ссылки ^_^). К русскому варианту добавлю, что в Required-Start: можно прописать $all, тогда текущий скрипт будет запускаться после всех остальных (иногда это бывает нужно). Также X-Interactive: true показывает, что этот скрипт может взаимодействовать с пользователем, запросом на ввод чего-нибудь, например пароля.

Далее в skeleton идёт инициализация переменных, используемых в самом скрипте. Часть из них нужно будет настроить под свои нужды. Потом проверки на то, что сам демон существует и попытка прочитать конфигурационный файл (их имена должны быть указаны в переменных выше), далее загрузка переменных rcS, а потом идёт одна из самых интересных частей init-файла:
. /lib/lsb/init-functions
это определение LSB функций работы с логами, LSB-статусом сервиса, работы с процессом. В некоторых дистрибутивах этот файл может находиться в каталоге /etc/init.d. Названия и часть подробностей можно узнать непосредственно из комментариев к функциям в этом файле, а также тут.

Следующая часть — непосредственно тело скрипта. Тело состоит из условных частей, которые являются командами для демона: start, stop, restart/reload/force-reload, status. Кто-то выделяет их в отдельные функции, кто-то нет. На мой взгляд, функциями они выглядят эстетичнее и код более понятен. Все эти команды объединяет оператор выбора case, который и выбирает для исполнения нужный кусок кода, в зависимости от команды (параметра) с которой был запущен init-скрипт.

Таким образом для создания обычного скрипта достаточно подставить в переменные в начале файла нужные значения и, возможно, немного добавить кода в функции start/stop (например загрузку/выгрузку драйвера).

После того как файл будет готов его нужно скопировать в /etc/init.d и добавить в автозагрузку:
update-rc.d <имя_скрипта> defaults
(или insserv <имя_скрипта> для debian 6 stable и выше)
Удалить из автозагрузки можно так:
update-rc.d -f <имя_скрипта> remove
(или insserv -r <имя_скрипта> для debian 6 stable и выше)

Далее также можно использовать команды sysv-rc-conf в debian или service в fedora core, чтобы включить/выключить автозагрузку сервиса.


Автозапуск графического ПО без ввода паролей

Сама по себе реализация такой возможности понижает уровень защищённости ОС, т.к. войти может любой. Но бывают ситуации, когда это необходимо. Рассмотрю тут варианты только для двух основных графических менеджеров, т.к. других установленных под рукой нет.

Убрать запрос пароля на вход можно в центре управления (kcontrol) -> системное администрирование -> менеджер входа в систему -> удобства. Там выбрать пользователя, под которым входить (кроме рута) и поставить нужные галочки (разрешить автовход и вход без ввода пароля).

Чтобы сделать автозапуск программы нужно в каталог /home/<пользователь>/.kde/Autostart добавить ссылку на запускной файл/скрипт нужного ПО.

Тут убрать запрос пароля на вход можно также в центре управления (gnome-control-center) -> Login Screen. Там, под рутом (ткнуть на замок, ввести пароль) выбрать пользователя, под которым входить (кроме суперпользователя).

Для автозапуска программы опять же в центре управления выбрать Startup Applications -> Add и заполнить маленькую форму.

Для обоих графических менеджеров:
Если нужно запустить под обычным пользователем, но от рута, то ещё надо настроить правила в /etc/sudoers на запуск конкретной программы/набора программ от имени суперпользователя (манами рекомендуется для безопасности делать это с помощью visudo). Как это делать рассказывать не буду, т.к. в man sudoers всё хорошо расписано.

в "Запуск приложений". Однако VNC-сервер по-прежнему не запускается, как только я загружаюсь. Я должен войти в систему, чтобы сервер VNC запустился. Что я должен делать? Нужно ли создавать системный файл systemd? Если да, то как мне это сделать?

Изменить: Этот вопрос отличается от этого вопроса, потому что мне нужен Vino Server для работы, в то время как это руководство предлагает x11vncserver.

4 ответа

Создать системный модуль или службу для запуска сервера vino при запуске

Проверьте это с помощью приведенной ниже команды vinostartup.service.

Если вы не хотите ждать следующей загрузки (она уже включена), мы можем запустить службу

Должен быть включен SSH и root-доступ к серверу, затем SSH к нему с использованием вашей обычной учетной записи пользователя и отредактируйте файл /etc/gdm3/custom.conf, чтобы следующие строки в разделе [daemon] выглядели так:

Сохраните и перезагрузите сервер, выполнив команду "sudo shutdown -r now". Когда gdm перезапустится, он автоматически войдет в систему как указанный пользователь, и ваш vino-серверный процесс запустится, так что вы сможете снова войти в систему VNC. Не забудьте удалить эти строки автоматического входа из файла /etc/gdm3/custom.conf, когда вы закончите.

vino-server не мог начать с systemd успешно, он будет искать сервер mir и вернет ошибку сокета на моем рабочем столе Ubuntu. Похоже, что разработчики gnome недавно добавили в проект опцию компиляции systemd
Правильный способ сделать это - использовать загрузочное приложение в вашем настольном дистрибутиве.
Найдите программу автостарта вашего дистрибутива отсюда. База страниц автостарта archlinux в вашем собственном окружении рабочего стола

Например: я использую рабочий стол xfce
Перейдите к: Пуск-> Меню приложений-> Настройки-> Сеансы и запуск-> Автозапуск приложения и найдите "Общий доступ к рабочему столу" и включите его, или вы можете просто добавить /usr/lib/vino/vino-server к этому

Перед этим вам может понадобиться настроить сервер vino.
У меня нет панели настроек gnome на рабочем столе xfce, поэтому я запускаю

из терминала для настройки параметров подключения

Возможно, вам придется отключить шифрование, чтобы позволить клиентам VNC подключаться к вашему компьютеру.

Рассмотрим установку VNC server Linux (на примере Xubuntu 13.10), его настройку и организацию автозапуска (linux vnc autorun) при старте системы.

Тогда удаленный доступ действительно помог. Ну а теперь, о трех моментах, которые могут пригодится при настройке такого доступа в Линукс:

  1. Установка VNC server Linux
  2. Настройка VNC server Linux
  3. Установка VNC server Linux в автозапуск. В данном случае, автозапуск только на пользу, хотя, в некоторых случаях, особенно с Windows, нужно знать как отключить автозапуск сменных носителей

Теперь, обо всем по прядку в отношении ВНЦ на линукс.

11 Replies to “VNC server Linux и настройка Vino-пакета”

Прочитав статью про VNC Server Linux я узнал как установить VNC Server Linux и как настроить VNC Server Linux а так же как добавить в загрузку VNC Server Linux

Спасибо, Сергей, за оценку.

и что-то мне кажется что мой пост не пройдет модерацию.

не прошло, вот что пишет

The following packages have unmet dependencies:

Следующие пакеты имеют неудовлетворённые зависимости

Попробуйте выполнить, как указано: apt-get -f install

Эта ошибка связана не конкретно с пакетом Вино, а с зависимостями (другими пакетами), которые нужны для него. А их нет/не получается установить конкретно на Вашей системе. У меня такое было пару раз, при установке разных пакетов.

Статья полезная
правда того чего искал не нашел

для жаждущих консоли

автостарт vino в mint 19
touch /home/ВАШЮЗВЕРЬ/.config/autostart/vino.desktop
mcedit /home/ВАШЮЗВЕРЬ/.config/autostart/vino.desktop
chown ВАШЮЗВЕРЬ:ВАШЮЗВЕРЬ /home/ВАШЮЗВЕРЬ/.config/autostart/vino.desktop
chmod +rw /home/ВАШЮЗВЕРЬ/.config/autostart/vino.desktop
[Desktop Entry]
Type=Application
Exec=/usr/lib/vino/vino-server
X-GNOME-Autostart-enabled=true
NoDisplay=false
Hidden=false
Name[ru]=vino
Comment[ru]=vino
X-GNOME-Autostart-Delay=1
save & exit

может кому пригодиться
особенно когда есть доуступ SSH а к иксам доступа нет

Mike, спасибо за дополнение. На досуге вынесу в текст заметки о VNC (с сохранением Вашего авторства).

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Собственно надо вот небольшой сервачок замутить на убунте, который будет фильтровать инет и на котором будет ftp сервер крутиться. В плане iptables и прочего - оно как то осиливается. Нужно решить своего рода "оргмоменты":
1. Компьютер должен автоматом включаться при подаче на него электроэнергии (тут вроде ясно, сказано было гуглить ACPI).
2. Ввиду того что на нем стоит ubuntu-desktop, мне надо чтобы при появлении экрана входа уже запустился VNC сервер, то есть чтобы я удаленно сразу мог получить доступ, залогиниться и творить дела на сервере. Аналогично нужно мне научиться запускать такие службы сразу, как ftp-сервер, самбу наверное, iptables и т.д. То есть я хочу, чтобы он включился и начал выполнять свои функции, но автовход в систему не годится ибо нефиг кому ни попадя туда лазить.
С этими задачами я не сталкивался ибо все ж не сисадмин, гугл пока помог мало, так что прошу вашей форумной помощи.

PS. Версия убунты, если чо - 10.04.

Вчера забыл, где в линуксах логон скрипт определяется. Сейчас нагуглил тут кое-что. ЕМНИП, направление копания примерно то что надо. В принципе можно, но 1. не пробовал и не очень умею, 2. внц таки надо чтобы работал.

1. Пишешь скриптец (например myscript)
2. Пихаешь его в /etc/init.d/
3. sudo chmod +x /etc/init.d/myscript
4. sudo rc-update myscript defaults (defaults запихивает скрипт в ранлевелы 2, 3, 4 и 5, а также добавляет линки для остановки в ранлевелы 0, 1 и 6)

Читаем man update-rc.d

1. Пишешь скриптец (например myscript)
2. Пихаешь его в /etc/init.d/
3. sudo chmod +x /etc/init.d/myscript
4. sudo rc-update myscript defaults (defaults запихивает скрипт в ранлевелы 2, 3, 4 и 5, а также добавляет линки для остановки в ранлевелы 0, 1 и 6)

Читаем man update-rc.d

Да обычно ничего даже писать не придётся. Нужен ftp, например, - ставишь пакет с ftp-сервером, он уже инсталлирует готовый rc-скрипт в /init.d, конфигурируешь сервер, запускаешь, добавляешь в автозагрузку так, как описано выше. Все довольны, все смеются. :)

Говорите, VNC под убунтой в автозагрузку само прячется? Вы уверены?

Говорите, VNC под убунтой в автозагрузку само прячется? Вы уверены?


Да нифига. Он стартует только при авторизации в системе.
Есть пакет x11vnc который стартует вместе с иксами, но ведь блин хз ж как его настраивать. Надо универсальное решение. Кстати то, что предлагали выше - я не осилил. Написать скрипт это хорошо, а что в скрипте то писать? :)

Написать скрипт это хорошо, а что в скрипте то писать? :)


Скрипт ведь и запустит твою программу (демон).

Но я только сейчас понял ситуацию) А зачем тебе VNC? Он же тормозный очень? Что ты будешь делать на нем? В любом случае, если тебе нужен гуй, юзай ssh-forwarding.

Скрипт ведь и запустит твою программу (демон).

Но я только сейчас понял ситуацию) А зачем тебе VNC? Он же тормозный очень? Что ты будешь делать на нем? В любом случае, если тебе нужен гуй, юзай ssh-forwarding.


Ну не знаю, а че тормозного. Обычное удаленное управление, по сетке щас так и настраиваю.
А насчет ssh-forwarding не понял, если честно. :)

Ну если гуй нужен для администрирования сервера, то как бы это не лучшее решение - для задач администрирования хватит ssh. По крайней мере всему миру хватает. :) А по поводу vnc ничего не могу посоветовать, разве что можно ещё попробовать xrdp. В своё время пробовал - хорошо работает, цепляешься нативным виндовым терминальным клиентом к линуксам и работаешь. Не любитель я всяких этих SSH. Я не против консоли, но я против ее использования тогда, когда не надо. :) Гуй нужен ибо как сказал УК Хардкейз в определенных задачах в гуе я эффективнее. Гуй нужен ибо как сказал УК Хардкейз в определенных задачах в гуе я эффективнее.


А ты попробуй себя в консоли. И вообще, ты ща что настраиваешь, что тебе гуй нужен?:)

А ты попробуй себя в консоли. И вообще, ты ща что настраиваешь, что тебе гуй нужен?:)


Да пробовал и работаю с ней, когда она нужна. А когда не нужна - в баню ее. :)
А гуй мне нужен в перспективе а не прям щас. Т.е. для обеспечения возможности подключаться удаленно к этому серваку, а стоять он будет у клиента. Не ездить же мне к клиенту, если что-то случится. И ссх точно не годится, потому как подключаться могут люди, которые консоль вообще никогда не видели.

Поставь вообще в настройках удаленной убунты не локальный X-сервер а удаленный, на своей машине :) Не, ребяты, вы меня не путайте, я и сам запутаюсь. Мне все что надо, это чтобы направили туда, где можно изучить, как запускать процессы вместе с иксами. Я так понял Саня правильно направил?

Ну так ты попробуй, вдруг получится. ;) Я бы сам попробовал, но у меня только Windows Server 2003 R2 стоит.

Что касается дискурса "Консоль vs. GUI", то мне кажется нужным рассказать о том, как вообще родилась проблема. Есть Фирма, у неё есть Клиент, который географически расположен хоть и в том же городе, но неблизко. У Клиента есть идея ограничить доступ в Инет. Сначала на Фирме придумали поставить каждому локально фаервол, настроить его как следует, и типа этого хватит. Для подобных работ в Фирме есть техники, но они с поставленной задачей не справились, поскольку кроме фильтрации интернета нужно было обеспечить ещё и удалённый доступ к компьютерам Клиента. Тут-то George, будучи прирождённым стратегом, предложил сильно более масштабируемое решение, а именно проксю на убунте.

Так вот, возвращаясь к дискурсу: если администрированием прокси будет заниматься лично Жорж, то нет никакой разницы, через VNC это делать или через SSH, ибо научиться можно всему. Но администрированием будет заниматься не только и не столько Жорж, поэтому, конечно, на первых порах достаточно и SSH плюс подробный мануал по настройке сервера в консоли. А в перспективе таки желательно GUI, поскольку зрительная память у техников развита сильно лучше памяти на тексты.

Хотя мне исходя из практического опыта кажется, что для эпизодической настройки сервера вполне достаточно будет и просто SSH, ну а кому надо - подрубятся в гуй локально.

И ссх точно не годится, потому как подключаться могут люди, которые консоль вообще никогда не видели.


а зачем людям VNC?


Ну Серега, надо. Вопрос не в том, зачем, а как его правильно настроить. Завтра вот буду пробовать Сашин вариант.


я кстати тож не понял.
если речь идет о сервере терминалов - так VNC тут мало поможет, ибо платная, проще использовать возможности X-Servera. Если это типа для одминов - так проще набрать новых, ибо дебилов использовать в работах не перспективно, хотя говорят что тенденция однако.

я кстати тож не понял.
если речь идет о сервере терминалов - так VNC тут мало поможет, ибо платная, проще использовать возможности X-Servera. Если это типа для одминов - так проще набрать новых, ибо дебилов использовать в работах не перспективно, хотя говорят что тенденция однако.


Да какая платная. В убунте по умолчанию VNC сервер стоит, не помню точно как называется. А решения о приеме/неприеме на работу, увы, не я принимаю, нету покамись свово бизнеса.

Да, он бесплатный. Но вот если уже так нужна работа через GUI, то проще коннектиться через XDMCP-сессию. Вчера забыл, где в линуксах логон скрипт определяется. Сейчас нагуглил тут кое-что. ЕМНИП, направление копания примерно то что надо.


сделал, как в мануале сказано - не пашет. хз почему, но при экране входа в систему удаленно приконнектиться не удается.

1. Пишешь скриптец (например myscript)
2. Пихаешь его в /etc/init.d/
3. sudo chmod +x /etc/init.d/myscript
4. sudo rc-update myscript defaults (defaults запихивает скрипт в ранлевелы 2, 3, 4 и 5, а также добавляет линки для остановки в ранлевелы 0, 1 и 6)

Читаем man update-rc.d


сделал - вот скрипт:

Читайте также: