Previous Entry Поделиться Next Entry
(без темы)
Prince of Persia: Warrior Within
oversider_kosma wrote in ru_linux
Добрый день!

Есть Debian Wheezy и есть скайп, запущенный в chroot-окружении. Делал вот по этой инструкции.

Проблема в звуке — за него идет конкуренция. Если, например, играет аудио-плеер, скайп не проигрывает звуки. И наоборот, если в скайпе уже идет звонок, то все приложения кроме него звук играть отказываются.

Как я гипотетически понимаю, вместе со всем остальным /dev внуть чрута пробрасывается в том числе и /dev/snd, и кто его первый занял, тот и папа, а остальные отдыхают. Но на самом деле, это "пальцем в небо" — я слабо себе представляю, как орагнизовано аудио в Линуксе и его иерархия. =) У меня, вроде бы, даже PulseAudio в системе стоит (как пакет) только я его ни разу не видел =).

Что делать, чтоб все заработало? Нужно создавать внутри чрута какое-то виртуальное звуковое устройство, которое будет как-то подмиксовываться внутрь реального? Или пробросить какие-то сокеты, по аналогии с /tmp/.X11-unix?


У автора исходной инструкции наблюдалась похожая проблема под Убунтой, но его решение мне воспроизвести не удается, потому что никаких слов ALSA я у себя не вижу, ни в скайпе, ни в KDE.



UPD:Решилось выносом pulseaudio из системы. Да, "бубен".
Метки: , ,

  • 1
Звуковушка дерьмовенькая?
Если не поддерживает hw-mix, можно сделать sw-mix, настроив dmix в alsa.
По идее, хватит настройки в родительской системе.

// не понимаю только, на кой черт скайп пускать в чруте. У кого-то паранойя зашкаливает...

Edited at 2013-04-25 10:04 (UTC)

//Да, именно она самая и зашкаливает. Грешен =)

Звуковуха, какую lenovo в бук послал.

14:25:48 25.04.13 kosma @ Passportal-Alice-II:~$ sudo lshw -C multimedia
  *-multimedia            
       description: Audio device
       product: 5 Series/3400 Series Chipset High Definition Audio
       vendor: Intel Corporation
       physical id: 1b
       bus info: pci@0000:00:1b.0
       version: 05
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress bus_master cap_list
       configuration: driver=snd_hda_intel latency=0
       resources: irq:43 memory:f2800000-f2803fff


чем именно чрут лучше готового (при желании допиленного) apparmor-профиля?

Не знаю. Возможно, ничем или даже хуже. Решение с чрутом попалось мне на глаза раньше. А ни apparmor, ни SELinux я никогда осознанно в руках не держал и понятия не имею, насколько геморройно оно настраивается.

(Удалённый комментарий)
там все в порядке. проблема в полисикит.)))
другой пользователь собирается получить доступ к железке. А это невозможно и тогда полисикит переключает с одного на другого.

ну я так понимаю полисикит переключает между разными пользователями звуковуху как только они пытаются завладеть ею.
Яркий пример: включите музыку и перейдите в текст.вирт.консоль. Звук перестанет играть ибо графика уже не активна. Но только залогинетесь под тем же пользователем - продолжит играть...
А у вас что-то из области что под одним пользователем вы играете, а потом делаете логин под другим, т.е. у первого права отбираются, а второму даются и наоборот...
Надо крутить полисикит...

Но в принципе присоединяюсь к первому оратору про паранойю...

Я так понимаю, начинать решэние проблемы следует со снесения policykit.

Я думаю, прежде всего нужно снести pulseaudio (т.к. эта дрянь вообще 100 лет не втарахтелась); затем настроить правильно alsa.
А policykit, как я понял, только в бубунтах есть.

В wheezy он, видимо, есть. Сам я его, в сознании, точно не ставил. Разве что по депенденсам прилетел по каким.

$ dpkg -l | grep policykit
ii  policykit-1                                   0.105-3                            amd64        framework for managing administrative policies and privileges


На попытки его понести угрожает потянуть за собой например apper.

первый раз "втарахтелась" не так прочитал... надо взять в словарь...)))

Не понимаю, почему, но снос pulseaudio помог.

Дык, элементарно же: PA не дает правильно работать альсе.
Я вообще не понимаю, на кой хрен люди этот чертов PA ставят: от него ничего, кроме вреда, нет.

А уж systemd - так вообще отдельная песня (лучи ненависти в адрес Поца и его прихвостней).

Люди его не ставят, он сам вытягивается по зависимостям.

