강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

/etc/inittab파일을 읽고 이해하고 활용하기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

/etc/inittab파일을 읽고 이해하고 활용하기

 

 

 

 

 

지금까지 우리는 리눅스시스템의 부팅과정에 대해서 자세하게 살펴보았다.

 

 

 

 물론 지금까지의 설명을 이해하였다면 부팅과정에 대한 의문은 없을 것이다.

 

 

 

 다만, init프로세스는 /etc/inittab파일의 모든 행들을 하나씩 순차적으로 실행하는데 우리는 /etc/inittab파일의 각 행들의 의미를 살펴보았지만 각 행들의 설정내용과 읽고 해석하는 방법에 대해서는 정확하게 알지 못하였다.

 

 

 

 

 

/etc/inittab파일을 이해하는 수준을 넘어서 각 행들의 포맷을 이해하고 설정방식을 파악한 후에 원한다면 우리는 그 설정내용을 변경할 수 있다.

 

 

 

 즉 부팅과정을 우리손으로 직접 변경하거나 수정하여 원하는 부팅과정을 만들수 있다는 의미가 된다.

 

 

 

 이런 작업이 가능하도록 하려면 /etc/inittab파일의 각 행들의 설정방법과 속성 그리고 설정포맷에 대해서 알아야 한다.

 

 

 

 이제 필자는 여러분들과 함께 여기에 대해서 알아보고자 한다.

 

 

 

 

 

먼저, /etc/inittab파일내에 존재하는 각각의 행들을 잘 살펴보면 정형화된 포맷을 기준으로 설정되었다는 것을 알 수 있다.

 

 

 

 /etc/inittab파일의 각각의 행들은 모두 다음과 같은 형식으로 작성된 것이다.

 

 

 

 

형식 : name : level-number : options : process -options

 

 

[/etc/inittab파일의 각행의 항목의미]

 

      

name

id, si, pr등의 값들이 올 수 있다.

 

 

 

 

level-number

이 행의 실행내용을 어떤 실행레벨(부팅레벨)에서 실행할 것인가를 설정한 것이다.

 

 

 

 이 행의 설정내용을 실행시킬 부팅레벨을 결정한 것이다.

 

 

 

‘3’ 3번 부팅레벨, ‘35’ 3번과 5번 부팅레벨을 모두 의미한다.

 

 

 

 ‘2345’ 2, 3, 4, 5번 부팅레벨을 모두 의미한다.

 

 

 

 

options

그 다음 네번째항목에 나오는 프로세스(명령어)를 실행할 때에 적용되는 특수한 속성들이다.

 

 

 

 이 속성에 따라서 이 행의 실행성격이 결정된다.

 

 

 

 이 속성들에 대한 자세한 설명을 이어서 하고 있다.

 

 

 

 

process -options

실행할 프로세스(명령어)와 명령어에 대한 옵션이다.

 

 

 

 

 

위에서 첫번째 항목인 name은 말 그대로 그 행의 실행이름이라고 이해하면 된다.

 

 

 

 그리고 두번째 level-number항목은 이 행의 설정내용을 어떤 부팅레벨에서 실행할 것인가를 결정하는 것이다.

 

 

 

 네번째 “process –options”는 실행할 프로세스 또는 명령이다.

 

 

 

 마지막 세번째 options라는 항목이 있는데 이는 실행할 프로세스 또는 명령의 속성(성격)을 결정하는 것으로 이런 속성에는 다음과 같은 것들이 있다.

 

 

 

 


respawn
속성

프로세스가 종료될때마다 다시 자동으로 재실행한다.

 

 

 

 /etc/inittab파일에서 가상터미널을 실행했던 다음 행에서 그 설정내용을 볼 수 있다.

 

 

 

 

# Run gettys in standard runlevels

1:2345:respawn:/sbin/mingetty tty1

2:2345:respawn:/sbin/mingetty tty2

3:2345:respawn:/sbin/mingetty tty3

4:2345:respawn:/sbin/mingetty tty4

5:2345:respawn:/sbin/mingetty tty5

6:2345:respawn:/sbin/mingetty tty6


위의 행은 리눅스의 가상콘솔로서 ALT+F1부터 ALT+F6까지의 가상콘솔을 각각 의미한다.

 

 

 

 그리고 첫번째행인 tty1은 우리가 흔히 얘기하는 콘솔(console)이다.

 

 

 

 이들 가상콘솔로 로그인한 후에 로그아웃(logout, exit)하면 자동으로 다시 로그인창이 뜨는 이유가 바로 respawn이라는 속성때문이다.

 

 

 

 

wait
속성

지정된 프로세스가 실행되면 init은 프로세스가 종료될 때까지 기다린 후에 다음 작업으로 넘어가도록 하는 옵션이다.

 

 

 

 /etc/inittab파일의 다음 설정내용에서 이 속성을 볼 수 있다.

 

 

 

 

l0:0:wait:/etc/rc.d/rc 0

l1:1:wait:/etc/rc.d/rc 1

l2:2:wait:/etc/rc.d/rc 2

l3:3:wait:/etc/rc.d/rc 3

l4:4:wait:/etc/rc.d/rc 4

l5:5:wait:/etc/rc.d/rc 5

l6:6:wait:/etc/rc.d/rc 6


once
속성

해당 프로세스를 한번만 실행되도록 하는 옵션이다.

 

 

 

 

boot
속성

시스템이 부팅되는 동안 해당 프로세스가 실행되며, init은 실행레벨필드를 무시한다.

 

 

 

 

bootwait
속성

시스템이 부팅되는 동안 해당 프로세스가 실행되며, init은 프로세스가 종료될 때까지 기다린다.

 

 

 



off
속성

아무런 동작도 발생하지 않도록 하는 옵션이다.

 

 

 

 설정라인을 지우지 않고 그 내용이 실행되지않도록 할 때 사용한다.

 

 

 

 일종의 주석처리행이라고 할 수 있으며 off대신 그 행의 맨 앞에 #를 붙여서 주석처리할 수도 있다.

 

 

 



ondemand
속성

실행레벨이 1, 2, 3인 경우에만 유용하다.

 

 

 

 init은 이 세개의 실행레벨과 함께 호출될 때만 프로세스가 작동한다.

 

 

 

 잘 사용되지 않는 옵션이다.

 

 

 

 

initdefault
속성

시스템이 부팅되면서 어떤 실행레벨로 부팅할 것인가를 결정하는 옵션이다.

 

 

 

 즉 시스템의 실행레벨을 결정하는 옵션으로서 /etc/inittab파일의 맨 처음 실행내용인 시스템 부팅레벨을 결정하는 다음 설정행에서 이 속성을 볼 수 있다.

 

 

 

 

id:5:initdefault:


위의 설정에 의하면 이 시스템은 5번 부팅레벨로 부팅이 진행될 것이다.

 

 

 



sysinit
속성

시스템이 부팅되는 동안 해당프로세스를 한번만 실행하는 옵션이다.

 

 

 

 sysinit boot bootwait보다 우선권을 가진다.

 

 

 

 /etc/inittab파일의 내용중 sysinit옵션을 사용하고 있는 내용은 다음과 같다.

 

 

 

 따라서 모든 부팅레벨에서 단 한번만 실행되는 내용이 바로 /etc/rc.d/rc.sysinit스크립트 파일의 내용이다.

 

 

 

 

# System initialization.

si::sysinit:/etc/rc.d/rc.sysinit


powerwait
속성

init SIGPWR신호를 받는 경우에만 프로세스가 가동된다.

 

 

 

 전원에 문제가 있을 때 보통 UPS의 전원모니터링 소프트웨어가 이를 인식하여 init에게 신호를 해준다.

 

 

 

 이 경우 init은 프로세스가 종료될 때까지 기다린다.

 

 

 

 

powerfail
속성

powerwait와 같지만 init은 프로세스가 완결될 때까지 기다리지 않는다.

 

 

 

 /etc/inittab파일내의 내용중 이에 관한 설정은 아래와 같다.

 

 

 

 

# UPS connected and working correctly. 

pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"


위의 설정으로 인하여 전원이 부족하게 되면 해당프로세스인 “/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"”가 실행되어 시스템은 종료절차를 밟게 된다.

 

 

 

 

powerokwait
속성

init SIGPWR신호를 받고 /etc/powerstatus라는 텍스트 파일에 OK라는 문자열이 있을 때 프로세스가 실행된다.

 

 

 

 일반적으로 UPS모니터링 프로그램이 이 파일을 생성하며 SIGPWR신호를 init에게 보내어 전원상의 문제가 해결되었음을 알려준다.

 

 

 



# If power was restored before the shutdown kicked in, cancel it.

pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"


/etc/inittab
파일내에 있는 위의 설정으로 인하여 전원부족상황이 해결되어 다시 전원이 정상화 되었을 때에 시스템 종료절차를 취소한다.

 

 

 

 

ctrlaltdel
속성

이 옵션은 init프로세스가 SIGINT신호를 받았을 때에 실행되도록 한다.

 

 

 

 /etc/inittab파일내의 설정 가운데 이에 대한 설정은 아래와 같다.

 

 

 



# Trap CTRL-ALT-DELETE

ca::ctrlaltdel:/sbin/shutdown -t3 -r now


위의 설정으로 인하여 키보드에서 CTRL+ALT+DEL키를 동시에 눌렀을 때에 해당 프로세스 “shutdown -t3 -r now”가 실행되어 시스템은 재부팅된다.

 

 

 



kbrequest
속성

이 옵션은 init프로세스가 키보드관리자로 부터 keyboardsignal을 받았을 때에 해당 프로세스를 실행되도록 한다.

 

 

 

 

 

세번째 항목인 속성에 대한 설명을 끝으로 리눅스시스템의 부팅과정의 이해에 대한 설명을 모두 마친다.

 

 

 

 필자가 수차례 강조해 왔듯이 부팅과정의 이해란 이해자체를 목적으로 하는 것이 아니라 언제 발생할지 모르는 시스템 장애상황에 신속히 대처할 수 있는 처리능력을 가지기 위한 것이 목적이다.

 

 

 

 물론, 부팅과정을 이해함으로써 시스템을 보다 깊이있게 이해하게 되므로 보다 정확한 시스템관리를 할 수 있다.

 

 

 

 잊지말자. 시스템을 믿지말고 우리자신을 믿어야 한다.

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,056 명
  • 현재 강좌수 :  35,908 개
  • 현재 접속자 :  223 명