나는 종종 두 명의 다른 사용자로 두 개의 KDE 세션을 실행합니다. 두 계정 간에 전환하면(예: Ctrl+Alt+F8) 한 계정에서 재생되는 음악이 다른 계정에서 음소거됩니다. 가상 터미널(Ctrl+Alt+F1)로 전환해도 같은 일이 발생합니다.
내가 아는 한, 이는 의도적인 것이며 여러 인간 사용자에게 적합하지만 내 설정에서는 짜증스럽습니다.
다른 KDE 세션이나 가상 터미널로 전환할 때 어떻게 음악을 계속 듣나요?
저는 KDE 5.36.0 및 Pulseaudio 8.0과 함께 Ubuntu 16.04 LTS(Xenial Xerus) 기반의 KDE Neon 5를 사용합니다.
답변1
해결책
플레이할 수 있어야 하는 모든 사용자를 추가하세요.펄스 액세스그룹
# adduser problemofficer pulse-access
만들다/etc/systemd/system/pulseaudio.service다음 콘텐츠가 포함되어 있습니다:
[Service] Type=simple PIDFile=/var/run/pulse/pid ExecStart=/usr/bin/pulseaudio --daemonize=yes --system=yes --disallow-module-loading=yes --disallow-exit=yes [Install] WantedBy=multi-user.target
부팅 시 시작되도록 이 새로운 시스템 서비스를 활성화합니다.
# systemctl enable pulseaudio
참고로 이 구성은
- 덜 안전함(예: 다른 사용자가 마이크에서 들을 수 있음)
- 사운드 출력이 더 이상 자동으로 헤드폰으로 전환되거나 헤드폰에서 자동으로 전환되지 않습니다.
- Bluetooth가 작동하지 않을 수 있습니다. 아래 경고 섹션도 참조하세요.
재시작
이유
소리가 꺼지는 이유는 로그인할 때마다 해당 사용자 권한으로 Pulseaudio가 시작되고 시스템에서 다른 사용자가 다른 사용자의 오디오를 듣는 것을 허용하지 않기 때문입니다.
솔루션 배경
펄스 오디오
이 문제를 해결하려면 Pulseaudio가 루트 권한으로 시작되어 모든 사용자만 사용할 수 있는 시스템 전체 데몬으로 실행되어야 합니다. 모든 사람이 이 인스턴스에 연결되며 다른 사용자가 재생하거나 녹음한 모든 것을 재생하고 들을 수 있습니다.
Pulseaudio는 실제로 항상 루트로 실행되지는 않지만 이러한 권한을 포기하고 사용자를 가정합니다.맥박.
~에서man pulseaudio
사용자 맥박, 그룹 맥박: PulseAudio가 시스템 데몬으로 실행되고(위의 --system 참조) 루트로 시작되면 데몬은 권한을 포기하고 이 사용자 및 그룹을 사용하는 일반 사용자 프로세스가 됩니다. PulseAudio가 사용자 데몬으로 실행 중인 경우 이 사용자 및 그룹은 의미가 없습니다.
"사용자 데몬"은 "시스템 데몬"과 동일하지 않습니다. 전자는 이전에 Pulseaudio가 실행된 방식이고, 후자는 변경 사항을 적용한 후 실행되는 방식입니다.
Pulseaudio 시스템 서비스에 연결하려면 다음이 필요합니다.펄스 액세스그룹.
다시부터man pulseaudio
그룹 펄스 액세스: PulseAudio가 시스템 데몬으로 실행 중인 경우(위의 --system 참조), 이 그룹의 구성원은 AF_UNIX 소켓을 통해 연결할 때 액세스 권한이 부여됩니다. PulseAudio가 사용자 데몬으로 실행 중인 경우 이 그룹은 의미가 없습니다.
시스템 서비스
빠른 해결 방법으로 Pulseaudio의 모든 "사용자 데몬" 인스턴스를 종료한 다음 /usr/bin/pulseaudio --system=yes
개념 증명 검사를 실행하면 유용할 수 있습니다.
이를 지속적으로 만들고 부팅 시 Pulseaudio 데몬이 자동으로 시작되도록 하려면 systemd 서비스로 추가해야 합니다. 파일 내용입니다/etc/systemd/system/pulseaudio.service입니다.
Pulseaudio는 시스템 데몬²을 이미 찾았을 때 사용자 데몬²을 시작하지 않으므로 이 솔루션이 작동합니다.
경고하다
Pulseaudio 공식 문서Pulseaudio를 시스템 데몬으로 사용하는 것에 대한 제안. 언급된 문제 중 일부는 다음과 같습니다.
...보안 관점에서 특히 문제가 되는 점 중 하나는 모듈 로딩입니다. 액세스 권한이 있는 사람은 누구나 모듈을 로드하고 언로드할 수 있습니다. 모듈 로딩을 비활성화할 수 있지만 Bluetooth 및 alsa 핫플러그 기능은 작동하지 않습니다...
(이는 헤드폰을 연결해도 사운드 출력이 자동으로 스피커에서 헤드폰으로 전환되지 않음을 의미합니다. 헤드폰을 분리할 때도 그 반대가 적용됩니다. 두 작업 모두 수동으로 수행해야 합니다.)
...시스템 모드에서 메모리 사용량과 CPU 로드가 더 높습니다...
(개인적으로는 로드 변화가 느껴지지 않았습니다.)
...서버에 액세스할 수 있는 모든 사용자는 서로의 오디오 스트림을 스니핑하고 마이크를 들을 수 있습니다.
...또한 잭 연결과 같은 추가 기능도 많이 잃게 됩니다.
여기를 포함하여 내가 이해하지 못해서 가치 없다고 생각하는 다른 것들이 있을 수도 있습니다.
thecarpy의 답변에 대한 참고 사항:이 솔루션에는 그의 답변에 설명된 단계가 필요하지 않습니다.
자원
man pulseaudio
- https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/WhatIsWrongWithSystemWide/
- https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide/
1 누군가 이 내용을 자세히 설명해 주시면 매우 감사하겠습니다.
² 가정[인용 필요]
답변2
~에서https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/213149:
이것이 펄스 오디오의 "특징"입니다.
편집하다/etc/default/pulseaudio
PULSEAUDIO_SYSTEM_START=0
로 변경
PULSEAUDIO_SYSTEM_START=1
이러한 방식으로 pulseaudio는 시스템 모드에서 시작됩니다.
/etc/default/pulseaudio
문서 에서 :
# Start the PulseAudio sound server in system mode.
# (enables the pulseaudio init script)
# System mode is not the recommended way to run PulseAudio as it has some
# limitations (such as no shared memory access) and could potentially allow
# users to disconnect or redirect each others audio streams. The
# recommend way to run PulseAudio is as a per-session daemon. For GNOME
# sessions you can install pulseaudio-esound-compat and GNOME will
# automatically start PulseAudio on login (if ESD is enabled in
# System->Preferences->Sound). For other sessions, you can simply start
# PulseAudio with "pulseaudio --daemonize".
# 0 = don't start, 1 = start
변경 사항을 적용하는 가장 쉬운 방법은 이 옵션으로 pulseaudio가 시작되었는지 확인 --daemonize
하고 시스템을 다시 시작하는 것입니다.
또 다른 옵션은 pulseaudio를 완전히 제거하고 대신 alsa를 사용하는 것입니다. 개인적으로 선호하는 선택입니다.
답변3
저는 systemd를 사용하여 Arch Linux를 실행하고 있는데 똑같은 문제가 발생했습니다. 내 목표는 Ctrl-Alt-Fx 또는 디스플레이 관리자를 통해 다른 사용자로 전환하고 사운드를 계속 실행하는 것입니다.
마침내 시스템 모드(위험, 지원되지 않음)나 PolicyKit(아무것도 모릅니다)을 사용하지 않고도 작동하게 되었습니다.
속도:
- PulseAudio가 계속 재생되어야 하는 $USER를 오디오 그룹에 추가하세요.
usermod -aG audio $USER
- 로그인하지 않고 PulseAudio가 시작되도록 사용자에 대한 지연을 활성화합니다.
loginctl enable-linger $USER
~/.config/pulse/default.pa
이것이 작동하는 경우 다음과 같은 일부 콘텐츠를 추가하여 이 사용자의 PA를 네트워크의 다른 사용자와 공유하도록 선택할 수 있습니다.
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/24
"클라이언트 사용자"의 경우 다음을 추가하세요 ~/.config/pulse/client.conf
.
default-server = 127.0.0.1