本文最后一次在 2019 年 11 月22 日更新,部分内容可能已经过时!

在新的笔记本上头安装好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卡住的问题…

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

已有 6 条评论

  1. 遇到问题边折腾也才能边成长、进步。。。 —— Asiaidc.net Asiaidc.net 发表。 回复TA
  2. 我也遇到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服务也没有用,提高熵的方法也没有用,请问你有没有思路如何处理。 —— max max 发表。 回复TA
    1. 意思就是拔掉外接显示器就能用?有独显吗?有的话是啥的? —— 等我稍后补充昵称 等我稍后补充昵称 [作者] 于 发表。 回复TA
      1. 没有独显,拔掉外接显示器也无法恢复正常启动 —— max max 发表。 回复TA
        1. 没有独显,拔掉外接显示器也无法正常启动sddm —— max max 发表。 回复TA
          1. 那就试试把i915加入到勾子里边吧…就跟我这文章说的这样似的 —— 等我稍后补充昵称 等我稍后补充昵称 [作者] 于 发表。

添加新评论