实验室的台式机一直有点毛病,开机后首次登陆,桌面本身能够打开,KDE上次登出前保留的那些窗口也能打开,但无法打开新窗口。在上次登出时保留的那个Konsole中启动xclock,得到错误如下:
Xlib: Invalid MIT-MAGIC-COOKIE-1 balabalabala
另外,只有第一次登陆声音是正常的,再次登陆后就会出现音频服务未启动。我本来以为是Linux对双显+HDMI音频支持的不好,再加上也不是很频繁,就一直没仔细看。然而这周问题出的却相当频繁,所以我觉得有必要处理一下了。
那么就先从这个报错开始Google,虽然没见到跟我一样的情况,但看到了VNC登陆时也会出现这个问题,另外Ubuntu登陆后无法启动图形界面又跳回登陆界面也会出现这玩意。给出的解决方案都指向了.Xauthority文件,有的说删除就好了,有的说要在/root下面建立个符号链接啥的。
根据维基百科的说法,这个文件下存放了用于向XServer证明身份的信息,如果这玩意不对,那显然会出现上述的几个问题。然后我就把它删了,重启试试。
然而依旧不行,不过这时我发现了另一个问题,是关于Konsole的提示符:
FukoMaster@localhost:~>
我平时的提示符应该是FukoMaster-Desktop,登出后再重新登入,用户名就变成了FukoMaster-Desktop,XServer正常连接。那么会不会是这个现象造成的?
不妨试一试,多重启几遍后发现,显示为localhost时就会失败。打开.Xauthority,发现里面有两条Cookie,一条主机名是localhost的,一条主机名是FukoMaster-Desktop,这显然是用错了Cookie了。
那么主机名为什么会跳呢?仔细检查配置发现,在安装操作系统的时候偷了个懒,没指定hostname,而是由DHCP获取的,然而网络配置是由NetworkManager进行的,NM的启动顺序又很靠后,因此X11启动的时候,eth0还没初始化,只有loopback被初始化了,所以自然就得到了localhost这么个主机名。后来NM通过DHCP配置好了eth0,顺手重写了hostname,自然就出了这个问题。
因此得出了解决方案,手动指定好hostname,问题解决。
接下来是音频的问题,音频是由pulseaudio来处理的,查看进程后发现上次登出时留下了一个pulseaudio进程,然而DBus却无法与此进程通信,才出现了这个问题。因此只需要手动kill掉,然后再启动一个新的就好了。
不过,像fcitx等服务也会出这问题,所以大概还是不要注销比较省心(笑)。