Menu Close

Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

30.2.4. /sbin/init 프로그램

/sbin/init 프로그램 (init 라고도 부름)은 나머지 부트 프로세스를 주관하며 사용자를 위한 환경을 설정합니다.
init 명령이 시작할 때, 이는 시스템에서 자동으로 시작하는 모든 프로세스의 부모 또는 조부모가 됩니다. 먼저, 이는 /etc/rc.d/rc.sysinit 스크립트를 실행하여 환경 설정, 스왑 시작, 파일 시스템 확인, 시스템 초기화에 필요한 다른 단계를 실행합니다. 예를 들어, 대부분의 시스템에서는 시간을 사용하므로, rc.sysinit은 하드웨어 시간을 초기화하기 위해 /etc/sysconfig/clock 설정 파일을 읽습니다. 다른 예로서 초기화되어야 하는 특정 직렬 포트 프로세스가 있을 경우, rc.sysinit/etc/rc.serial 파일을 실행합니다.
The init command then runs the /etc/inittab script, which describes how the system should be set up in each SysV init runlevel. Runlevels are a state, or mode, defined by the services listed in the SysV /etc/rc.d/rc<x>.d/ directory, where <x> is the number of the runlevel. For more information on SysV init runlevels, refer to 30.4절. “SysV Init 런레벨”.
다음으로, init 명령은 시스템에 대한 소스 기능 라이브러리 /etc/rc.d/init.d/functions을 설정하여, 프로그램의 PID를 시작, 종료, 결정하는 방법을 설정합니다.
init 프로그램은 /etc/inittab에서 기본값으로 지정된 런레벨에 대한 올바른 rc 디렉토리에 따라 모든 백그라운드 프로세스를 시작합니다. rc 디렉토리는 제시된 런레벨에 상응하는 숫자로 번호가 매겨집니다. 예를 들어, /etc/rc.d/rc5.d/는 런레벨 5에 대한 디렉토리입니다.
런레벨 5로 부팅할 때, init 프로그램은 /etc/rc.d/rc5.d/ 디렉토리를 보고 시작 및 중지할 프로세스를 결정합니다.
다음은 /etc/rc.d/rc5.d/ 디렉토리의 예시 목록입니다:
K05innd -> ../init.d/innd 
K05saslauthd -> ../init.d/saslauthd 
K10dc_server -> ../init.d/dc_server 
K10psacct -> ../init.d/psacct 
K10radiusd -> ../init.d/radiusd 
K12dc_client -> ../init.d/dc_client 
K12FreeWnn -> ../init.d/FreeWnn 
K12mailman -> ../init.d/mailman 
K12mysqld -> ../init.d/mysqld 
K15httpd -> ../init.d/httpd 
K20netdump-server -> ../init.d/netdump-server 
K20rstatd -> ../init.d/rstatd 
K20rusersd -> ../init.d/rusersd 
K20rwhod -> ../init.d/rwhod 
K24irda -> ../init.d/irda 
K25squid -> ../init.d/squid 
K28amd -> ../init.d/amd 
K30spamassassin -> ../init.d/spamassassin 
K34dhcrelay -> ../init.d/dhcrelay 
K34yppasswdd -> ../init.d/yppasswdd 
K35dhcpd -> ../init.d/dhcpd 
K35smb -> ../init.d/smb 
K35vncserver -> ../init.d/vncserver 
K36lisa -> ../init.d/lisa 
K45arpwatch -> ../init.d/arpwatch 
K45named -> ../init.d/named 
K46radvd -> ../init.d/radvd 
K50netdump -> ../init.d/netdump 
K50snmpd -> ../init.d/snmpd 
K50snmptrapd -> ../init.d/snmptrapd 
K50tux -> ../init.d/tux 
K50vsftpd -> ../init.d/vsftpd 
K54dovecot -> ../init.d/dovecot 
K61ldap -> ../init.d/ldap 
K65kadmin -> ../init.d/kadmin 
K65kprop -> ../init.d/kprop 
K65krb524 -> ../init.d/krb524 
K65krb5kdc -> ../init.d/krb5kdc 
K70aep1000 -> ../init.d/aep1000 
K70bcm5820 -> ../init.d/bcm5820 
K74ypserv -> ../init.d/ypserv 
K74ypxfrd -> ../init.d/ypxfrd 
K85mdmpd -> ../init.d/mdmpd 
K89netplugd -> ../init.d/netplugd 
K99microcode_ctl -> ../init.d/microcode_ctl 
S04readahead_early -> ../init.d/readahead_early 
S05kudzu -> ../init.d/kudzu 
S06cpuspeed -> ../init.d/cpuspeed 
S08ip6tables -> ../init.d/ip6tables 
S08iptables -> ../init.d/iptables 
S09isdn -> ../init.d/isdn 
S10network -> ../init.d/network 
S12syslog -> ../init.d/syslog 
S13irqbalance -> ../init.d/irqbalance 
S13portmap -> ../init.d/portmap 
S15mdmonitor -> ../init.d/mdmonitor 
S15zebra -> ../init.d/zebra 
S16bgpd -> ../init.d/bgpd 
S16ospf6d -> ../init.d/ospf6d 
S16ospfd -> ../init.d/ospfd 
S16ripd -> ../init.d/ripd 
S16ripngd -> ../init.d/ripngd 
S20random -> ../init.d/random 
S24pcmcia -> ../init.d/pcmcia 
S25netfs -> ../init.d/netfs 
S26apmd -> ../init.d/apmd 
S27ypbind -> ../init.d/ypbind 
S28autofs -> ../init.d/autofs 
S40smartd -> ../init.d/smartd 
S44acpid -> ../init.d/acpid 
S54hpoj -> ../init.d/hpoj 
S55cups -> ../init.d/cups 
S55sshd -> ../init.d/sshd 
S56rawdevices -> ../init.d/rawdevices 
S56xinetd -> ../init.d/xinetd 
S58ntpd -> ../init.d/ntpd 
S75postgresql -> ../init.d/postgresql 
S80sendmail -> ../init.d/sendmail 
S85gpm -> ../init.d/gpm 
S87iiim -> ../init.d/iiim 
S90canna -> ../init.d/canna 
S90crond -> ../init.d/crond 
S90xfs -> ../init.d/xfs 
S95atd -> ../init.d/atd 
S96readahead -> ../init.d/readahead 
S97messagebus -> ../init.d/messagebus 
S97rhnsd -> ../init.d/rhnsd 
S99local -> ../rc.local
이 목록에서 볼 수 있듯이, 실제적으로 서비스를 시작하고 중지하는 어떤 스크립트도 /etc/rc.d/rc5.d/ 디렉토리에 위치하고 있지 않습니다. 대신, /etc/rc.d/rc5.d/에 있는 모든 파일은 /etc/rc.d/init.d/ 디렉토리에 위치한 스크립트를 선택하여 심볼릭 링크합니다. 심볼릭 링크는 각각의 rc 디렉토리에 사용되어 런레벨은 실제적 스크립트에 영향을 미치지 않고 심볼릭 링크를 생성, 수정, 삭제하여 다시 생성될 수 있습니다.
각각의 심볼릭 링크 이름은 K 또는 S로 시작됩니다. K 링크는 런레벨에서 삭제된 프로세스이며, S로 시작되는 링크는 런레벨에서 시작되는 프로세스입니다.
The init command first stops all of the K symbolic links in the directory by issuing the /etc/rc.d/init.d/<command> stop command, where <command> is the process to be killed. It then starts all of the S symbolic links by issuing /etc/rc.d/init.d/<command> start.

참고

시스템이 부팅된 후, 루트로 로그인할 수 있게 되며 서비스를 시작 및 중지하기 위해 이와 동일한 스크립트를 실행하게 됩니다. 예를 들어, /etc/rc.d/init.d/httpd stop 명령은 Apache HTTP 서버를 중지합니다.
각각의 심볼릭 링크는 시작 순서를 지정하기 위해 번호 매겨집니다. 서비스가 시작 또는 중지되는 순서는 이러한 번호를 바꾸어 변경될 수 있습니다. 낮은 번호일 수록 더 먼저 시작하게 됩니다. 같은 번호를 갖는 심볼릭 링크는 알파벳 순으로 시작됩니다.

참고

One of the last things the init program executes is the /etc/rc.d/rc.local file. This file is useful for system customization. Refer to 30.3절. “부팅시 추가 프로그램 실행하기” for more information about using the rc.local file.
After the init command has progressed through the appropriate rc directory for the runlevel, the /etc/inittab script forks an /sbin/mingetty process for each virtual console (login prompt) allocated to the runlevel. Runlevels 2 through 5 have all six virtual consoles, while runlevel 1 (single user mode) has one, and runlevels 0 and 6 have none. The /sbin/mingetty process opens communication pathways to tty devices[14], sets their modes, prints the login prompt, accepts the user's username and password, and initiates the login process.
런레벨 5에서 /etc/inittab/etc/X11/prefdm 스크립트를 실행합니다. prefdm 스크립트는 선호하는 X 디스플레이 관리자를 실행합니다 [15]/etc/sysconfig/desktop 파일의 내용에 따라 gdm, kdm, 또는 xdm을 실행합니다.
실행이 완료되면, 시스템은 런레벨 5에서 작동하고 로그인 화면이 나타나게 됩니다.


[14] Refer to the Red Hat Enterprise Linux Deployment Guide for more information about tty devices.
[15] 디스플레이 관라자에 관한 보다 자세한 정보는 Red Hat Enterprise Linux 배포 가이드를 참조하시기 바랍니다.