sddm的奇怪问题

本文最后修改于 468 天前,部分内容可能已经过时!

在新的笔记本上头安装好Arch后,最近几次突然出现了个奇怪的问题:

系统检查完成后,sddm总是起不来。但系统是已经启动成功的,因为我可以切换到tty界面进行操作。但尝试在tty界面输入sddm,却给我返回错误:

Failed to read display number from pipe

但是,通过systemctl restart sddm重启一次服务,却又可以正常启动了,直到下一次重新启动需要再进行一次这个步骤。

真是头一次遇到这种问题……

后来在Archlinuxcn的群组里搜索了一番,看到了一个解释,说是熵不够。可以通过命令

cat /proc/sys/kernel/random/entropy_avail

来查看熵值。想要sddm启动需要差不多2000的样子。

我照做了。然后得到了刚启动时候的熵值:20

虽然到了也没明白为什么sddm启动要检查熵,但是这很明显差得太多了,那问题应该就是这里了。

有没有什么办法能提高熵的值呢?还真有。

pacman -S rng-tools
systemctl enable rngd

重启。

真好,刚启动就2700多了呢。

但是,对sddm启动的解决卵用也没有…

后来又看到一个,大概意思就是:

kabylake架构的CPU,要把驱动加入内核

来试一下:

  1. 安装intel驱动:pacman -S xf86-video-intel
  2. 编辑/etc/mkinitcpio.conf,在MODULES=的括号内增加intel_agp i915
  3. 重新生成initramfs。以防万一,先不做覆盖:mkinitcpio -c /etc/mkinitcpio.conf -g /boot/linux-i915.img
  4. 重新启动。在grub处按 e 编辑启动项,将 initramfs-linux.img 位置更改为 linux-i915.img,按F10启动

啊…终于成功了。虽然熵才30多,但sddm也终于能一次起来了。

既然启动成功了,就可以把这个自定义的名称更改成initramfs-linux.img并覆盖原先的镜像了。不过为了安全,把原先镜像做个备份大概也是有必要的。

不过,虽然解决这个问题了,但我到底也没闹清楚为什么这种架构的CPU要启用KMS,更不明白为啥提高熵也能解决一部分sddm卡住的问题…

不过还行,从解决到现在,驱动啥的都滚了几个版本了,找时间去掉这俩模块再试一下

创建时间:2019年11月05日
最后修订:2019年11月22日
另请参阅:
ArchlinuxManjaroKDE
上一篇
打赏
下一篇

添加新评论

已有 6 条评论

 Asiaidc.net 9 个月前 • |

遇到问题边折腾也才能边成长、进步。。。

 max 7 个月前 • |

我也遇到SDDM无法气动的问题,但我的是笔记本CPU是AMD 3500U,就是安装系统时没有插外接显示器,但是在一次启动前插上 了外接显示器。显示SDDM启动失败。
进入TTY2手动启动sddm,得到信息如下:
Initializing...
Starting...
logind interface found
Adding new display on vt 1
Loading theme configuration from ""
Display server starting...
Running: /usr/bin/X -nolisten tcp -auth /var/run/sddm/{e4beed09-a27f-4c28-b69a-d00308c6565c} -background none -noreset -displayfd 16 -seat seat0 vt1
Failed to read display number from pipe
Display server failed to start.Exiting
我的重启sddm服务也没有用,提高熵的方法也没有用,请问你有没有思路如何处理。

 等我稍后补充昵称 6 个月前 • |
@max

意思就是拔掉外接显示器就能用?有独显吗?有的话是啥的?

 max 6 个月前 • |
@等我稍后补充昵称

没有独显,拔掉外接显示器也无法恢复正常启动

 max 6 个月前 • |
@max

没有独显,拔掉外接显示器也无法正常启动sddm

 等我稍后补充昵称 6 个月前 • |
@max

那就试试把i915加入到勾子里边吧…就跟我这文章说的这样似的