20.04 启动时和 unix 套接字出现 pulseaudio 异常

20.04 启动时和 unix 套接字出现 pulseaudio 异常

我有一个适用于 Ubuntu 19.10 的工作 pulseaudio 设置,其中默认接收器设置为板载英特尔,而 module-native-protocol-unix 设置为带有 auth-anon 的套接字。

20.04 中的相同设置表现非常奇怪,如果我在启动时运行该配置,它会声称接收器不存在,这会搞砸整个事情。但是,如果我只使用 default.pa 的接收器部分进行启动,它仍然会抱怨它在启动时找不到它,但杀死脉冲后它会完美地返回,然后找到接收器。然后我可以在实时系统上更改为让原始配置文件重新启动脉冲,它工作正常,套接字已创建,默认接收器仍可正常工作。

我不明白这两个版本之间发生了什么变化,或者为什么只有在启动时配置才重要。

好的,已修复默认接收器 - 出于某种原因,此版本的 pulse/ubuntu 需要先手动设置卡配置文件,以便它能够按名称找到卡,并在启动时使用它。虽然系统启动后,更改配置可以完美运行。而以前的版本在启动时只找到名称 alsa_card.pci## 就足够了。

我认为我找到了一个线索,即 unix 套接字 - 出于某种原因,工作安装上由相同系统范围的脉冲配置创建的套接字归用户所有,而 gdm 则无法正常工作(我真不敢相信我花了这么长时间才检查到这一点)。我以为这不仅仅是一个线索,但现在我更加困惑了,因为在摆弄 chown 等时它开始工作了,而现在我根本无法让它恢复正常……

好的,我知道如何通过使用 -vv 标志手动启动 pulseaudio 来使其再次运行。出于某种原因,这种方法可行,而自动生成的脉冲或仅使用 pulseaudio --start 手动启动的脉冲在探测其状态时会失败并显示以下内容。

Jun 05 00:10:24 Archive pulseaudio[2637]: bind(): Address already in use
Jun 05 00:10:24 Archive pulseaudio[2637]: Failed to load module "module-native-protocol-unix" (argument: "auth-anonymous=1 socket=/tmp/pulse-socket"): initialization failed.

请问有什么想法吗?

答案1

好的,终于有时间想出解决办法了。出于某种原因,pulse Unix 套接字的创建者很重要(即使它对每个人都有所有权限)。而且 Gnome 在启动时运行 pulse - 默认情况下使用系统配置和一些额外的位。因此,只需在 /var/lib/gdm3/.config/pulse/default.pa 中注释掉 use system conf(或者给它一个定制的配置,我想 - 我不认为注释掉后我会得到登录前的声音)即可解决此问题。

我认为这是 pulse 启动时的一个错误/过分谨慎的安全功能 - 它无法创建文件,因为它存在,也不会使用它,因为它没有创建它。为什么使用 -v 标志重新启动 pulse 会起作用,而仅使用 --start 却不起作用,这让我有点困惑 - 使用 -v 标志它会覆盖套接字 - 所以我推测它要么不检查并中止,要么首先在详细模式下执行清理步骤。但我根本没有查看过 Pulse 的代码。

相关内容