실행 레벨

init는 시스템이 제공할 여러 서비스들을 실행시키는데, 이것을 어떤 수준으로 실행시킬지 등급을 나눠 정의한 것이 실행 레벨(run level) 이라는 개념이다. Table 7-1에 나타낸 바와 같이, 실행 레벨은 숫자로 나타내어 진다. 사용자 정의 실행 레벨(2에서 5까지)에 대해서는 이것을 어떻게 정의할 것인지 합의된 것이 없다. 그래서, 이 부분은 어떤 시스템 구성요소를 사용할 것인지 선택하는데 쓰이기도 한다. 즉, X를 실행시킬 것인지, 네트워크를 작동시킬 것인지 등의 선택을 실행 레벨을 통해 할 수 있다. 그러나 실행 레벨을 통해 시스템을 세부적으로 통제하기란 어려운 일이므로, 실행 레벨에 관계없이 모든 시스템 구성요소들을 개별적으로 실행시키기도 한다. 이중 어떤 방법을 사용한 것인지는 스스로 결정할 문제이지만, 현재 사용중인 리눅스 배포본에서 취하고 있는 방법을 따르는 것이 아마도 가장 손쉬운 방법일 것이다.

Table 7-1. 번호로 나타낸 실행 레벨

0시스템 종료.
1단일 사용자 모드 (특별한 시스템 관리 작업용).
2-5일반적인 시스템 가동 상태(사용자 정의 가능).
6리부팅.

실행 레벨은 /etc/inittab 파일에서 다음과 같이 설정된다.
l2:2:wait:/etc/init.d/rc 2
첫번째 부분은 임의로 붙인 식별용 라벨이다. 두번째 부분은 이것이 실행 레벨 2번에서 적용되도록 지정한다. 세번째 부분은, 실행 레벨에 진입할때 init가 네번째 부분의 명령을 실행하되, 그것이 완료될때까지 기다리라는 뜻이다. 그리고 네번째 부분은 /etc/init.d/rc가 실행 레벨 2번에 해당되는 명령들을 실행하도록 지시하고 있다.

따라서 해당 실행 레벨의 구현에 필요한 모든 일은 네번째 부분의 명령이 담당한다. 실행 레벨이 전환되면, 이 명령은 필요한 모든 서비스들을 시작시키며, 필요없는 서비스들은 종료시킨다. 어느 실행 레벨에서 어떤 명령들이 실행되는지는 리눅스 배포본에 따라 다르다.

시스템이 시작될때, init/etc/inittab 파일에서 기본 실행 레벨이 몇번으로 지정되었는지 찾는다.
id:2:initdefault:
부팅할 때, 커널 명령행 인자로 single 이나 emergency라고 써넣어 주면, init를 기본 실행 레벨이 아닌 다른 레벨로 실행할 수가 있다. 커널 명령행 인자는 LILO에 의해 전달되며, 위와 같은 인자를 넣어주면 단일 사용자 모드로 진입하게 된다(실행 레벨 1번).

시스템이 가동 중일 때는 telinit 명령으로 실행 레벨을 전환시킬 수가 있다. 이렇게 하면, init/etc/inittab에서 그에 해당되는 명령을 찾아 실행시킨다.