WINE@Etersoft/Работа с сервисами
Служба windows (windows service) - приложение, автоматически (если настроено) исполняемое системой при запуске операционной системы Windows.
В wine реализованы службы windows, они запускаются при работе с wine. В остальное время они выключены.
Содержание
Работа со службой windows
Служба, поставляемая с приложением
Приложения в wine устанавливаются таким же образом как и в windows. Если windows установщик устанавливает сервис, то в wine он установится таким же образом.
Создание собственной службы
С помощью утилиты sc
wine существует реализация windows утилиты sc (service control) С помощью неё сервисы можно создавать, запускать, останавливать (и некоторые другие действия).
Команды sc:
1) Создать сервис
$ wine sc create <имя_сервиса> binpath="<путь_к_запускаемому_файлу>"
- Пример:
$ wine sc create http binpath="C:\windows\system32\drivers\http.sys"
2) Запросить информацию о сервиса
$ wine sc query <имя_сервиса>
- Пример:
$ wine sc query http
3) Запустить сервис
$ wine sc start <имя_сервиса>
- Пример:
$ wine sc start http
4) Остановить сервис
$ wine sc stop <имя_сервиса>
- Пример:
$ wine sc stop http
5) Задать описание для сервиса
$ wine sc description <имя_сервиса> "<описание_сервиса>"
- Пример:
$ wine sc description http "HTTP server"
6) Удалить сервис
$ wine sc delete <имя_сервиса>
- Пример:
$ wine sc delete http
Через редактор реестра
Хоть команда sc и удобна, с помощью неё можно сделать не всё. При необходимости настройки сервисов можно редактировать через редактор реестра.
Для этого нужно:
1) Запустить редактор реестра
$ wine regedit
2) Перейти в папку, в которой расположены службы windows:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\
3) Найти папку соответствующего сервиса, в которой будут находиться параметры, которые можно проверить, отредактировать или добавить
- Пример: чтобы указать windows HTTP server запускаться при запуске wine, нужно перейти в папку
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP
- Сменить значение параметра
Start
со значения "3" (ручной запуск) на значение "2" (автоматический запуск)
Запуск службы при запуске системы
В случае, если нужно установить службу windows, которая должна быть активна сразу после запуска linux, нужно:
1) Указать необходимому сервису автоматически запускаться с wine
- Для этого установить в regedit параметр
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Start
- В значение "2"
2) Установить пакет xvfb-run
$ epmi xvfb-run
3) Создать сервис systemd, для этого:
touch /lib/systemd/system/<имя_сервиса>.service
4) Заполнить его следующим образом:
- [Unit]
- Description=<описание_сервиса>
- [Service]
- Type=simple
- User=<имя_пользователя_wine>
- Group=<группа_пользователя_wine>
- ExecStart=/usr/bin/xvfb-run /usr/bin/wine /home/guest/.wine/drive_c/windows/system32/winver.exe
- Restart=on-failure
- [Install]
- WantedBy=default.target
- Пояснение: сервис запускает winver.exe при запуске системы, и держит его активным.
- Благодаря этому wineserver не выключается и сервисы, работающие в фоне также не выключаются.
- Запуск происходит с помощью xvfb-run - скрипта, запускающего процессы с виртуальным X сервером
5) Активировать созданный сервис
$ serv enable /lib/systemd/system/<имя_сервиса>.service
- Должен автоматически создаться симлинк
/etc/systemd/system/default.target.wants/<имя_сервиса>.service → /lib/systemd/system/<имя_сервиса>.service
6) Для того, чтобы убедиться, что всё работает:
$ serv start <имя_сервиса>
$ serv status <имя_сервиса>
- Последняя команда должна отобразить статус сервиса - он должнен быть active (running)