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.