리눅스시스템 부팅레벨의 이해
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 1,980 조회
- 0 추천
- 목록
본문
리눅스시스템 부팅레벨의 이해
앞서 말했듯이 이번 장에서 설명하는 runlevel이라는 명령어는 현재 실행중인 리눅스서버의 실행레벨을 확인하는 것이다.
이 명령어는 /var/run/utmp라는 utmp파일의 가장 최근의 runlevel레코드를 읽어서 현재 이전의 런레벨과 현재 런레벨을 표준 출력으로 출력한다.
만약 이전 런레벨이 존재하지 않는다면 “N” 문자를 대신 출력하고, utmp파일이 존재하지 않는다면 어떤 런레벨도 찾지 못하기 때문에 runlevel의 실행결과는 unknown에러를 출력할 것이다.
모든 리눅스시스템에는 0부터 6까지 모두 7가지의 실행레벨이 있다.
그리고 리눅스시스템에서 몇번 부팅레벨로 부팅을 할 것인가를 결정하는 것은 /etc/inittab파일에 있는 다음 행에서 결정한다.
id:5:initdefault: |
즉 /etc/inittab파일의 상단에 있는 위의 설정에 의하면 5번 부팅레벨로 부팅하라고 설정되어 있다.
따라서 이 경우 시스템은 5번 부팅레벨로 부팅이 될 것이다.
만약 vi로 /etc/inittab파일을 열어서 위의 행에 있는 숫자 5를 3으로 변경한다면 그 이후부터 이 시스템은 3번 부팅레벨로 부팅이 될 것이다.
부팅레벨에 대하여 좀 더 구체적으로 알아보도록 하자.
부팅레벨 0
시스템종료를 의미한다.
“init 0”을 실행하면 부팅레벨 0으로 진행한다.
그리고 halt를 실행하면 시스템이 종료되고, “shutdown -h now”를 실행해도 시스템이 종료된다.
또한 poweroff를 실행해도 시스템종료를 명령하는 것이다.
모두 기억해두자.
부팅레벨 1
흔히 싱글모드(관리모드)라고한다.
이 레벨에서는 원격로그인이 불가능하다.
즉 콘솔로서만 접근가능하며 root만이 사용할 수 있다.
시스템관리나 root패스워드를 변경하고자 할 때에 사용하는 부팅레벨이다.
“init 1”을 실행하면 1번 부팅레벨로 진행한다.
부팅레벨 2
NFS를 지원하지않는 멀티유저 실행모드이다.
이 모드는 “init 2”을 실행하면 진행한다.
부팅레벨 3
NFS를 지원하는 멀티유저 실행모드이다.
이 모드는 “init 3”을 실행하면 진행한다.
아마도 서버용도로 사용되는 리눅스시스템은 부팅레벨 3번 혹은 5번이 대부분이다.
부팅레벨 4
사용하지 않는 실행레벨이다.
대부분의 사용자들이 사용하지 못하는 것으로 알고 있는데 사용하지 못하는 부팅레벨이 아니라 사용하지 않는 부팅레벨이다.
따라서 사용자 설정만 한다면 얼마든지 사용할 수 있는 부팅레벨이다.
참고로 부팅레벨 4에 대하여 확인해 보려면 /etc/rc.d/rc4.d/디렉토리를 확인해 보라.
부팅레벨 5
GUI모드인 X윈도우 환경으로 실행된 멀티유저 실행모드이다.
이 모드는 “init 5”를 실행하면 진행한다.
부팅레벨 3번과 함께 거의 모든 리눅스시스템의 부팅레벨이 이에 속한다.
특히 데스크톱용으로 리눅스시스템을 사용한다면 거의 대부분 부팅레벨 5번으로 부팅한다.
부팅레벨 6
리눅스시스템을 재부팅하는 부팅레벨이다.
리눅스시스템을 재부팅하는 방법은 “init 6”을 실행해도 되고, 가장 대표적인 재부팅방법은 “reboot” 또는 “shutdown -r now”이 있다.
가장 많이 사용되는 재부팅은 당연히 reboot이다.
위의 부팅레벨에 대한 설명은 바로 이어서 설명할 init프로세스를 중심으로 다음과 같이 정리해 보았다.
이미 앞에서 설명한 내용을 도표로 정리한 것이다.
다음은 방금 설명한 시스템 부팅레벨에 대하여 간략히 정리한 것이다.
[시스템 부팅레벨별 실행내용]
레벨번호
|
init
|
의 미
|
비 고
|
레벨 0
|
init 0 |
시스템 종료. halt, shutdown -h now |
/etc/rc.d/rc0.d/ |
레벨 1
|
init 1 |
싱글모드, 관리모드, 콘솔로서만 접근가능하며 root만이 사용할 수 있음. 시스템관리 또는 root패스워드를 변경하고자할 때에만 사용함. |
/etc/rc.d/rc1.d/ |
레벨 2
|
init 2 |
NFS를 지원하지않는 멀티유저 실행모드. |
/etc/rc.d/rc2.d/ |
레벨 3
|
init 3 |
NFS를 지원하는 멀티유저 실행모드. |
/etc/rc.d/rc3.d/ |
레벨 4
|
init 4 |
사용하지않는 실행레벨, 사용자자 지정하여 사용할 수 있음. |
/etc/rc.d/rc4.d/ |
레벨 5
|
init 5 |
X윈도우 환경으로 실행된 멀티유저 실행모드. |
/etc/rc.d/rc5.d/ |
레벨 6
|
init 6 |
서버 재부팅되는 실행모드. reboot, shutdown -r now |
/etc/rc.d/rc6.d/ |
위의 표는 init프로세스와 관련된 시스템 연동내역을 표기한 것이다.
각각의 부팅레벨에 따라서 위와 같이 진행된다는 것을 알아두어야 한다.
init프로세스는 0번부터 6번까지(0,1,2,3,4,5,6) 모두 7개의 실행레벨을 가지고 있다고 하였다.
즉 init프로세스는 리눅스 시스템 실행레벨을 변경하는 역할도 한다는 것을 알아야 한다.
따라서 우리가 이번에 배울 내용은 init프로세스에게 0부터 6까지 각각의 인자를 건네주고 원하는 부팅레벨로 재부팅할 수 있는 방법을 알고자 하는 것이다.
참고로 init명령어와 함께 telinit명령어도 동일한 목적으로 사용할 수 있다는 것도 알아두자.
- init명령어로 시스템 실행레벨(runlevel)변경하는 방법 : init 실행레벨
- 현재 시스템 실행레벨 확인하는 방법 : runlevel
예1) init명령어로 실행레벨(runlevel) 0(시스템종료)으로 변경하기 : init 0
예2) init명령어로 실행레벨(runlevel) 1(싱글모드)로 변경하기 : init 1
예3) init명령어로 실행레벨(runlevel) 2로 변경하기 : init 2
예4) init명령어로 실행레벨(runlevel) 3로 변경하기 : init 3
아래 예는 이미 한번 설명한 내용이지만 확실한 이해를 위하여 다음 예를 보자.
[root@sulinux ~]# runlevel 5 3 [root@sulinux ~]# init 5 |
위의 예에서 먼저 시스템 실행레벨을 알아보기 위하여 runlevel을 실행하였다.
그 결과 “5 3”이라는 결과가 출력이 되었는데 5라는 것은 “이전 시스템 실행레벨”을 의미하는 것이고 3이 “현재 시스템 실행레벨”을 의미하는 것이다.
즉 현재 시스템 실행레벨이 3임을 확인하였다.
이 상태에서 시스템 실행레벨을 5로 변경하기 위하여 “init 5”를 실행하였다.
관련자료
-
이전
-
다음