Ubuntu 22.04下多用户配置PulseAudio时的异常问题求助
我在自己的机器上已经给windowsxp用户搞定了PulseAudio——不管是通过RDP远程连接还是PuTTY登录,音频都能正常工作。现在想给ubuntu这个管理员用户也复刻一套同样的配置,结果踩了一堆坑,实在搞不定了来求助!
我先是参考了相关的论坛和博客教程,做了以下操作:
- 编辑
/etc/pulse/client.conf,追加了这几行配置:autospawn = no default-server = unix:/tmp/riri-pulse-socket enable-memfd = yes - 修改
/etc/pulse/default.pa,把原来的load-module module-native-protocol-unix替换成了:load-module module-native-protocol-unix auth-anonymous=1 socket=/tmp/riri-pulse-socket - 给两个用户都执行了
pulseaudio --kill终止进程,然后运行pulseaudio --start尝试重启
结果刚执行pulseaudio --start就报错了:
$ pulseaudio --start n: [pulseaudio] main.c: user-configured server at unix:/tmp/riri-pulse-socket, refusing to start/autospawn.
我去/tmp目录下找,根本没有riri-pulse-socket这个文件。
我试着把client.conf里的autospawn改成yes,但错误还是一模一样。后来在网上瞎逛的时候看到有人说用pulseaudio -D启动,抱着试试的心态跑了,居然成功在/tmp里创建了socket文件,也没报错:
$ ls -l /tmp/riri-pulse-socket srwxrwxrwx 1 ubuntu ubuntu 0 Jan 29 03:08 /tmp/riri-pulse-socket
这里我还有个小疑问:这个socket文件显示是0字节,这是正常的吗?
本以为改完就没问题了,结果ubuntu用户不管是RDP还是PuTTY连接都还是没声音,更离谱的是之前好好的windowsxp用户的音频也挂了!把所有修改的配置改回去之后,才回到最初的状态——只有windowsxp能出声,ubuntu还是不行。
补充说下:我之所以直接改/etc/pulse下的全局配置,是因为之前试了用户本地的配置文件,PulseAudio根本不识别,也不会在/tmp里创建socket。另外我确认过PulseAudio是跑在用户模式下的,看htop里的进程都是对应用户名,不是root或者pulse用户。
附上相关的日志信息:
执行pulseaudio --start -vvv的输出:
$ pulseaudio --start -vvv D: [pulseaudio] conf-parser.c: Parsing configuration file '/etc/pulse/client.conf' D: [pulseaudio] conf-parser.c: Failed to open configuration file '/etc/pulse/client.conf.d/01-enable-autospawn.conf': No such file or directory N: [pulseaudio] main.c: User-configured server at unix:/tmp/riri-pulse-socket, refusing to start/autospawn.
查看用户级systemd服务状态systemctl --user status pulseaudio的输出:
$ systemctl --user status pulseaudio ● pulseaudio.service - Sound Service Loaded: loaded (/usr/lib/systemd/user/pulseaudio.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2024-01-29 05:43:33 JST; 36s ago TriggeredBy: ● pulseaudio.socket Main PID: 3189 (pulseaudio) Tasks: 3 (limit: 1660) Memory: 1.8M CPU: 171ms CGroup: /user.slice/user-1002.slice/user@1002.service/session.slice/pulseaudio.service └─3189 /usr/bin/pulseaudio --daemonize=no --log-target=journal Jan 29 05:43:33 ubuntu pulseaudio[3189]: Build library version 15.99.0 Jan 29 05:43:33 ubuntu pulseaudio[3189]: sink_process_msg: not running Jan 29 05:43:33 ubuntu pulseaudio[3189]: close_send: Jan 29 05:43:33 ubuntu pulseaudio[3189]: Build library version 15.99.0 Jan 29 05:43:33 ubuntu systemd[2150]: Started Sound Service. Jan 29 05:44:08 ubuntu pulseaudio[3189]: sink_process_msg: not running Jan 29 05:44:08 ubuntu pulseaudio[3189]: close_send: Jan 29 05:44:08 ubuntu pulseaudio[3189]: Connected ok fd 29 Jan 29 05:44:08 ubuntu pulseaudio[3189]: sink_process_msg: not running Jan 29 05:44:08 ubuntu pulseaudio[3189]: close_send:
我注意到日志里反复出现sink_process_msg: not running,会不会这个就是问题的关键?
另外,后来我还看到有人讨论的时候提到了PULSE_SCRIPT、PULSE_SERVER、pactl还有XDG这些术语,但完全摸不着头脑——这些东西到底是干嘛的?和我的问题有什么关系?该怎么用它们来解决我的问题呢?
备注:内容来源于stack exchange,提问作者N00B_141

