Raspbian jessie で起動時にGUIのログイン画面を出さないようにする方法

Raspberry Pi 2 Raspbian jessie をシリアルコンソールで使っています。
ふとps axでプロセスを見るとXサーバーとか不要なプロセスがたくさん動いているのに気がつきました。確かRaspbian wheezy では明示的にstartxコマンドを実行しないとこれらのプロセスは起動されなかったはずです。jessieになってからこのあたりが変わってしまいました。

最初に結論

余計なプロセスが動いているのは嫌なので、これらを止めます。
一時的に止めるには

$ sudo systemctl stop lightdm

起動時にlightdmが動かないようにするには

$ sudo systemctl set-default multi-user.target

元に戻すときには

$ sudo systemctl set-default graphical.target

以下はメモ

Raspbian jessie ではデフォルトで以下のようなプロセスが動いていました。

$ ps ax
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:04 /sbin/init
    2 ?        S      0:00 [kthreadd]
    3 ?        S      0:00 [ksoftirqd/0]
    5 ?        S<     0:00 [kworker/0:0H]
    6 ?        S      0:00 [kworker/u8:0]
    7 ?        S      0:00 [rcu_preempt]
    8 ?        S      0:00 [rcu_sched]
    9 ?        S      0:00 [rcu_bh]
   10 ?        S      0:00 [migration/0]
   11 ?        S      0:00 [migration/1]
   12 ?        S      0:00 [ksoftirqd/1]
   14 ?        S<     0:00 [kworker/1:0H]
   15 ?        S      0:00 [migration/2]
   16 ?        S      0:00 [ksoftirqd/2]
   19 ?        S      0:00 [migration/3]
   20 ?        S      0:00 [ksoftirqd/3]
   22 ?        S<     0:00 [kworker/3:0H]
   23 ?        S<     0:00 [khelper]
   24 ?        S      0:00 [kdevtmpfs]
   25 ?        S<     0:00 [netns]
   26 ?        S<     0:00 [perf]
   27 ?        S      0:00 [khungtaskd]
   28 ?        S<     0:00 [writeback]
   29 ?        S<     0:00 [crypto]
   30 ?        S<     0:00 [bioset]
   31 ?        S<     0:00 [kblockd]
   32 ?        S      0:00 [kworker/1:1]
   33 ?        S<     0:00 [rpciod]
   34 ?        S      0:00 [kswapd0]
   35 ?        S      0:00 [fsnotify_mark]
   36 ?        S<     0:00 [nfsiod]
   42 ?        S<     0:00 [kthrotld]
   43 ?        S      0:00 [kworker/0:1]
   44 ?        S<     0:00 [VCHIQ-0]
   45 ?        S<     0:00 [VCHIQr-0]
   46 ?        S<     0:00 [VCHIQs-0]
   47 ?        S<     0:00 [iscsi_eh]
   48 ?        S<     0:00 [dwc_otg]
   49 ?        S<     0:00 [DWC Notificatio]
   51 ?        S      0:00 [VCHIQka-0]
   52 ?        S<     0:00 [SMIO]
   53 ?        S<     0:00 [deferwq]
   54 ?        S      0:00 [kworker/u8:2]
   55 ?        S      0:00 [mmcqd/0]
   57 ?        S      0:00 [kworker/2:1]
   58 ?        S<     0:01 [kworker/0:1H]
   59 ?        S<     0:00 [kworker/1:1H]
   60 ?        S<     0:00 [ipv6_addrconf]
   71 ?        S<     0:00 [kworker/3:1H]
   72 ?        S<     0:00 [kworker/2:1H]
   95 ?        D      0:00 [kworker/0:2]
  104 ?        Ss     0:00 /lib/systemd/systemd-journald
  107 ?        Ss     0:00 /lib/systemd/systemd-udevd
  211 ?        S      0:00 [kworker/3:2]
  233 ?        S      0:00 [kworker/2:2]
  290 ?        S      0:00 [kworker/1:3]
  407 ?        S<     0:00 [cfg80211]
  497 ?        S      0:00 [kworker/3:3]
  499 ?        Ss     0:00 avahi-daemon: running [raspberrypi.local]
  501 ?        Ss     0:00 /usr/sbin/cron -f
  502 ?        Ssl    0:00 /usr/sbin/rsyslogd -n
  503 ?        Ss     0:00 /lib/systemd/systemd-logind
  504 ?        Ss     0:00 /usr/bin/dbus-daemon --system --address=systemd: --no
  505 ?        Ss     0:00 /sbin/dhcpcd -q -b
  507 ?        S      0:00 avahi-daemon: chroot helper
  536 ?        Ss     0:00 /usr/sbin/thd --daemon --triggers /etc/triggerhappy/t
  540 ?        Ss     0:00 /usr/sbin/sshd -D
  549 ?        Ssl    0:00 /usr/sbin/lightdm
  571 tty1     Ss     0:00 /bin/login -f   
  575 ?        Ss     0:00 /bin/login --   
  590 ?        S      0:00 /usr/sbin/ifplugd -i eth0 -q -f -u0 -d10 -w -I
  613 ?        Ss     0:00 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 107:112
  637 tty7     Ss+    0:01 /usr/bin/X :0 -seat seat0 -auth /var/run/lightdm/root
  710 ?        Ss     0:00 /lib/systemd/systemd --user
  718 ?        S      0:00 (sd-pam)  
  726 ?        Sl     0:00 lightdm --session-child 13 16
  729 tty1     S+     0:00 -bash
  746 ?        Ssl    0:00 /usr/bin/lxsession -s LXDE-pi -e LXDE
  777 ?        Ss     0:00 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-s
  780 ?        S      0:00 /usr/bin/dbus-launch --exit-with-session x-session-ma
  781 ?        Ss     0:00 /usr/bin/dbus-daemon --fork --print-pid 5 --print-add
  788 ?        Sl     0:00 /usr/lib/gvfs/gvfsd
  792 ?        Sl     0:00 /usr/lib/gvfs/gvfsd-fuse /run/user/1000/gvfs -f -o bi
  802 ?        S      0:00 openbox --config-file /home/pi/.config/openbox/lxde-p
  803 ?        Sl     0:00 lxpolkit
  806 ?        Sl     0:04 lxpanel --profile LXDE-pi
  808 ?        Sl     0:01 pcmanfm --desktop --profile LXDE-pi
  814 ?        Ss     0:00 /usr/bin/ssh-agent -s
  818 ?        Ssl    0:00 /usr/lib/policykit-1/polkitd --no-debug
  824 ?        Sl     0:00 /usr/lib/gvfs/gvfs-udisks2-volume-monitor
  832 ?        Ssl    0:00 /usr/lib/udisks2/udisksd --no-debug
  842 ?        S

