systemd chenshh 1 Computer Center, CS, NCTU Before we start - - PowerPoint PPT Presentation

systemd
SMART_READER_LITE
LIVE PREVIEW

systemd chenshh 1 Computer Center, CS, NCTU Before we start - - PowerPoint PPT Presentation

systemd chenshh 1 Computer Center, CS, NCTU Before we start systemd is only for linux ONLY FOR LINUX NO UNIX 2 2 Computer Center, CS, NCTU History 1.BSD Style init 2.sysvinit 3.upstart 4.systemd 3 3 Computer Center, CS, NCTU BSD


slide-1
SLIDE 1

systemd

chenshh

1

slide-2
SLIDE 2

Computer Center, CS, NCTU

2

Before we start

systemd is only for linux ONLY FOR LINUX NO UNIX

2

slide-3
SLIDE 3

Computer Center, CS, NCTU

3

History

1.BSD Style init 2.sysvinit 3.upstart 4.systemd

3

slide-4
SLIDE 4

Computer Center, CS, NCTU

4

BSD Style Init

1./etc/rc.conf 2./etc/rc.d/ /usr/local/etc/rc.d Shell Script Keep It Simple Stupid

4

slide-5
SLIDE 5

Computer Center, CS, NCTU

5

Very Old BSD init (PDP-7)

/etc/rc

5

slide-6
SLIDE 6

Computer Center, CS, NCTU

6

Take a look at startup sequence

/sbin/init /bin/sh /etc/rc -> /etc/rc.conf , /etc/rc.conf.d /etc/netstart (Not used at startup in freebsd , but for manually start network) /etc/rc.d,/usr/local/rc.d /etc/rc.local init for itself , run getty

6

slide-7
SLIDE 7

Computer Center, CS, NCTU

7

Old rc (BSD 4.4) vs New rc (NetBSD 1.5)

只是這張圖潮潮der

7

slide-8
SLIDE 8

Computer Center, CS, NCTU

8

What is Dependency?

A Directed Acyclic Graph 有向無環圖 必存在一拓譜排序

8

slide-9
SLIDE 9

Computer Center, CS, NCTU

9

Old way

by rc.conf period. Human will make mistakes.

9

slide-10
SLIDE 10

Computer Center, CS, NCTU

10

New Way

Using /sbin/rcorder to provide dependency

#!/bin/sh # PROVIDE: mumbled oldmumble # REQUIRE: DAEMON cleanvar frotz2 # BEFORE: LOGIN3 # KEYWORD: nojail shutdown4

10

slide-11
SLIDE 11

Computer Center, CS, NCTU

11

sysvinit

  • 1. First developed by System V R4 (AT&T)
  • 2. SHELL SCRIPT
  • 3. define runlevels
  • 4. init 3 init 5

11

slide-12
SLIDE 12

Computer Center, CS, NCTU

12

runlevels

Shut down the operating system so that it's safe to turn off the power. s or S Single user mode, with all file systems mounted. 1 Single user mode, with all file systems mounted and user logins allowed. 2 Multi user mode, with all services running except NFS server daemons. 3 Multi-user mode with all services running. This is usually the default. 4 Currently unused. 5 Shut down the system and attempt to turn off the power.(Differ in distros , the newer mostly means X) 6 Shut down the system to level 0, and reboot.

12

slide-13
SLIDE 13

Computer Center, CS, NCTU

13

Take a look at startup sequence

/sbin/init /etc/rc.d/rc.sysinit -> Runlevel N (System bootup) read /etc/inittab Runlevel S -> /etc/rcS.d Runlevel X -> /etc/rcX.d

13

slide-14
SLIDE 14

Computer Center, CS, NCTU

14

rcX.d?

To kind of names Sxxxxxxxxxxxxx -> Startup Kxxxxxxxxxxxxx -> Kill Run in lexicographical

14

slide-15
SLIDE 15

Computer Center, CS, NCTU

15

/etc/inittab

1 ap::sysinit:/sbin/autopush -f /etc/iu.ap 2 ap::sysinit:/sbin/soconfig -f /etc/sock2path 3 fs::sysinit:/sbin/rcS sysinit >/dev/msglog 2<>/dev/msglog </dev/console 4 is:3:initdefault: 5 p3:s1234:powerfail:/usr/sbin/shutdown -y -i5 -g0 >/dev/msglog 2<>/dev/... 6 sS:s:wait:/sbin/rcS >/dev/msglog 2<>/dev/msglog </dev/console 7 s0:0:wait:/sbin/rc0 >/dev/msglog 2<>/dev/msglog </dev/console 8 s1:1:respawn:/sbin/rc1 >/dev/msglog 2<>/dev/msglog </dev/console 9 s2:23:wait:/sbin/rc2 >/dev/msglog 2<>/dev/msglog </dev/console 10 s3:3:wait:/sbin/rc3 >/dev/msglog 2<>/dev/msglog </dev/console 11 s5:5:wait:/sbin/rc5 >/dev/msglog 2<>/dev/msglog </dev/console 12 s6:6:wait:/sbin/rc6 >/dev/msglog 2<>/dev/msglog </dev/console 13 fw:0:wait:/sbin/uadmin 2 0 >/dev/msglog 2<>/dev/msglog </dev/console 14 of:5:wait:/sbin/uadmin 2 6 >/dev/msglog 2<>/dev/msglog </dev/console 15 rb:6:wait:/sbin/uadmin 2 1 >/dev/msglog 2<>/dev/msglog </dev/console 16 sc:234:respawn:/usr/lib/saf/sac -t 300 17 co:234:respawn:/usr/lib/saf/ttymon -g -h -p "`uname -n` console login: "

  • T terminal-type -d /dev/console -l console -m ldterm,ttcompat

