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.