/usr/bin/X がXサーバ。シリアルコンソールだけで使っているなら不要なので、止めたい。
プロセスの親子関係を調べる。

$ pstree
systemd─┬─avahi-daemon───avahi-daemon
        ├─cron
        ├─2*[dbus-daemon]
        ├─dbus-launch
        ├─dhcpcd
        ├─gvfs-afc-volume─┬─{gdbus}
        │                 └─{gvfs-afc-volume}
        ├─gvfs-goa-volume───{gdbus}
        ├─gvfs-gphoto2-vo───{gdbus}
        ├─gvfs-mtp-volume───{gdbus}
        ├─gvfs-udisks2-vo─┬─{gdbus}
        │                 └─{gmain}
        ├─gvfsd───{gdbus}
        ├─gvfsd-fuse─┬─{gdbus}
        │            ├─{gvfs-fuse-sub}
        │            └─2*[{gvfsd-fuse}]
        ├─gvfsd-trash─┬─{gdbus}
        │             └─{gmain}
        ├─ifplugd
        ├─lightdm─┬─Xorg
        │         ├─lightdm─┬─lxsession─┬─lxpanel─┬─{gdbus}
        │         │         │           │         ├─{gmain}
        │         │         │           │         ├─{menu-cache-io}
        │         │         │           │         ├─{task0}
        │         │         │           │         └─{task1}
        │         │         │           ├─lxpolkit───{gdbus}
        │         │         │           ├─openbox
        │         │         │           ├─pcmanfm─┬─{gdbus}
        │         │         │           │         └─{gmain}
        │         │         │           ├─ssh-agent
        │         │         │           ├─{gdbus}
        │         │         │           └─{gmain}
        │         │         ├─{gdbus}
        │         │         └─{gmain}
        │         ├─{gdbus}
        │         └─{gmain}
        ├─login───bash
        ├─login───bash───pstree
        ├─menu-cached─┬─{gdbus}
        │             └─{gmain}
        ├─ntpd
        ├─polkitd─┬─{gdbus}
        │         └─{gmain}
        ├─pulseaudio───{alsa-sink-bcm28}
        ├─rsyslogd─┬─{in:imklog}
        │          ├─{in:imuxsock}
        │          └─{rs:main Q:Reg}
        ├─rtkit-daemon───2*[{rtkit-daemon}]
        ├─ssh-agent
        ├─sshd
        ├─start-pulseaudi───xprop
        ├─systemd───(sd-pam)
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─thd
        └─udisksd─┬─{cleanup}
                  ├─{gdbus}
                  ├─{gmain}
                  └─{probing-thread}

systemdがlightdmを起動するのを止めればよさそう。

