gifts2017

Настройка звука в XRDP для Linux Ubuntu

Опубликовал Сергей Рудюк (rudjuk) в раздел Администрирование - Системное

Замена Windows Server на Linux Ubuntu – выгодное и полезное решение. Такое решение может получиться более стабильно работающим и, главное, масштабируемым и более защищенным. Но есть в решениях Linux всегда ложка дегтя. Прежде всего, это работа с аппаратурой. Ряд аппаратных средств работает только с Windows. И даже гордятся этим, выставляя на своем корпусе лейбочку мелко-софтовской компании…
Так же возникает вопрос настройки звука для XRDP в Linux Ubuntu. По умолчанию, звук в XRDP отключен, и чтобы его настроить, нужно провести ряд действий. Данная статья рассказывает, как это сделать.

 

Итак, устанавливаем необходимые нам пакеты:

sudo apt-get build-dep xserver-xorg-core 

apt-get install autoconf libtool pkg-config

apt-get install libssl-dev libpam0g-dev libjpeg-dev libx11-dev libxfixes-dev flex bison libxml2-dev intltool xsltproc xutils-dev python-libxml2 xutils libpulse-dev

 

Устанавливаем Git, чтоб иметь возможность брать исходные коды прямо из репозитариев:

apt-get install git

Клонируем проект XRDP в текущую папку:
git clone git://github.com/FreeRDP/xrdp.git

Можно также просто закачать zip-архив по адресу: https://github.com/FreeRDP/xrdp

Компилируем XRDP:


./bootstrap

./configure --enable-jpeg --enable-simplesound

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


make
make install

Компилируем X11RDP.

Для этого, заходим в каталог xorg/X11R7.6 и вводим команду:

./buildx.sh /opt/X11rdp

Создаем ссылку:

ln -s /opt/X11rdp/bin/X11rdp /usr/local/bin/X11rdp

Добавляем в загрузку:

cp /etc/xrdp/xrdp.sh /etc/init.d/

update-rc.d xrdp.sh defaults
 

Копируем ключ rsa для шифрации:

sudo cp ../xrdp/rsakeys.ini /etc/xrdp

Компилируем пакеты, необходимые для переадресации звука:

sudo apt-get install libjson0-dev libsndfile1-dev libspeex-dev libspeexdsp-dev

Закачиваем исходные коды пакета pulseaudio из http://freedesktop.org/software/pulseaudio/releases/:

tar -zxvf pulseaudio-3.0.tar.gz

Входим в каталог и выполняем:

./configure

Если возникли проблемы при компиляции, то, возможно, вы закачали не тот пакет pulseaudio.

Переходим в каталог xrdp/sesman/chansrv/pulse.

Вам необходимо прокомпилировать библиотеку для передачи звука по XRDP.

Отредактируйте переменную PULSE_DIR на путь к исходным кодам pulseaudio.
После этого выполните:

make

Скопируем библиотеку в pulse (пути могут отличаться в зависимости от версии pulseaudio):

sudo cp module-xrdp-sink.so /usr/lib/pulse-3.0/modules/

Теперь необходимо подредактировать ряд конфигурационных файлов.

Редактируем (или добавляем) файл /etc/asound.conf:

pcm.pulse {
type pulse
}

ctl.pulse {
type pulse
}

pcm.!default {
type pulse
}

ctl.!default {
type pulse
}

Редактируем файл /etc/pulse/default.pa:

.nofail
.fail
load-module module-augment-properties
load-module module-xrdp-sink
load-module module-native-protocol-unix

Перезагружаемся. После этого, если все правильно настроено, у Вас должен передаваться звук по RDP.

 

Автор: Рудюк С . А. http://corp2.net

См. также

PowerTools от 1 000
Подписаться Добавить вознаграждение
Комментарии
2. mxm2 mxm2 (mxm2) 02.07.15 06:56
Еще актуальная тема: использование локального принтера клиента для терминальных пользователей XRDP в Linux Ubuntu
3. Сергей Рудюк (rudjuk) 02.07.15 10:35
(2) mxm2, Как оказывается, это прекрасно решается с помощью сетевых принтеров. Копайте в сторону CUPS. В статьях я это не описывал, т.к. тут нет ничего особенного.
4. mxm2 mxm2 (mxm2) 02.07.15 12:17
(3) rudjuk, сетевые принтеры - не вопрос, все работает. Вопрос именно с локальными. Скажем пользователь работает в терминале из дома (через интернет), и хочет напечатать на своем домашнем принтере документ непосредственно из терминала. В MS RDP это прекрасно реализовано.
5. Сергей Рудюк (rudjuk) 02.07.15 14:58
Скажу честно, переброской принтеров не занимался. Мы данную проблему решили путем включения принтеров и пользователей в одну сеть с помощью VPN.
6. q_i 02.07.15 18:27
Компилируем пакеты, необходимые для переадресации звука:
sudo apt-get install libjson0-dev libsndfile1-dev libspeex-dev libspeexdsp-dev

Наверное "устанавливаем"?
7. Сергей Рудюк (rudjuk) 02.07.15 19:21
8. Евгений Сосна (pumbaE) 02.07.15 19:47
Почему-бы не собрать пакеты и потом не распространять у себя с помощью aptly ?
9. Сергей Рудюк (rudjuk) 03.07.15 00:12
(8) pumbaE, В чем выигрыш ? apt-get получает пакеты, скомпилированные под заданную операционную систему заданной версии. Это лучше, чем "универсальные пакеты" в которых могут быть зависимости к библиотекам, которые не совсем подходят для заданной операционной системы.
10. Евгений Сосна (pumbaE) 03.07.15 09:56
(9) rudjuk, как обновлять будете на продакшене?
11. Сергей Рудюк (rudjuk) 03.07.15 14:40
(10) pumbaE, Стандартно. apt-get update | apt-get upgrade :)
Тем Linux Ubuntu и хорош, что делает сам.

Если вопрос по конфигурации - как обычно, штатными средствами 1С8.3.
12. Евгений Сосна (pumbaE) 03.07.15 15:27
(11) rudjuk, те пакеты где "make && make install" ?
13. Сергей Рудюк (rudjuk) 03.07.15 20:12
Там, где make && make install - компилируется из исходных кодов, которые получаются из системы контроля версий git. Как правило, один раз скомпилировав - эти программные средства работают очень долго. Но, если захочется обновиться - нужно будет заново получить из исходников (которые ведутся в режиме реального времени) и скомпилировать их указанными выше командами.
Компиляция в заданной операционной среде - это наиболее эффективный способ в данном случае. Т.к. если бы фомировать пакеты нужно было, то нужно было бы компилировать пакет для каждой операционной системы - которых очень, очень много...