15

slide-16
SLIDE 16

Computer Center, CS, NCTU

16

How to provide dependency?

這張圖真的潮潮der

16

slide-17
SLIDE 17

Computer Center, CS, NCTU

17

So simple

S10-abc S11-foo S22-bar Easy to debug!

17

slide-18
SLIDE 18

Lets talk about unix history

18

slide-19
SLIDE 19

Computer Center, CS, NCTU

19 19

slide-20
SLIDE 20

Computer Center, CS, NCTU

20

Time for New Generations!

20

slide-21
SLIDE 21

Computer Center, CS, NCTU

21

Why replacing Old style of init

1.Linux on desktop, which shutting down and booting is more often. 2.Need more userfriendly way to add services. 3.Shell script is slow. 4.Services can’t be started parallelly. 5.Some services is on-demand. ex. CUPS

21

slide-22
SLIDE 22

Computer Center, CS, NCTU

22

upstart

1.Ubuntu 2.Triggered by event 3.Can start/kill services by event 4.using udev bridge to implement hotplug events

22

slide-23
SLIDE 23

Computer Center, CS, NCTU

23

Taka a look at startup sequence

23

slide-24
SLIDE 24

Computer Center, CS, NCTU

24

Jobs and Events

Jobs: Task Job Service Job Abstract Job Events: Signals Method Hooks

24

slide-25
SLIDE 25

Computer Center, CS, NCTU

25

Job Life Cycle

25

slide-26
SLIDE 26

Computer Center, CS, NCTU

26

upstart config file

start on runlevel [2345] stop on runlevel [!2345] # start on eventname task # XXX: configurable export user script uid=$(getent passwd "$user"|cut -d: -f3) gid=$(getent passwd "$user"|cut -d: -f4) # Create directory that would normally be # created by PAM when a user logs in. export XDG_RUNTIME_DIR="/run/user/$uid" mkdir -p "$XDG_RUNTIME_DIR" chmod 0700 "$XDG_RUNTIME_DIR" chown "$uid:$gid" "$XDG_RUNTIME_DIR" start session_init USER="$user" end script

26

slide-27
SLIDE 27

Computer Center, CS, NCTU

27

systemd

cgroup dependency sockets journal lots of things

27

slide-28
SLIDE 28

Computer Center, CS, NCTU

28

Take a look at startup sequence

28

slide-29
SLIDE 29

Computer Center, CS, NCTU

29

Targets , Units(Services , Sockets ...)

Targets Wants Units Sockets Triggers Services

29

slide-30
SLIDE 30

Computer Center, CS, NCTU

30

Services

[Unit] Description=MyApp After=docker.service Requires=docker.service [Service] TimeoutStartSec=0 ExecStartPre=/usr/bin/docker kill busybox1 ExecStartPre=/usr/bin/docker rm busybox1 ExecStartPre=/usr/bin/docker pull busybox ExecStart=/usr/bin/docker run --name busybox1 busybox /bin/sh -c "while true; do echo Hello World; sleep 1; done" [Install] WantedBy=multi-user.target

30

slide-31
SLIDE 31

Computer Center, CS, NCTU

31

Dependency

Require & After/Before Wants

[Unit] Description=I want B Wants=B.service ... [Unit] Description=I Require B start Before me Requires=B.service After=B.sevice ... 31

slide-32
SLIDE 32

Computer Center, CS, NCTU

32

Why Sockets?

On-demand services Improve startup speed

32

slide-33
SLIDE 33

Computer Center, CS, NCTU

33 33

slide-34
SLIDE 34

Computer Center, CS, NCTU

34

Forking can derive socket fds ex.inetd , xinetd

34

slide-35
SLIDE 35

Computer Center, CS, NCTU

35

Sockets

[Unit] Description=SSH Socket for Per- Connection Servers [Socket] ListenStream=22 Accept=yes [Install] WantedBy=sockets.target [Unit] Description=SSH Per-Connection Server [Service] ExecStart=-/usr/sbin/sshd -i StandardInput=socket 35

slide-36
SLIDE 36

Computer Center, CS, NCTU

36

PIDs

Traditional PID files Upstart Need to define how many forks will the process do Systemd cgroup

36

slide-37
SLIDE 37

Computer Center, CS, NCTU

37

cgroup

implement since linux kernel 2.6.24 uses to controll resources of processes You can controll it by editing /sys/fs/cgroup

37

slide-38
SLIDE 38

Computer Center, CS, NCTU

38

journald

replace syslog syslog is too simple! You can say you are any PID No consistent format We can use unit files to control logs

38

slide-39
SLIDE 39

Computer Center, CS, NCTU

39

automount

replace autofs

39

slide-40
SLIDE 40

Computer Center, CS, NCTU

40

networkd

replace network scripts

40

slide-41
SLIDE 41

Computer Center, CS, NCTU

41

And so many other features

machined - virtual machines hostnamed - set hostname timedated - timezone , ntp localed - languages logind - user session management importd - image management resolved - DNS settings

41

slide-42
SLIDE 42

Computer Center, CS, NCTU

42

Reference

http://goo.gl/fu925Q

42