centos 7の中のsysteemeを深く分析します。


システム起動フロー

 POST --> Boot Sequence --> Bootloader --> kernel+initramfs(initrd) --> rootfs --> /sbin/init
 init: 
  CentOS 5: SysV init
  CentOS 6: Upstart
  CentOS 7: Systemd
システム 

               ,           ,      ,          。
    :
               
          
              
      socket  D-Bus       
        
     :unit
  unit        systemd  ,             。
              、  socket 、            init      。
     :
  /usr/lib/systemd/system: 
                 ,      /etc/init.d/
  /run/systemd/system:
                  , /usr/lib/systemd/system      
  /etc/systemd/system:
             ,   /etc/rc.d/rcN.d/Sxx     , /run/systemd/system      
     :
    socket      : socket        
    d-bus      : 
    device      : 
    path      : 
      :    unit               ,    sysv init   
    :
  systemctl       ,    
    systemd      ,systemctl         
ユニットタイプ

 Systemctl Ct help   unit   
 Service unit:       .service,         
 Target unit:       .target,          
 Device unit: .device,           
 Mount unit:  .mount,          
 Socket unit: .socket,            socket  ,        ,      ,      
 Snapshot unit: .snapshot,       
 Swap unit: .swap,     swap   
 Automount unit: .automount ,          
 Path unit: .path,                   ,           ,      , :spool   
サービス管理
`centos 7のほとんどのサービスはsystemtelがservice unitを管理しています。centos 7の前のサービスはまだ互換性があります。
ランレベル

 target units: 
  unit     :
   .target,          
  ls /usr/lib/systemd/system/*.target
  systemctl list-unit-files --type target --all
     :
  0 ==> runlevel0.target, poweroff.target
  1 ==> runlevel1.target, rescue.target
  2 ==> runlevel2.target, multi-user.target
  3 ==> runlevel3.target, multi-user.target
  4 ==> runlevel4.target, multi-user.target
  5 ==> runlevel5.target, graphical.target
  6 ==> runlevel6.target, reboot.target
      :
  systemctl list-dependencies graphical.target
  
     :
  init N ==> systemctl isolate name.target
  systemctl isolate multi-user.target
    :  /lib/systemd/system/*.target    AllowIsolate=yes    ,       systemctl daemon-reload     
   target:
  systemctl list-units --type target
         :
  /etc/inittab ==> systemctl get-default
  runlevel 
  who -r
       :
  /etc/inittab ==> systemctl set-default name.target
  systemctl set-default multi-user.target
  ls Cl /etc/systemd/system/default.target
          :
     init 1
  systemctl rescue
    emergency   :
  systemctl emergency
       :
      init ,poweroff ,halt ,reboot     systemctl     
    :systemctl halt 、systemctl poweroff
    :systemctl reboot
    :systemctl suspend
    : :systemctl hibernate
       :systemctl hybrid-sleep
CentOS 7ブートローディング順序

 UEFi  BIOS    ,  POST     
       
       , centos7  grub2
            :/etc/grub.d/ ,/etc/default/grub ,/boot/grub2/grub.cfg
   initramfs     
       
      ,centos7   systemd   init
   initrd.target     ,    /etc/fstab
  initramfs              
 systemd  /etc/systemd/system      
  systemd     target   ,    /etc/systemd/system/default.target
  systemd   sysinit.target       basic.target       
  systemd   multi-user.target           
  systemd   multi-user.target   /etc/rc.d/rc.local
  systemd   multi-user.target   getty.target     
  systemd   graphical      
service unitファイルフォーマット

 /etc/systemd/system :
            
 /usr/lib/systemd/system :
          
      
  1 、yes 、on 、true     
  0 、no 、off、false     
     
      ,      (ms )  (m )      
 service unit file           :
  [Unit] :    Unit          ;    unit      、unit         
  [Service] :             ;   Service   
  [Install] :    “systemctl enable”   "systemctl disable“                     
 Unit       :
  Description :     
  After :   unit      ,    unit       unit   ,    Before   
  Requires :       units ,   ,    units      ,  unit      
  Wants :       units ,   
  Conflicts :   units       
 Service       :
  Type :     ExecStart          unit       
  simple :    ,  daemon(    )   ExecStart         ,         
  forking :  ExecStart        spawns(  )            daemon     。               
  oneshot :  simple  ,                ,        
  dbus :  simple  ,   daemon        D-Bus    ,      .           BusNname=   
  notify :                。     NotifyAccess   Systemd     
  idle :  simple  ,     daemon                    。   daemon                
  EnvironmentFile :       
  ExecStart :     unit             
  ExecStartPre: ExecStart   
  ExecStartPost: ExecStart   
  ExecStop :     unit         
  Restart :    Restart=1 ,   daemon       ,          
 Install       :
  Alias :   ,   systemctl command Alias.service
  RequiredBy :    units   ,   
  WantedBy :    units   ,   
  Also :                   
   :
        unit  ,      unit  ,   systemd        ,       
  systemctl daemon-reload
   :
  vim /etc/systemd/system/bak.service
   [Unit]
   Description=backup /etc
   Requires=atd.service
   [Service]
   Type=simple
   ExecStart=/bin/bash -c "echo /testdir/bak.sh|at now"
   [Install]
   WantedBy=multi-user.target
  systemctl daemon-reload
  systemctl start bak
カーネルパラメータの設定

       
    , linux16     
 systemd.unit=desired.target
 systemd.unit=emergency.target
 systemd.unit=recure.target
 recure.target emergency       ,     
スタート

       ,       ,     emergency shell,      
  /etc/fstab          UUID     ,    ,  emergency shell
  /etc/fstab         systemd       ,      emergency shell.
  /etc/fstab             emergency shell
CentOS 7のrootパスワードを解読します。

   
            
   e        
       linux16     ,      rd.break
   ctrl-x   
  mount Co remount,rw /sysroot
  chroot /sysroot
  passwd root
  touch /.autorelabel
  exit
  reboot
    
            
   e        
       linux16     ,  rw init=/sysroot/bin/sh
   ctrl-x   
  chroot /sysroot
  passwd root
  touch /.autorelabel
  exit
  reboot
       GRUB 2を修復

 GRUB “the Grand Unified Bootloader” ”
                
          
        /boot/grub2/grub.cfg
       
  grub2-mkconfig > /boot/grub2/grub.cfg
  grub2-mkconfig -o /boot/grub2/grub.cfg
   grub
  grub2-install /dev/sda (BIOS   )
  grub2-install (UEFI   )
         
  vim /etc/default/grub
  GRUB_DEFAULT=0
締め括りをつける
以上は小编が皆さんに绍介したcentos 7の中のsystemendです。皆さんに助けてほしいです。もし何か疑问があれば、メッセージをください。小编はすぐに皆さんに返事します。