hiroの長い冒険日記

主にコンピュータ周辺の興味を持った内容を綴ります

systemd ... SysVinit との違いと動作について その6

当日記ではアフィリエイト広告を利用しています

前回は、systemd の service unit の先頭文字が l 〜 r までの 23 units について、機能を調べてみた。
hiro20180901.hatenablog.com
今回は、systemd-* を除く s 〜 z までの 20 units について調べてみた。

$ systemctl list-unit-files [s-z]*.service | grep \.service | grep -v ^systemd 
sendsigs.service                     masked  
serial-getty@.service                disabled
single.service                       masked  
spice-vdagent.service                enabled 
spice-vdagentd.service               enabled 
ssh.service                          enabled 
ssh@.service                         static  
stop-bootlogd-single.service         masked  
stop-bootlogd.service                masked  
sudo.service                         disabled
udev.service                         static  
udisks2.service                      disabled
umountfs.service                     masked  
umountnfs.service                    masked  
umountroot.service                   masked  
urandom.service                      static  
usbmuxd.service                      static  
user@.service                        static  
wacom-inputattach@.service           static  
x11-common.service                   masked  

sendsigs

/dev/null に symbolic link されていて masked なので使用されていない。SysVinit 時代で runlevel 6 で reboot する際に、最初に実行されて killall する init scrip らしい。

serial-getty@

これは getty で取り上げたが、実際の serial line 用の template unit。

single

/dev/null に symbolic link されていて masked なので使用されていない。ググっても情報がないのでよく分からず。man systemd.special に記載が無いので emergency や rescue とも違う。

spice-vdagentd、spice-vdagent

hiro20180901.hatenablog.com
kvm (qemu) で使用している spice-vdagentd の unit で、spice-vdagent package から install されている。spice-vdagent は spice-vdagentd への symbolic link なので同一のもの。spice-vdagentd.target も存在している。kvm (qemu) 仮想マシン側では有効となっていて、kvm (qemu) の起動 option に設定すれば、仮想マシンと実マシンの間で cut & paste が有効になる。

ただし、仮想マシン側で systemctl list-dependency に spice-vdagent* は表示されていない。依存関係で起動している訳ではない。といって、実マシン側でも install したが static のままで起動していない。spice-vdagentd.service の中に

# TODO we should use:
#Requires=spice-vdagentd.socket

と記載があるので、本来なら socket で起動させる物を service で起動させているか、或いは udev rule が存在しているので udev 経由で起動させているか、どちらかと思う。

debian の spice-vdagent package の postinst には spice-vdagentd.socket についての処理も入っているので、将来的には対応されるのかも。ちなみに、deb package を直接 download して、dpkg -x packagename path で package を展開、dpkg -e packagename path で postinst 等の control-infomation を展開できる(備忘録)。

sshssh@

ssh は openssh-server から install されている unit。multi-user.target.wants に symbolic link が入っているので、依存関係で起動されている。ちょっと分からないのが、

  • template unit の ssh@.service が存在している事。外から ssh で入っても、template unit から生成される unit は起動していない。
  • 同名の ssh.socket が入っているが disable になっている。
  • /etc/systemd/system に sshd.service として symbolic link が存在しているが、有効になっていない。

ssh の様に SysVinit 時代から存在している daemon は、起動すれば自分自身で port で待ち受けるので(ssh だと 22/tcp、22/udp)、socket unit は不要なのだろうか。だとすれば、ssh.socket は不要に思うのだが...

stop-bootlogd-single、stop-bootlogd

どちらも /dev/null への link で masked。system boot 時の log を記録する為の bootlogd の停止用の unit だと思う。systemd では log の記録は journald で行われているので不要。bootlogd package の Description にも書かれている。

sudo

sudo package から install されている unit。multi-user.target を WantedBy しているが、disable になっている。sudo は効いているので、この unit が何故あるのかは不明。

udev

udev 用の unit。これは後で調べてみる。

udisks2

udisks2 package から install されている unit。
wiki.archlinux.jp
PolicyKit と dbus、udev で removable media の管理をする。dbus 経由で起動するので、disabled だが running の状態になる。

umount*

umountfs、umountnfs、umountroot の3つ共に /dev/null への symbolic link。umount.target が存在していて、
man systemd.special:

A special target unit that unmounts all mount and automount points on system shutdown.

なので、shutdown 時に実行される unit。

urandom

systemd-random-seed.service への symbolic link。urandom は static。systemd-random-seed の方が起動時に one shot で動作し、active で exit されている。

usbmuxd

Apple device の usbmux protocol 用の daemon。usbmaxd package から入っているが、udev で Apple device が認識された際に起動する為、今の状態では disable。

user@

user mode の systemd を起動する為の unit。template unit なので、systemd-cgls を見ると '@' 以降に UID が付いた形で、1000 (lightdm) と 100 (user) が起動している。systemd-cgls の tree を見ると、各 unit の関係がよく分かる。

wacom-inputattach@

static。xserver-xorg-input-wacom package から入っている。wacom の pen tablet は使用していないので、apt remove --purge して削除した。

x11-common

/dev/null に symbolic link で masked。SysVinit との互換の為か。

結果

  • systemd service の先頭文字が s 〜 z の unit について機能を調べてみた。
  • やはり /dev/null への symbolic link が多い。存在する意味がまだ分からない。
  • spice-vdagent package を実マシン側に入れていたが不要なので削除した。仮想マシン側だけ入れておけば大丈夫。
  • 残りは systemd*.service の 44 units。これらを調べて有効な情報が手に入ることを期待する。