Как дать права JACK пользователю

FreeBSD, NetBSD, OpenBSD, DragonFly и т. д.

Модератор: arachnid

Аватара пользователя
romkaromka
Сообщения: 1064
ОС: Mageia

Как дать права JACK пользователю

Сообщение romkaromka » 05.07.2019 10:18

Под Арч Линукс всё понятно: https://github.com/captnfab/PianoBooster/blob/master/doc/faq.md#how-do-i-hear-the-sound-on-arch-linux
Но как под BSD? Файла /etc/security/limits.conf нет, группы audio нет.
Консоль на мыло. Надо развивать графику.
Спасибо сказали:

Аватара пользователя
arachnid
Модератор
Сообщения: 1077
ОС: freeBSD

Re: Как дать права JACK пользователю

Сообщение arachnid » 05.07.2019 16:54

а что говорит гугель?

собственно, даже при установке пакета есть информация - ну и дополнительно можно почитать форум https://forums.freebsd.org/threads/jack-real-time-audio.58293/
-= freeBSD stable, fluxbox =-
"если ты будешь со мной спорить, я тебя запишу в книжечку!" (с) Ежик
Спасибо сказали:

Аватара пользователя
romkaromka
Сообщения: 1064
ОС: Mageia

Re: Как дать права JACK пользователю

Сообщение romkaromka » 06.07.2019 02:04

Гугл ничего не говорит. По ссылке всё уже изучено давно, это всё не то.
Fluidsynth запускает JACK под пользователем, опции там никакие ему не передать. Тут нужна именно инструкция аналогичная другим дистрибутивам на дачу прав пользователю запускать JACK realtime.
Сами-то пробовали?
Консоль на мыло. Надо развивать графику.
Спасибо сказали:

Аватара пользователя
ormorph
Сообщения: 923
ОС: Gentoo

Re: Как дать права JACK пользователю

Сообщение ormorph » 06.07.2019 22:36

Давно уже не пробовал BSD системы, но тут по моему и так не тяжело догадаться.
Надо смотреть в сторону приоритета запускаемого приложения.
Можно как использовать nice, в связке с sudo для повышения приоритета и запуска под пользователем, либо смотреть в сторону rtprio.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15823
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Как дать права JACK пользователю

Сообщение Bizdelnick » 06.07.2019 23:23

ormorph писал(а):
06.07.2019 22:36
использовать nice, в связке с sudo для повышения приоритета и запуска под пользователем
Как Вы себе это представляете?
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
ormorph
Сообщения: 923
ОС: Gentoo

Re: Как дать права JACK пользователю

Сообщение ormorph » 06.07.2019 23:40

Bizdelnick писал:
06.07.2019 23:23
Как Вы себе это представляете?
С nice, довольно просто. Если присутствует sudo в системе. То для начала даются права суперпользователя для запуска скрипта(можно прописать в sudoers.
Запускающий скрипт довольно простой:

Код: Выделить всё

#!/bin/sh
nice --11 sudo -u USER скрипт запуска jack
И запускаем с правами рута этот скрипт:

Shell

$ sudo скрипт
Права рута нужны для повышения приоритета, а далее потомки наследуют этот приоритет.
Спасибо сказали:

Аватара пользователя
romkaromka
Сообщения: 1064
ОС: Mageia

Re: Как дать права JACK пользователю

Сообщение romkaromka » 07.07.2019 01:26

Как с rtprio?
Консоль на мыло. Надо развивать графику.
Спасибо сказали:

Аватара пользователя
ormorph
Сообщения: 923
ОС: Gentoo

Re: Как дать права JACK пользователю

Сообщение ormorph » 07.07.2019 09:06

romkaromka писал:
07.07.2019 01:26
Как с rtprio?
Фиг его знает, этим инструментом не пользовался))
Можно попробовать поиграться, может что получится.
Как вариант можно попробовать запустить qjackctl, если такое присутствует и под рутом повысить приоритет на процесс qjackctl, с помощью rtprio. А далее с помощью его запустить jackd.

Зы: команде ps можно назначать поля для просмотра и сортировать по определенному полю:

Shell

$ ps -eo pid,tid,class,rtprio,ni,pri,comm --sort=+comm
Спасибо сказали:

Аватара пользователя
romkaromka
Сообщения: 1064
ОС: Mageia

Re: Как дать права JACK пользователю

Сообщение romkaromka » 07.07.2019 09:37

Ormorph, это ерунда. Процесс jackd запускается сам через fluidsynth. qjackctl вообще тут не к месту.
Задача не как запустить jackd, а как он бы запустился сам через fluidsynth с необходимыми правами.
В направлении rtprio путь правильный, но нет инструкций как это реализовать.
Консоль на мыло. Надо развивать графику.
Спасибо сказали:

Аватара пользователя
ormorph
Сообщения: 923
ОС: Gentoo

Re: Как дать права JACK пользователю

Сообщение ormorph » 07.07.2019 10:38

romkaromka писал:
07.07.2019 09:37
Ormorph, это ерунда. Процесс jackd запускается сам через fluidsynth. qjackctl вообще тут не к месту.
Можно и отдельно запускать jackd, а затем конектить fluidsinth с jack, примерно так:

Shell

$ fluidsynth -a jack -g 1 -c2 -R0 -C0 -i -l -r 48000 -j -s /usr/share/sounds/sf2/FluidR3_GM.sf2
Это наиболее предпочтительный вариант, если планируется коннектить несколько источников с jack.
Иначе можно только через sudo и nice. Можно попробовать sudo и rtprio, для запуска скрипта, по идее потомки так же должны будут наследовать приоритет.
В BSD нет pam, по этому фокус как в linux с /etc/security/limits.conf не пройдет.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15823
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Как дать права JACK пользователю

Сообщение Bizdelnick » 07.07.2019 11:06

ormorph писал(а):
07.07.2019 10:38
Иначе можно только через sudo и nice.
Есть же renice.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
ormorph
Сообщения: 923
ОС: Gentoo

Re: Как дать права JACK пользователю

Сообщение ormorph » 07.07.2019 11:22

Bizdelnick писал:
07.07.2019 11:06
Есть же renice.
renice для уже запущенных процессов, так же может подойти, если для qjackctl.
Но с sudo и nice, может получиться на много гибче.
Просто создаются права в sudoers на запуск скрипта под рутом без пароля, примерный скрипт я уже накатал. Просто поместить его надо в директорию с правами рута, например в /usr/local/bin, что бы пользователь не мог менять его содержимое. А далее можно запускать скриптом от обычного пользователя, типа:

Код: Выделить всё

#!/bin/sh
sudo скрипт
И все получается безопасно, тем более, что пользователю можно дать права, только на запуск скрипта в /usr/local/bin с правами рута, а запуск остальных программ можно запретить, даже с паролем.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15823
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Как дать права JACK пользователю

Сообщение Bizdelnick » 07.07.2019 11:34

Ничто не мешает сделать renice на уже запущенный jackd.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
ormorph
Сообщения: 923
ОС: Gentoo

Re: Как дать права JACK пользователю

Сообщение ormorph » 07.07.2019 12:03

Bizdelnick писал:
07.07.2019 11:34
Ничто не мешает сделать renice на уже запущенный jackd.
Не в режиме реального времени, он просто не запустится ключик -R, пока не дать права(приоритет).
Спасибо сказали:

Аватара пользователя
romkaromka
Сообщения: 1064
ОС: Mageia

Re: Как дать права JACK пользователю

Сообщение romkaromka » 08.07.2019 06:07

Всё написанное выше с nice полностью неправильно. Даже через nice jackd не запускается с ключом -R. А fluidsynth не будет запускать нового потомка jackd, так как jackd уже запущен через nice.
Неужели на форуме нет толковых специалистов кто может писать не от балды, а после проверки в FreeBSD?
Консоль на мыло. Надо развивать графику.
Спасибо сказали:

Аватара пользователя
ormorph
Сообщения: 923
ОС: Gentoo

Re: Как дать права JACK пользователю

Сообщение ormorph » 08.07.2019 08:43

romkaromka писал:
08.07.2019 06:07
А fluidsynth не будет запускать нового потомка jackd, так как jackd уже запущен через nice.
Конечно не будет, он будет коннектится к уже запущенному, но тут надо смотреть что бы частота дискретизации запущенного совпадала с частотой с которой запускает fluidsynth, в принципе это все выставляется. Если убрать ключик -j то fluidsynth запукаться будет без jack, ну и не будет коннектится к уже запущенному, тогда надо будет связывать каналы с jackd в ручную.
romkaromka писал:
08.07.2019 06:07
Неужели на форуме нет толковых специалистов кто может писать не от балды, а после проверки в FreeBSD?
Ну дык, вам и флаг в руки, вы будете первым...
Во фряхе вроде можно завести pam в линуксовых портах. Ну и jack должен быть тоже линуксовым, ну и собран с поддержкой pam.
Фряху очень редко кто использует для десктопа, по этому мало кто вам тут посоветует что делать. Только не знаю, поддерживает ли ядро фряхи работу в реальном режиме времени, либо с уменьшенным временем переключения контента, достаточную для запуска jack в реальном режиме времени.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15823
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Как дать права JACK пользователю

Сообщение Bizdelnick » 08.07.2019 09:54

romkaromka писал:
08.07.2019 06:07
Даже через nice jackd не запускается с ключом -R.
Значит, надо использовать rtprio, как описано тут.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
ormorph
Сообщения: 923
ОС: Gentoo

Re: Как дать права JACK пользователю

Сообщение ormorph » 08.07.2019 10:45

Bizdelnick писал:
08.07.2019 09:54
Значит, надо использовать rtprio, как описано тут.
Боюсь что и это не получится.
Завалялась на одном из разделов старенькая фряха, там как раз был установлен jack.
Ради интереса запустил:

Shell

# rtprio 0 nice --22 sudo -u USER jackd -R -m -doss
Как бы все должно быть ок, но не тут то было. В режиме реального времени не может работать канал /dev/dsp и все тут.
Возможно если в ручную пере собрать ядро, может что то и получится, но тут я не помощник...
Спасибо сказали: