부팅 시스템의 대상 및 단위 파일

부팅 시스템의 대상 및 단위 파일

지난 며칠 동안 대상(런레벨이라고 함)에 대한 모든 문서와 예제를 검토했지만 이 주제에 대해서는 여전히 혼란스럽습니다.

init의 실행 수준과 systemd의 대상 간의 차이점을 설명할 수 있는 사람이 있습니까? 시작 프로세스에 관한 한 유닛 파일이란 무엇입니까?

답변1

실행 수준 및 대상의 기본 사항

배경

sysV(init)에서 런레벨은 0~6의 숫자입니다. 시스템은 특정 런레벨(보통 3(네트워크 + 콘솔) 또는 5(X windows))로만 설정할 수 있습니다. sysV의 이러한 런레벨은 단순히 init기본 프로세스가 주어진 시간에 있을 수 있는 상태입니다. systemd의 경우 대상은 비슷한 목적으로 사용되지만 여러 대상을 동시에 적용할 수 있습니다.

https://wiki.archlinux.org/index.php/systemd#Targets

systemd에서 사용되는 대상은 런레벨과 비슷한 목적으로 사용되지만 약간 다르게 동작합니다. 각 대상은 번호가 지정되지 않고 이름이 지정되며 특정 목적을 수행하도록 설계되었으며 여러 대상이 동시에 활성화될 수 있습니다. 일부 목표는 다른 목표에서 모든 서비스를 상속하고 여기에 추가 서비스를 추가하여 구현됩니다. 일반적인 SystemVinit 런레벨을 모방하는 systemd 대상이 있으므로 익숙한 telinit RUNLEVEL 명령을 사용하여 대상을 계속 전환할 수 있습니다.

SS1

표적

이 기능을 염두에 두고 systemd에서는 네트워크가 있는 일반적인 시스템이지만 multi-user.targetX는 대상에서 실행되지 않습니다.

$ systemctl get-default
multi-user.target

그러나 목표는 여러 목표를 캡슐화(그룹화)한 것입니다. 이는 sysV에 비해 systemd의 주요 장점 중 하나입니다. 이는 개체 파일을 보면 알 수 있습니다.

systemd.target 매뉴얼 페이지

이름이 ".target"으로 끝나는 장치 구성 파일은 시스템 대상 장치에 대한 정보를 인코딩하며 시작 시 장치 및 잘 알려진 동기화 지점을 그룹화하는 데 사용됩니다. ....

....이는 종속성(실행 대상으로 사용할 수 있음)별로 장치를 그룹화하고 장치 간 종속성에 사용되는 동기화 지점에 대한 표준화된 이름을 설정하기 위해서만 존재합니다. 또한 대상 장치는 기존 SysV init 시스템의 SysV 런레벨을 보다 유연하게 대체합니다. (호환성을 이유로 systemd의 SysV 런레벨 호환성 코드에서 사용되는 runlevel3.target과 같은 특수 대상 유닛이 존재합니다. 자세한 내용은 systemd.special(7)을 참조하세요.)

예를 들어:

$ grep target /usr/lib/systemd/system/anaconda.target
Requires=basic.target
After=basic.target

노트:여기서 anaconda.target요구 사항이 basic.target실행되었으며 이후에 실행되어야 합니다 basic.target.

내 CentOS 7.x 시스템에서 어떤 대상이 로드되었는지 확인할 수 있습니다.

$ systemctl list-units --type=target
UNIT                  LOAD   ACTIVE SUB    DESCRIPTION
basic.target          loaded active active Basic System
cryptsetup.target     loaded active active Local Encrypted Volumes
getty-pre.target      loaded active active Login Prompts (Pre)
getty.target          loaded active active Login Prompts
local-fs-pre.target   loaded active active Local File Systems (Pre)
local-fs.target       loaded active active Local File Systems
multi-user.target     loaded active active Multi-User System
network-online.target loaded active active Network is Online
network.target        loaded active active Network
nfs-client.target     loaded active active NFS client services
paths.target          loaded active active Paths
remote-fs-pre.target  loaded active active Remote File Systems (Pre)
remote-fs.target      loaded active active Remote File Systems
rpc_pipefs.target     loaded active active rpc_pipefs.target
slices.target         loaded active active Slices
sockets.target        loaded active active Sockets
swap.target           loaded active active Swap
sysinit.target        loaded active active System Initialization
timers.target         loaded active active Timers

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.

19 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

systemd의 단위는 무엇입니까?

systemd의 단위 파일은 5가지 중 하나를 정의하는 구성 파일입니다. 예를 들어 단위는 다음과 같습니다.

  • 서비스(.service)
  • 마운트 지점(.mount)
  • 장치(.device)
  • 소켓(.socket)
  • 타겟(.target)

CentOS 7.x에서는 이 디렉터리에서 다음 단위 파일을 볼 수 있습니다.

$ for i in target socket service device mount;do ls -l /usr/lib/systemd/system | grep $i | head -3;done
-rw-r--r--  1 root root  415 May  3 16:05 anaconda.target
-rw-r--r--  1 root root  517 Apr 11 03:36 basic.target
drwxr-xr-x. 2 root root 4096 Jul 28 14:56 basic.target.wants
-rw-r--r--  1 root root  874 Apr 10 23:42 avahi-daemon.socket
-r--r--r--  1 root root  131 Apr 11 01:03 cups.socket
-rw-r--r--  1 root root  102 Apr 11 03:23 dbus.socket
-rw-r--r--  1 root root  275 Apr 27 10:53 abrt-ccpp.service
-rw-r--r--  1 root root  380 Apr 27 10:53 abrtd.service
-rw-r--r--  1 root root  361 Apr 27 10:53 abrt-oops.service
-rw-r--r--  1 root root  169 Apr 12 15:28 [email protected]
-rw-r--r--  1 root root  670 Apr 11 03:36 dev-hugepages.mount
-rw-r--r--  1 root root  590 Apr 11 03:36 dev-mqueue.mount 

전원 켜짐

systemd로 구축된 시스템이 시작되면 유닛 파일을 처리하여 마운트를 구축하고, 소켓을 설정하고, 서비스를 시작합니다. 이러한 순서는 유닛 파일에 의해 제어됩니다.

인용하다

관련 정보