systemd
play

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


  1. systemd chenshh 1

  2. Computer Center, CS, NCTU Before we start systemd is only for linux ONLY FOR LINUX NO UNIX 2 2

  3. Computer Center, CS, NCTU History 1.BSD Style init 2.sysvinit 3.upstart 4.systemd 3 3

  4. Computer Center, CS, NCTU BSD Style Init 1./etc/rc.conf 2./etc/rc.d/ /usr/local/etc/rc.d Shell Script Keep It Simple Stupid 4 4

  5. Computer Center, CS, NCTU Very Old BSD init (PDP-7) /etc/rc 5 5

  6. Computer Center, CS, NCTU 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 6

  7. Computer Center, CS, NCTU Old rc (BSD 4.4) vs New rc (NetBSD 1.5) 只是這張圖潮潮 der 7 7

  8. Computer Center, CS, NCTU What is Dependency? A Directed Acyclic Graph 有向無環圖 必存在一拓譜排序 8 8

  9. Computer Center, CS, NCTU Old way by rc.conf period. Human will make mistakes. 9 9

  10. Computer Center, CS, NCTU New Way Using /sbin/rcorder to provide dependency #!/bin/sh # PROVIDE: mumbled oldmumble # REQUIRE: DAEMON cleanvar frotz2 # BEFORE: LOGIN3 # KEYWORD: nojail shutdown4 10 10

  11. Computer Center, CS, NCTU sysvinit 1. First developed by System V R4 (AT&T) 2. SHELL SCRIPT 3. define runlevels 4. init 3 init 5 11 11

  12. Computer Center, CS, NCTU runlevels 0 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 12

  13. Computer Center, CS, NCTU 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 13

  14. Computer Center, CS, NCTU rcX.d? To kind of names Sxxxxxxxxxxxxx -> Startup Kxxxxxxxxxxxxx -> Kill Run in lexicographical 14 14

  15. Computer Center, CS, NCTU /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 15

  16. Computer Center, CS, NCTU How to provide dependency? 這張圖真的潮潮 der 16 16

  17. Computer Center, CS, NCTU So simple S10-abc S11-foo S22-bar Easy to debug! 17 17

  18. Lets talk about unix history 18

  19. 19 Computer Center, CS, NCTU 19

  20. Computer Center, CS, NCTU Time for New Generations! 20 20

  21. Computer Center, CS, NCTU 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 21

  22. Computer Center, CS, NCTU upstart 1.Ubuntu 2.Triggered by event 3.Can start/kill services by event 4.using udev bridge to implement hotplug events 22 22

  23. Computer Center, CS, NCTU Taka a look at startup sequence 23 23

  24. Computer Center, CS, NCTU Jobs and Events Jobs: Events: Task Job Signals Service Job Method Abstract Job Hooks 24 24

  25. 25 Job Life Cycle Computer Center, CS, NCTU 25

  26. Computer Center, CS, NCTU 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 26

  27. Computer Center, CS, NCTU systemd cgroup dependency sockets journal lots of things 27 27

  28. Computer Center, CS, NCTU Take a look at startup sequence 28 28

  29. Computer Center, CS, NCTU Targets , Units(Services , Sockets ...) Targets Wants Units Sockets Triggers Services 29 29

  30. Computer Center, CS, NCTU 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 30

  31. Computer Center, CS, NCTU Dependency Require & After/Before Wants [Unit] [Unit] Description=I want B Description=I Require B start Before me Requires=B.service Wants=B.service After=B.sevice ... ... 31 31

  32. Computer Center, CS, NCTU Why Sockets? On-demand services Improve startup speed 32 32

  33. 33 Computer Center, CS, NCTU 33

  34. Computer Center, CS, NCTU Forking can derive socket fds ex.inetd , xinetd 34 34

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

  36. Computer Center, CS, NCTU PIDs Traditional PID files Upstart Need to define how many forks will the process do Systemd cgroup 36 36

  37. Computer Center, CS, NCTU cgroup implement since linux kernel 2.6.24 uses to controll resources of processes You can controll it by editing /sys/fs/cgroup 37 37

  38. Computer Center, CS, NCTU 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 38

  39. Computer Center, CS, NCTU automount replace autofs 39 39

  40. Computer Center, CS, NCTU networkd replace network scripts 40 40

  41. Computer Center, CS, NCTU 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 41

  42. Computer Center, CS, NCTU Reference http://goo.gl/fu925Q 42 42

Recommend


More recommend