Про systemd согласен, но upstart ещё хуже..

Включают-то эту дрянь не зависимости, а люди…

PA не дает правильно работать альсе
«какие ваши доказательства?» впрочем, даже не нужно — вы только что заявили, что alsa не работает правильно.

Доказательства? Берем велосипед, ставим на квадратные колеса и пытаемся ехать!

Я не понял, что вы хотели сказать этой некорректной аналогией. На случай, если вам нужно моё разрешение обходиться без намёков — разрешаю.

Да элементарно же: alsa работала, работает и будет работать, но тут вылезло какое-то чмо со своими квадратными колесами (PA) и начало их насаждать куда ни попадя. Хорошо хоть, эту дрянь можно не использовать (но, опять-таки, дистрибутив дистрибутиву рознь: пока что лишь слака с гентой не прогнулись).
Печально, что линуксокапец настает…

То есть правильные клиенты ALSA — это те, которые не заставляют ALSA работать неправильно, так?

Клиент ничего эдакого и не сделает — на то он и клиент. А PA — ненужная глючная прослойка между ALSA и клиентами.

Если «клиент ничеготакогонесделает», то каким же образом PA ухитряется работать с ALSA, чтобы чтототакоеделать постоянно и всегда (по вашим словам)?

PA — не клиент, а прокся. А кривая прокся запросто может натворить много бед.

Как интересно. Надо понимать, у ALSA для проксей имеется отдельный API? Или как?

>Яркий пример: включите музыку и перейдите в текст.вирт.консоль. Звук перестанет играть ибо графика уже не активна.

Это где такое?

там где полисикит. например в убунту

> Яркий пример: включите музыку и перейдите в текст.вирт.консоль. Звук перестанет играть ибо графика уже не активна.

Жуть-то какая в этих ваших дебианах творится!
Кстати, при чем здесь разные пользователи, если человек просто в чруте сидит?

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

Не надо грязи! Только что попробовал в debian 6 - никуда звук при переключении в текстовую консоль не пропадает. Это только в бубунте такое безобразие творится.

Проверил: не совсем так, но похоже.

Запустил audacious играть в иксах. В вирт.консоли зашел под другим пользователем, audacious при переключении с иксов играть не прекратил, но и в вирт.консоли mplayer звук проиграть не осилил, пока audacious не замолчал.

Значит, policykit.

Спасибо!

PS: Но вообще дико, конечно как-то. Т.е. правильно ли я понял, что если на машине два пользователя: я и моя бабушка, и я оставил музыку играть, залочив иксы, а бабушка залогинилась рядом, через "сменить пользователя", то бабушка будет сидеть без звука в жаббере и пасьянсах?


Судя по моему опыту пользования убунтой, ваша музыка перестанет доноситься из колонок как только появится экран логина другого пользователя. Пока работает бабушка из колонок будут доноситься только звуки, относящиееся к её сессии.

а как иначе решить проблему, когда разые пользователи хотят завладеть одним устройством?
/dev/snd - это файл и писать в него может только один...

А не надо пользоваться устаревшим интерфейсом. В OSS так действительно было, а в ALSA несколько процессов вполне могут одновременно издавать звуки, и не важно, от одного пользователя они запущены, или от разных.

Снес pulseaudio. Все заработало. Чрутнутый скайп и музыка одновременно.

Policykit не сносил. (возможно, тут еще играет роль, что uid у пользователя внутри чрута, под которым бегает скайп и пользователя основной системы одинаковый; так предписывал howto, по которому делал).



В качестве побочного эксперимента попробовал, не останавливая плеер, сменить пользователя на тестовую "бабушку": плеер от основного юзера продолжает играть, во вторичной сессии звуков нет вообще.

Алсе пофиг полисикит. полисикитом пользуется пульсаудио...
Если устраивает такое положение дел, то можно считать что запилили...
Но могут вылезти какие-то косяки в будущем.

Я в wheezy попробовал в двух текстовых консолях запустить одновременно два mplayer'а. Эффект интересный: если пользователи одинаковые, то играют оба одновременно (и если что-то запустить от того же пользователя из графической консоли, то тоже играет). Но если пользователи разные, то кто первым успел, тот играет, а второй залипает, пока первый не кончит играть. Когда первый играть закончит, тогда второй начинает.

Но что интересно - несмотря на явное указание -ao alsa, при начале проигрывания всё равно автоматически запускается pulseaudio, даже если его перед этим принудительно убить. Так что похоже да, pulse виноват. Сносить я его не пробовал.

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

  • 1
?

Log in