Хочется запустить звуковой сервер JACK в режиме реального времени (приложению крайне важна минимальная задержка). И даже получается, но - только под рутом. Соответственно, клиент JACK'а тоже под рутом, и это не айс. Под обычным же пользователем:
[kaman@kaman ~]$ jackd -Rv -d alsa
getting driver descriptor from /usr/lib64/jack/jack_oss.so
getting driver descriptor from /usr/lib64/jack/jack_alsa.so
getting driver descriptor from /usr/lib64/jack/jack_dummy.so
getting driver descriptor from /usr/lib64/jack/jack_freebob.so
jackd 0.102.20
Copyright 2001-2005 Paul Davis and others.
jackd comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details
JACK compiled with System V SHM support.
server `default' registered
cannot use real-time scheduling (FIFO at priority 10) [for thread -1411594528, from thread -1411594528] (1: Operation not permitted)
cannot create engine
cleaning up shared memory
cleaning up files
unregistering server `default'
То же самое при jackstart -Rv -d alsa
Читаю, что про это в `man jackd` написано:
-R, --realtime
Использовать планирование в режиме реального времени.
[...первый способ - запускать всё под рутом...]
Второй способ требует работы с ядром,
где включены "POSIX draft capabilities" (см. заголовочный файл
<linux/capability.h>). Во втором случае обычный пользователь
сможет вызвать демон при примощи команды jackstart, а затем
загрузить JACK-клиенты также с обычными правами.
Что за draft capabilities и как с ними работать? Мне, как человеку, не сталкивавшемуся со сборкой ядра, это неочевидно. Сейчас стоит обычное std-ll из репозитария. Нужно будет пересобирать ядро? В общем, что делать-то, чтобы достичь желаемого? :) ALT Linux 4.1 Desktop, x86_64
[kaman@kaman ~]$ uname -a
Linux kaman.homelinux.com 2.6.25-std-ll-alt8.M41.4 #1 SMP PREEMPT Sat Dec 6 20:42:07 MSK 2008 x86_64 GNU/Linux
[kaman@kaman ~]$ rpm -qa|grep jackd
jackd-0.102.9-alt0.svn.r987