2

Gentoo 除错日志

 2 years ago
source link: https://z-rui.github.io/post/2017/12/gentoo-debug/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Gentoo 除错日志

Mon Dec 25, 2017

2018-6-9 更新: 文中部分过时信息已用删除线划去。

之前几天重新配置了我的 Gentoo 桌面环境。很遗憾的是官方源中的 Gnome 在不用 systemd 的情况下是无法顺利安装的,我暂时不打算更换整个 init 系统,所以我先装了 Xfce 凑合。(除了功能稍显单薄,Xfce 的各方面我都很喜欢,可能是因为它是我用过的第一个 Linux 桌面环境。)

rui@localhost ~ $ uname -a
Linux localhost 4.14.8-gentoo-r1 #6 SMP Mon Dec 25 16:54:41 EST 2017 x86_64 Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz GenuineIntel GNU/Linux

在内核里配置好了显卡、网卡、声卡后,桌面环境基本就可用了。这里的一个注意点是,要把驱动配置为内核模块,否则无法加载固件。固件从 linux-firmware 包中安装即可。为了节省空间,我利用 savedconfig USE 选项,只安装如下文件:

i915/skl_dmc_ver1_26.bin
intel/ibt-11-5.ddc
intel/ibt-11-5.sfi
iwlwifi-8000C-27.ucode

安装 alsautils 和 xfce4-alsa-plugin 可以实现音量控制。后者功能很弱,不支持键盘快捷键。可以在 xfce4-keyboard-settings 中手动绑定:

amixer set Master 5%+    # 增大音量
amixer set Master 5%-    # 减小音量
amixer set Master toggle # 切换静音

暂时没发现蓝牙耳机的解决方案(不使用 PulseAudio 的情况下)。目前最好的结果是可以用 speaker-test 放出声音,但是 firefox 等应用程序的声音仍输出至扬声器,且 alsamixer 的声卡列表中找不到相应选项。参考12

Xfce 和 elogind 可以和平共处,这样就不需要 ConsoleKit 了。

USE='-consolekit elogind'

但是 elogind 仍处在测试阶段,要去掉 mask 才能使用。 elogind 目前已有稳定版本,直接安装即可。

在有 ConsoleKit/elogind 以及 PolicyKit 的情况下,可以从图形界面直接睡眠/关机。否则,只能用 root 执行 poweroff 来关机。

问题来了:我每次选择“睡眠”时,屏幕关闭,但系统要过 10 秒左右才进入睡眠状态。从睡眠状态恢复时,界面无响应约半分钟。

我怀疑是 elogind 的问题,因为之前我用 ConsoleKit 的时候并没有遇到这种问题。但是,我禁用了 elogind 后,手动睡眠

echo mem > /sys/power/state

仍有同样的问题。因此可能是内核选项配置有误。我找了和电源管理有关的选项,没发现可疑的部分。网上查了很久 “freeze suspend” 相关内容,没有找到可用的解决方案。

dmesg -H,发现睡眠前后有声卡驱动的错误信息。于是禁用声卡驱动启动,睡眠问题消失。至此确定是声卡驱动的锅。到网上查询该错误信息,得到解决方案:编辑 /etc/modprobe.d/intel.conf

options snd-hda-intel single_cmd=1
options snd-hda-intel probe_mask=1

问题解决。该解决方案网上也极难找到。 正确做法是在内核选项中同时开启CONFIG_SND_HDA_CODEC_HDMICONFIG_SND_HDA_CODEC_CONEXANT(只开后者便会出现上述问题)。

安装 xfce4-power-manager 时,为了不引入 ConsoleKit 的依赖,需要启用 systemd USE 选项(此选项并不引入 systemd 依赖,见#639432)。当与 elogind 配合使用时,在笔记本盖子合上时无法自动进入睡眠状态。解决方案是

xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/logind-handle-lid-switch -s false

网上能找到其他的解决方案,但对我无效。

睡眠是桌面系统的基本功能。这都能出问题,很难想象 Linux 的桌面环境在其他方面能好到哪里去。一方面是内核驱动造成的无响应问题,另一方面是 userspace 的问题:ConsoleKit、elogind、UPower……不知道是什么道理,要把一个简单的事情弄得那么复杂,而且软件之间有着各种兼容性问题。



About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK