처음 리눅스가 부팅할 때에 시작하는 프로세스는 init이라는 프로세스이며, 이 init이라는 프로세스가 RUN LEVEL에 따라서 각 다음 프로세스를 실행 시키게 된다. 즉 최상위 프로세스는 init이 된다. 그리고 각 RUN LEVEL에 따른 설정은 "/etc/rc.d/rc[RUNLEVEL].d" 안에 나열된 데몬들을 각 실행 순서에 따라 실행 시키게 된다. pstree 명령어로 각 프로세스[데몬]들의 상관관계를 확인할 수 있다.
예)
init─┬─NetworkManager─┬─dhclient
│ └─{NetworkManager}
├─acpid
├─anacron
├─atd
├─auditd───{auditd}
├─automount───4*[{automount}]
├─avahi-daemon───avahi-daemon
├─bonobo-activati───{bonobo-activat}
├─console-kit-dae───63*[{console-kit-da}]
├─crond
├─cupsd
├─2*[dbus-daemon───{dbus-daemon}]
├─dbus-launch
├─devkit-power-da
├─fcoemon
├─gconfd-2
├─gdm-binary───gdm-simple-slav─┬─Xorg
│ ├─gdm-session-wor
│ └─gnome-session─┬─at-spi-registry
│ ├─gdm-simple-gree
│ ├─gnome-power-man
│ ├─metacity
│ ├─polkit-gnome-au
│ └─{gnome-session}
├─gnome-settings-───{gnome-settings}
├─gvfsd
├─hald───hald-runner─┬─hald-addon-acpi
│ └─hald-addon-inpu
├─lldpad
├─master─┬─pickup
│ └─qmgr
├─5*[mingetty]
├─modem-manager
├─pcscd───{pcscd}
├─polkitd
├─pulseaudio───2*[{pulseaudio}]
├─rpc.idmapd
├─rpc.statd
├─rpcbind
├─rsyslogd───3*[{rsyslogd}]
├─rtkit-daemon───2*[{rtkit-daemon}]
├─sshd───sshd───bash───pstree
├─udevd───2*[udevd]
└─wpa_supplicant
각각의 폴더의 이름은 시작시키는 프로세스의 특성과 실행 우선순위와 이름을 나타내는데 형식은 다음과 같다.
[S,K]{숫자}{데몬이름}
S 로시작하는 링크 파일은 부팅시 시작하는 Start Script Link File이다.
K 로 시작하는 링크 파일은 부팅시 시작하지 않는 Kill Script Link File이다.
각 스크립트들은 /etc/init.d/에 위치하고 있으며, 각 부트레벨에 따른 on/off 설정은 chkconfig로 설정 할 수 있다.
예) chkconfig --level 345 sshd on
각 런레벨에 대한 특징들은 다음과 같으며 /etc/inittab에 주석으로 설명되어 있다.
0 - halt(시스템 종료 : 초기 기본 설정으로 사용하지 말것)
1 - Single User Mode
2 - Multiuser, without NFS( RUN LEVEL 3과 동일하지만 networking을 사용하지 않음)
3 - Full Multiuser Mode (Networking을 사용)
4 - unused
5 - X11
6 - reboot (시스템 재시작 : 초기 기본 설정으로 사용하지 말것
런레벨을 변경하려면 아래와 같은 명령어로 간단하게 병경 가능하다
# telinit 3
위와 같은 변경 방법은 시스템이 재시작된 후에는 적용되지 않는다는 것이다.
매 부팅마다 동일한 런레벨을 가지고 싶을 경우 /etc/inittab에 RUN LEVEL을 변경해주면 된다.
아래 내용은 /etc/inittab의 내용이며 <변경될 부분>에 설정하고자 하는 런레벨을 설정하면 된다.
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:<변경될 부분>:initdefault:
'개발, 웹, 블로그 > Linux 상식' 카테고리의 다른 글
[Linux] dns server 설정 및 resolv.conf (3) | 2013.03.10 |
---|---|
[linux 명령어] RPM 및 RPM 명령어 정리 (0) | 2013.03.09 |
[VirtualBox] Fedora 18에서 게스트 확장 설치하기. (0) | 2013.03.03 |