$ sudo systemctl stop lightdm
$ ps ax
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:04 /sbin/init
    2 ?        S      0:00 [kthreadd]
    3 ?        S      0:00 [ksoftirqd/0]
    5 ?        S<     0:00 [kworker/0:0H]
    6 ?        S      0:00 [kworker/u8:0]
    7 ?        S      0:00 [rcu_preempt]
    8 ?        S      0:00 [rcu_sched]
    9 ?        S      0:00 [rcu_bh]
   10 ?        S      0:00 [migration/0]
   11 ?        S      0:00 [migration/1]
   12 ?        S      0:00 [ksoftirqd/1]
   14 ?        S<     0:00 [kworker/1:0H]
   15 ?        S      0:00 [migration/2]
   16 ?        S      0:00 [ksoftirqd/2]
   19 ?        S      0:00 [migration/3]
   20 ?        S      0:00 [ksoftirqd/3]
   22 ?        S<     0:00 [kworker/3:0H]
   23 ?        S<     0:00 [khelper]
   24 ?        S      0:00 [kdevtmpfs]
   25 ?        S<     0:00 [netns]
   26 ?        S<     0:00 [perf]
   27 ?        S      0:00 [khungtaskd]
   28 ?        S<     0:00 [writeback]
   29 ?        S<     0:00 [crypto]
   30 ?        S<     0:00 [bioset]
   31 ?        S<     0:00 [kblockd]
   32 ?        S      0:00 [kworker/1:1]
   33 ?        S<     0:00 [rpciod]
   34 ?        S      0:00 [kswapd0]
   35 ?        S      0:00 [fsnotify_mark]
   36 ?        S<     0:00 [nfsiod]
   42 ?        S<     0:00 [kthrotld]
   44 ?        S<     0:00 [VCHIQ-0]
   45 ?        S<     0:00 [VCHIQr-0]
   46 ?        S<     0:00 [VCHIQs-0]
   47 ?        S<     0:00 [iscsi_eh]
   48 ?        S<     0:00 [dwc_otg]
   49 ?        S<     0:00 [DWC Notificatio]
   51 ?        S      0:00 [VCHIQka-0]
   52 ?        S<     0:00 [SMIO]
   53 ?        S<     0:00 [deferwq]
   54 ?        S      0:00 [kworker/u8:2]
   55 ?        S      0:00 [mmcqd/0]
   57 ?        S      0:00 [kworker/2:1]
   58 ?        S<     0:01 [kworker/0:1H]
   59 ?        S<     0:00 [kworker/1:1H]
   60 ?        S<     0:00 [ipv6_addrconf]
   71 ?        S<     0:00 [kworker/3:1H]
   72 ?        S<     0:00 [kworker/2:1H]
   95 ?        S      0:00 [kworker/0:2]
  104 ?        Ss     0:00 /lib/systemd/systemd-journald
  107 ?        Ss     0:00 /lib/systemd/systemd-udevd
  211 ?        S      0:00 [kworker/3:2]
  233 ?        S      0:00 [kworker/2:2]
  407 ?        S<     0:00 [cfg80211]
  497 ?        S      0:00 [kworker/3:3]
  499 ?        Ss     0:00 avahi-daemon: running [raspberrypi.local]
  501 ?        Ss     0:00 /usr/sbin/cron -f
  502 ?        Ssl    0:00 /usr/sbin/rsyslogd -n
  503 ?        Ss     0:00 /lib/systemd/systemd-logind
  504 ?        Ss     0:00 /usr/bin/dbus-daemon --system --address=systemd: --no
  505 ?        Ss     0:00 /sbin/dhcpcd -q -b
  507 ?        S      0:00 avahi-daemon: chroot helper
  536 ?        Ss     0:00 /usr/sbin/thd --daemon --triggers /etc/triggerhappy/t
  540 ?        Ss     0:00 /usr/sbin/sshd -D
  571 tty1     Ss     0:00 /bin/login -f   
  575 ?        Ss     0:00 /bin/login --   
  590 ?        S      0:00 /usr/sbin/ifplugd -i eth0 -q -f -u0 -d10 -w -I
  613 ?        Ss     0:00 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 107:112
  710 ?        Ss     0:00 /lib/systemd/systemd --user
  718 ?        S      0:00 (sd-pam)  
  729 tty1     S+     0:00 -bash
  814 ?        Ss     0:00 /usr/bin/ssh-agent -s
  818 ?        Ssl    0:00 /usr/lib/policykit-1/polkitd --no-debug
  832 ?        Ssl    0:00 /usr/lib/udisks2/udisksd --no-debug
  843 ?        SNsl   0:00 /usr/lib/rtkit/rtkit-daemon
  868 ttyAMA0  S      0:00 -bash
  882 ?        S<     0:00 [kworker/2:2H]
 1792 ?        S      0:00 [kworker/0:0]
 1793 ?        S      0:00 [kworker/1:0]
 2130 ?        S      0:00 [kworker/3:0]
 2133 ?        S      0:00 [kworker/0:1]
 2173 ttyAMA0  R+     0:00 ps ax

これでスッキリしました。
最初から動かないようにしたいので、

$ sudo systemctl disable lightdm

としてみたけど、リブートするとまだlightdm以下いろいろなプロセスが起動されてしまって効果無し。

ネットで調べて以下のページを発見。
Debian User Forums • View topic - [SOLVED] systemd, masked services, and disabling lightdm

$ systemctl get-default
graphical.target

となっていたので、以下のようにして解決。

$ sudo systemctl set-default multi-user.target
Created symlink from /etc/systemd/system/default.target to /lib/systemd/system/multi-user.target.