やるきなし

2015/10/14 14:06 / Xorg on sid, gdm3 が起動しない

しばらく再起動していなかったのだが,なんだか挙動がおかしくなってきたので再起動すると,Xが起動しないという Debian GNU/Linux sid (unstable) に良くあるいつものパタン.

以下のような環境で,まず gdm3 が起動しない.

/var/log/messages によると /usr/lib/gdm3/gdm-x-session がこけて gnome-shell の起動に失敗している.これがひたすら繰り返されて画面とログが結構大変なことになっていた.

以下死ぬところの様子.

Oct 14 13:47:34 hoge /usr/lib/gdm3/gdm-x-session[22290]: (EE) Please also check the log file at "/var/lib/gdm3/.local/share/xorg/Xorg.0.log" for additional information.
Oct 14 13:47:34 hoge /usr/lib/gdm3/gdm-x-session[22290]: (EE)
Oct 14 13:47:34 hoge /usr/lib/gdm3/gdm-x-session[22290]: (EE) Server terminated with error (1). Closing log file.
Oct 14 13:47:34 hoge /usr/lib/gdm3/gdm-x-session[22290]: Unable to run X server
Oct 14 13:47:34 hoge gdm3: Child process -22290 was already dead.
Oct 14 13:47:34 hoge gdm3: Child process 22287 was already dead.
Oct 14 13:47:34 hoge gdm3: Unable to kill session worker process
Oct 14 13:47:34 hoge gnome-session[22300]: gnome-session[22300]: WARNING: Could not parse desktop file orca-autostart.desktop or it references a not found TryExec binary
Oct 14 13:47:34 hoge gnome-session[22300]: (gnome-shell:22306): Clutter-CRITICAL **: Unable to initialize Clutter: Unable to initialize the Clutter backend
Oct 14 13:47:34 hoge gnome-session[22300]: (gnome-shell:22306): mutter-ERROR **: Unable to initialize Clutter.
Oct 14 13:47:34 hoge kernel: [ 1110.944017] traps: gnome-shell[22306] trap int3 ip:7f8679b9388b sp:7ffec7c23a50 error:0
Oct 14 13:47:34 hoge gnome-session[22300]: gnome-session[22300]: WARNING: Application 'gnome-shell-wayland.desktop' killed by signal 5
Oct 14 13:47:34 hoge /usr/lib/gdm3/gdm-wayland-session[22297]: Activating service name='ca.desrt.dconf'
Oct 14 13:47:34 hoge /usr/lib/gdm3/gdm-wayland-session[22297]: Successfully activated service 'ca.desrt.dconf'
Oct 14 13:47:34 hoge gdm3: GdmDisplay: display lasted 0.105362 seconds
Oct 14 13:47:34 hoge gdm3: Child process -22297 was already dead.
Oct 14 13:47:34 hoge gdm3: Child process 22294 was already dead.
Oct 14 13:47:34 hoge gdm3: Unable to kill session worker process

最近は /var/log/Xorg.0.log ではなく(ユーザ毎に) /var/lib/gdm3/.local/share/xorg/Xorg.0.log にログが保存されるらしい.一般ユーザが startx したら ~/.local/share/xorg/Xorg.0.log にログが保存される.

% startx -- -verbose n -logverbose n
(n は適当に大きめの数)

上とかで verbose にログを吐かせて調べてみると /dev/dri/card0 が開けなくて死んでいるらしい.ちなみに GPU は NVIDIA.

% ls -arlt /dev/dri/card0
crw-rw----+ 1 root video 226, 0 Oct 14 14:02 /dev/dri/card0

chmod 666 等してもなぜかうまく行かなかったので sudo vigr で video group に Debian-gdm (gdm3を起動する pseudo user)を追加.これで gdm3 を restart したら,gdm3 が起動してくれた.

がしかし,ログインができない.ということでログインユーザも video group に追加.

あと,Windows 機上の VMWare で飼っている Debian GNU/Linux sid (unstable) は vmmouse (xserver-xorg-input-vmmouse)が動いてくれない.Xorg は起動するが,マウスが反応しない.

こちらもいろいろ試したがダメだったので,以下をして,通常の mouse driver で使うことにした.ただしこれだと Guest と Host をマウスで行ったり来たりする際に,マウスがかなりの頻度であらぬところに飛ぶ.

% sudo aptitude purge xserver-xorg-input-vmmouse

追記(2015/10/15)

xserver-xorg-input-vmmouse の件,sudo startx だと mouse が動くので,user で起動した場合と root で起動した場合との差分をとってみた.

- xf86EnableIOPorts: failed to set IOPL for I/O (Operation not permitted)
- (EE) PreInit returned 2 for "ImPS/2 Generic Wheel Mouse"
- (II) VMWARE(0): VMMouseUnInit
- (II) UnloadModule: "vmmouse"
+ (II) VMWARE(0): vmmouse is available
+ (**) Option "Device" "/dev/input/event5"
+ (**) ImPS/2 Generic Wheel Mouse: ZAxisMapping: buttons 4 and 5
+ (**) Option "config_info" "udev:/sys/devices/platform/i8042/serio1/input/input10/event5"
+ (II) XINPUT: Adding extended input device "ImPS/2 Generic Wheel Mouse" (type: MOUSE, id 10)
+ (II) VMWARE(0): VMMOUSE DEVICE_INIT
+ (**) ImPS/2 Generic Wheel Mouse: (accel) keeping acceleration scheme 1
+ (**) ImPS/2 Generic Wheel Mouse: (accel) acceleration profile 0
+ (**) ImPS/2 Generic Wheel Mouse: (accel) acceleration factor: 2.000
+ (**) ImPS/2 Generic Wheel Mouse: (accel) acceleration threshold: 4
+ (II) VMWARE(0): VMMOUSE DEVICE_ON
+ (**) Option "Device" "/dev/input/event5"
+ (II) VMWARE(0): vmmouse enabled

xf86EnableIOPorts がこけて(IOPL)いるようなのだが,Google に聞いてもあまり情報がなく(ソースコードを見なければわからない?),この付近で断念.

追記(2015/10/15)

ソースコードを追ってみた.

% apt-get source xserver-xorg-input-vmmouse
% cd xserver-xorg-input-vmmouse-13.0.99
% vi src/vmmouse.c
(下にあるパッチ参照)
% fakeroot make -f debian/rules clean binary

上でつくった deb を dpkg -i すれば動いた.

--- a/src/vmmouse.c
+++ b/src/vmmouse.c
@@ -420,7 +420,7 @@ VMMousePreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
           xorgHWAccess = TRUE;
       else {
           rc = BadValue;
-          goto error;
+//        goto error;
       }
    }

この箇所

   if (!xorgHWAccess) {
      if (xf86EnableIO())
          xorgHWAccess = TRUE;
      else {
          rc = BadValue;
          goto error;
      }
   }

となっていて,xf86EnableIO() を叩くのだが,これがコケる模様.このxf86EnableIO()は http://lists.x.org/archives/xorg-devel/2012-May/030838.html で導入されたっぽいが,なくても大丈夫らしい.

この付近に関連するような気もするが,動いたのでとりあえず良しとする.

追記(2015/11/24)

xserver-xorg-input-vmmouse の件,xserver-xorg-input-vmmouse 1:13.1.0-1 でも同様.上記 patch で解決可能.

Related articles