티스토리 뷰

Study/Linux

[Linux] SysVinit runlevel

생각많은 소심남 2016. 4. 22. 00:04



아무튼 Init process가 SysVinit에서 파생된 것이니 SysVinit에 대해서 쭉 설명하면 될거 같다.

SysVinit에는 runlevel이라는게 있는데 일종의 system state를 나타낸다. 여기에는 7단계로 나눠지는데 각 state에 대한 정의는 다음과 같다.



가령 0인 경우는 system이 halt되어 있는 상태를 말하고, 1은 single-user mode, 6은 reboot 상태임을 말한다. 사실 방금 언급한 level을 제외하고 나머지 level은 distribution내에서 어떻게 정의하냐에 따라서 달라진다. 가령 RHEL 같은 경우는 위에 정의되어 있는 것과 다르게 level 2가 network이 비활성화된 상태, level 3가 network 활성화, level 5가 network와 x window가 활성화되어 있는 상태로 정의되어 있다.

 그러면 ubuntu에서는 이 값이 어떻게 정의되어 있을까? terminal에서 runlevel을 수행하면 된다.

여기서 두 문자가 출력되는데 첫번째 문자는 이전 state, 두번째 문자가 현재 state를 나타낸다. 참고로 ubuntu나 debian 계열은 system runlevel이 위에 명시된 것과 다르게 정의되어 있다. 이부분에 대한 내용은 여기서 찾아보면 된다.


<http://upstart.ubuntu.com/cookbook/#runlevels>


이처럼 ubuntu 의 init인 upstart는 SysVinit을 따라가긴 해도 그 세부적인 내용은 조금조금씩 다르다. 이밖에도 SysVinit과 다른 부분이 몇가지 눈에 띈다. 예를 들어 이런 runlevel이 정의되어 있는 inittab 파일이 존재하는 SysVinit과는 다르게 upstart는 /etc/init 폴더 내에 정의되어 있는 값들을 바탕으로 비슷한 동작을 수행한다. 아무튼 이렇게 다른 방향으로 나아가게된 이유를 찾아보니 initialize process를 parallelize함으로써 boot time을 개선시키기 위함이라고 한다.

댓글