前回は、systemd の service unit の先頭文字が a 〜 k までの 41 units について、機能を調べてみた。
hiro20180901.hatenablog.com
今回は、l 〜 r までの 23 units について調べてみた。
$ systemctl list-unit-files [l-r]*.service UNIT FILE STATE lightdm.service enabled module-init-tools.service static motd.service masked mountall-bootclean.service masked mountall.service masked mountdevsubfs.service masked mountkernfs.service masked mountnfs-bootclean.service masked mountnfs.service masked networking.service enabled polkit.service static procps.service static quotaon.service static rc-local.service static rc.local.service static rc.service masked rcS.service masked reboot.service masked rescue.service static rmnologin.service masked rsync.service enabled rsyslog.service enabled rtkit-daemon.service enabled 23 unit files listed.
lightdm
LXDE (The Lightweight X11 Desktop Environment) 用の window manager。debian の lxde (meta) package の depend で install されている。これが display-manager.service に symbolic link されていて、graphical.target の Wants となっている事から、graphical.target で起動する際に LXDE が使用される状態となっている。
module-init-tools
kmod.service と同様に systemd-modules-load.service への symbolic link となっていて、one shot で実行されている。kmod と module-init-tools は static で起動されていない。
motd (message of the day)
terminal の login message を作成する unit。/dev/null に symbolic link されていて masked。実際に使いたい時に作成するという事か。標準で /etc/motd には debian の message が書かれている。
mount*
mount*.service は全て masked。mountall と mountdevsubfs、mountnfs でググると SysVinit の sh script が引っかかるので、SysVinit の時代に存在した init script かも。
networking
debian 系の /etc/network/interfaces を使って network の設定を行う unit で、今は systemd-networkd を有効にしているので無効にしても構わないはず。
$ systemctl list-units *network* UNIT LOAD ACTIVE SUB DESCRIPTION networking.service loaded active exited Raise network interfaces systemd-networkd.service loaded active running Network Service systemd-networkd.socket loaded active running Network Service Netlink Socket network.target loaded active active Network LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 4 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use 'systemctl list-unit-files'. $ sudo systemctl disable networking.service Synchronizing state of networking.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install disable networking $ systemctl list-units *network* UNIT LOAD ACTIVE SUB DESCRIPTION networking.service loaded active exited Raise network interfaces systemd-networkd.service loaded active running Network Service systemd-networkd.socket loaded active running Network Service Netlink Socket network-online.target loaded active active Network is Online network.target loaded active active Network LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 5 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use 'systemctl list-unit-files'. $ systemctl list-unit-files *network* UNIT FILE STATE dbus-org.freedesktop.network1.service enabled networking.service disabled systemd-networkd-wait-online.service disabled systemd-networkd.service enabled systemd-networkd.socket enabled network-online.target static network-pre.target static network.target static 8 unit files listed.
ん? network-online.target が active になった。networking.service はちゃんと disable になっている。再起動してみると
$ systemctl list-units *network* UNIT LOAD ACTIVE SUB DESCRIPTION systemd-networkd.service loaded active running Network Service systemd-networkd.socket loaded active running Network Service Netlink Socket network.target loaded active active Network LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 3 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use 'systemctl list-unit-files'.
networking.service と network-online.service が消えた。接続は問題ないので、このまま様子を見る。
polkit
Polkit はシステム全体の権限をコントロールするのに使われます。非特権プロセスが特権プロセスと通信するための組織立った手段を提供します。sudo などのシステムと対照的に、Polkit は全てのプロセスに root 権限を与えるようなことはせず、より細かいレベルで中心システムのポリシーを制御することができます。
sudo だと root 権限を与えるか否かの2択になるし、group/user の制御だけでは細かい部分までは出来ない。特定の機能まで細やかに権限を決められる機能だと理解した。LXDE 用の認証 agent の lxpolkit が動作している。
$ systemctl list-unit-files polkit* UNIT FILE STATE polkit.service static 1 unit files listed. $ systemctl list-units polkit* UNIT LOAD ACTIVE SUB DESCRIPTION polkit.service loaded active running Authorization Manager LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 1 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use 'systemctl list-unit-files'.
polkit.service は static だが running となっている。polkit.service の中を見ると dbus 経由で起動しているので、他の service や target から Wants されていないので static、でも dbus 経由で起動しているので running、という事か。
procps
systemd-sysctl.service への symbolic link となっている。起動時の早い段階(sysinit.target の前) に one shot で実行されて、通常は static になっている模様。名称が procps なのは理由が分からないが、SysVinit 時代の起動時に sysctl (procps に含まれる) で行っていた事を代替したからだろうか。昔の initrd の中身を見ないと分からないが、紐解いて見てみたい。昔の kernel も見ておきたいが何時になるか。
quotaon
strage の使用量を制限する為の unit。debian だと quota package に quotaon、quotaoff が入っているので、これらが無いと機能しない。quotaon.service は systemd package から入っているが、本来は quota package から入るべき unit file だと思う。static で読み込まれていない。ArchWiki が参考になる。
wiki.archlinux.jp
rc-local (rc.local)
rc.local は rc-local への symbolic link。rc-local.service は、/etc/rc.local が存在し実行できる場合に multi-user.target の network.service の後に実行されるみたいだが、systemd-rc-local-generator も絡んでいるようでよく分からない。
www.freedesktop.org
ただ、SysVinit との互換の為に存在していて、非推奨の機能なので、使うことはないだろう。
rc、rcS
/dev/null に symbolic link されていて masked。ググっても情報なく分からず。多分 SysVinit との互換性の為に残していると思われる。
reboot、rescue
reboot 及び rescue は、前回調べた emergency と同様に、systemctl の引数として渡して状態を遷移する為の unit。
reboot.service は /dev/null に symbolic link されていて masked だが、reboot.target が存在していている。rescue.service は中身のある unit。
後で emergency と一緒に仕組みを調べてみる。
rmnologin
/dev/null に symbolic link されていて masked。/etc/nologin を削除するらしいが、SysVinit 互換の為の unit だろう。
rsync
同期 command の rsync daemon を起動する為の unit。multi-user.target から WantedBy されているので enabled だが、systemctl list-units では出てこない。systemctl list-dependency でも行頭のマークの色が消えている。/etc/rsyncd.conf が存在していないので起動していないのかも。
rsyslog
log を記録する為の rsyslog daemon を起動する為の unit。multi-user.target から WantedBy されて起動している。
rtkit-daemon (RealtimeKit Scheduling Policy Service)
graphical.target から WantedBy されて起動している。この unit は rtkit package に含まれている。
パッケージ: rtkit (0.12-4)_リアルタイムポリシー監視デーモン (Debian sid package)
realtimekit は user process/thread の優先度を上げて UI の操作性を向上させるための dbus system service なので、dbus に関係する unit である。
結果
- systemd service の先頭文字が l 〜 r の unit について機能を調べてみた。
- 相変わらず /dev/null に link されている service が多い。移行時の利便性はともかく、systemd のみで install した際には、rc-local のような非推奨の機能は削除しても良いと思うが...
- systemd-networkd.service を有効にしたので、networking.service を無効に設定した。特に問題ない。
- systemd の中身も見ないと分からない部分がありそう。これも後日。