Debian 9 (stretch) で適当 gdm などを入れると,gdm の systemd unit ファイルは,状態が static になる.gdm を無効にしたくて systemctl disable gdm
しても gdm が起動する.
この原因は,systemd が default.target
を見て起動シーケンスを決めているから.つまり, default.target
は systemd unit の中で最も依存関係的に根に近い unit のひとつ.
Debian 9 で適当に gdm などを入れると,(おそらくパッケージマネージャの postinst
などによって) default.target
が graphical.target
に依存するように更新される.graphical.target
はその名の通りコンピュータをグラフィカルに使うための unit を立ち上げるためのターゲットで,gdm もこれに依存されている.つまり,graphical.target
ではない,gdm を起動しない,なおかつコンピュータを使う上で必要な unit は起動するような target を default.target
にすればよい.
これに必要なターゲットは multi-user.target
で,設定するコマンドは systemctl set-default multi-user.target
.あるいは, multi-user.target
を直接編集してもいいかもしれない.
実際, graphical.target
は multi-user.target
+ display-manager.service
らしい 1.
この解決に役に立ったこと
systemctl list-dependencies ${UNIT}.service --all --reverse
list-dependencies はそのままだと依存されている unit を表示するが, --reverse
をつけることで指定した unit が依存している unit を探すことができる2.
背景
qtile を使うためにDMが起動するWMを選択したかったが,gdm が読む xsession のようなファイルを編集する必要がある.しかし,それが面倒くさかったため,~/.xinitrc
と startx
で起動することにしたかったが,なかなか gdm を無効にできず苦労した.
graphical.target
をやめると,pulseaudio とかが起動しなくなるかもと思ったが,これは display-manager.service
以下の管轄ではないらしく,とりあえず音は出た.