几周前,我的笔记本电脑上的 ALSA 和 USB 停止工作。YouTube 视频等内容在 Firefox 中没有声音;mpv
打印[ao/alsa] Playback open error: No such file or directory. Could not open/initialize audio device -> no sound.
.alsamixer
抱怨没有这样的文件mixer
。闪存驱动器不会出现在/dev
或中/dev/disk
,并且它们的 LED 不会亮起。奇怪的是,我仍然可以使用端口为手机充电……
udev
似乎也出现了问题,启动延迟了整整一分钟(它自己延迟了!)waiting for uevents to be processed ...
并且关机延迟了半分钟(我计时了)stopping udev ...
。它还向内核日志发出抱怨:
<28>[ 130.669180] udevd[1745]: worker [1763] /devices/pci0000:00/0000:00:14.0 is taking a long time
<28>[ 130.669196] udevd[1745]: worker [1762] /devices/pci0000:00/0000:00:1b.0 is taking a long time
几分钟后:
[ 251.500125] udevd[1745]: worker [1763] /devices/pci0000:00/0000:00:14.0 timeout; kill it
[ 251.500156] udevd[1745]: seq 1333 '/devices/pci0000:00/0000:00:14.0' killed
[ 251.500166] udevd[1745]: worker [1762] /devices/pci0000:00/0000:00:1b.0 timeout; kill it
[ 251.500174] udevd[1745]: seq 1336 '/devices/pci0000:00/0000:00:1b.0' killed
[ 251.500535] udevd[1745]: worker [1763] terminated by signal 9 (Killed)
[ 251.500540] udevd[1745]: worker [1763] failed while handling '/devices/pci0000:00/0000:00:14.0'
这些 PCI 地址分别是用于 USB 控制器和音频设备的。另外,我注意到虽然似乎lsmod
没有显示任何异常,但/proc/modules
列出了xhci_pci
、snd_hda_intel
和,sunrpc
就像永恒的一样Loading
。modprobe
这三个(以及依赖于它们的其他程序)将挂起(-v
显示在尝试它们时挂起insmod
)。
系统在 Linux 4.4.6 上运行 Gentoo。udev 由 eudev 3.1.5 提供。根文件系统位于 LUKS 容器中;我使用 initrd 进行启动。
Web 和 Stack Exchange 搜索没有找到任何有用的信息。我检查了我的内核配置维基百科摘录并尝试重新出现eudev
(没有变化)。那么这里发生了什么?
答案1
虽然我没有完整的解释,TIMER_STATS
在内核配置中禁用(如果您使用 menuconfig 则是Kernel hacking
➔ )似乎已经修复了这个问题。Collect kernel timers statistics
我猜是因为某种原因,我的一些模块无法加载TIMER_STATS
,以某种奇怪的方式insmod
挂起。内核日志中提到的两个udev
工作器尝试加载它们,挂起,然后被杀死。由于缺少内核模块和任何设置udev
,声音和 USB 相关的东西……不起作用。
更新:
我意识到很多模块正在加载前 /
被安装。是非常我很困惑,直到我深入研究了我的 initrd,发现它有它的自己的 /lib/modules
,并附有一些模块(包括xhci_pci
和sunrpc
)的副本。尽管我确保在重建模块后将所有模块安装到根文件系统,但我从未重建 initrd,这意味着正在运行的内核的配置与它尝试加载的模块(部分)不同。显然,这导致了奇怪的事情。比如insmod
挂起。
因此,如果你使用 initrd,并且它有内核模块的副本,确保在重建内核时重建它。