· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Init Scripts

이 문서는 부트 스크립트와 네트워크 관련 스크립트에 관련된 내용을 OS 혹은 배포판 별로 정리하고 있습니다. 추가할 배포판이나 내용이 있으면 자유롭게 내용을 추가해 주시고, 고칠 부분이 있으면 역시 자유롭게 고쳐 주세요. 내용 정리, 재배치 역시 언제든지 환영합니다.

1. Init scripts를 관리하는 프로그램

배포판(운영체제) 관리 프로그램
RedHat /sbin/chkconfig
Debian /usr/sbin/update-rc.d
Gentoo /sbin/rc-update
FreeBSD ??

2. 부팅과정

2.1. RedHat

  • "/etc/inittab"에 "id:X:initdefault:"라고 명시하며 "X" 부분에 숫자로 runlevel을 선택합니다. 해당 runlevel 순자에 해당하는 "/etc/rcX.d/SYYService" 에서 YY의 숫자로 명시된 순으로 서비스를 기동하게 됩니다.
  • "/etc/rc.d/init.d" 디렉토리 내에 서비스(Daemon)을 관리하는 쉘스크립가 위치하여 있으며, 이들의 심벌릭 링크들이 각 runlevel에 시작 순서를 나타낼 수 있는 위와 같은 별도의 이름로 위치하고 있습니다.

[root@ns root]# ls -l /etc/rc.d/rc3.d/S*
lrwxrwxrwx    1 root     root           17 Sep  4 04:55 /etc/rc.d/rc3.d/S10network -> ../init.d/network
lrwxrwxrwx    1 root     root           16 Sep  4 04:55 /etc/rc.d/rc3.d/S12syslog -> ../init.d/syslog
lrwxrwxrwx    1 root     root           17 Sep  4 04:55 /etc/rc.d/rc3.d/S13portmap -> ../init.d/portmap
lrwxrwxrwx    1 root     root           18 Sep  4 04:55 /etc/rc.d/rc3.d/S17keytable -> ../init.d/keytable
lrwxrwxrwx    1 root     root           16 Sep  4 04:55 /etc/rc.d/rc3.d/S20random -> ../init.d/random
lrwxrwxrwx    1 root     root           15 Sep  4 04:55 /etc/rc.d/rc3.d/S25netfs -> ../init.d/netfs
lrwxrwxrwx    1 root     root           14 Sep  4 04:55 /etc/rc.d/rc3.d/S55sshd -> ../init.d/sshd
lrwxrwxrwx    1 root     root           20 Sep  4 04:55 /etc/rc.d/rc3.d/S56rawdevices -> ../init.d/rawdevices
lrwxrwxrwx    1 root     root           16 Sep  4 04:55 /etc/rc.d/rc3.d/S56xinetd -> ../init.d/xinetd
lrwxrwxrwx    1 root     root           15 Sep  4 04:55 /etc/rc.d/rc3.d/S85httpd -> ../init.d/httpd
lrwxrwxrwx    1 root     root           15 Sep  4 04:55 /etc/rc.d/rc3.d/S90crond -> ../init.d/crond
lrwxrwxrwx    1 root     root           11 Sep  4 04:36 /etc/rc.d/rc3.d/S99local -> ../rc.local

  • /etc/rc.d/rc.local/etc/rc.d/init.d에 포함되지 않은 스크립트이며 부팅시 사용자가 원하는 간단한 명령을 추가하기 위한 용도로 활용되고 있습니다.
  • Redhat에서 서비스(Daemon)라 함은 crond, httpd, portmap, nfsd 등과 같은 명확히 프로세스의 형태로 메모리에 남아 지속적으로 실행되는 프로그램뿐만 아니라, kudzu, random과 같이 시스템 설정이나 관리를 위해 단기적으로 실행되는 것들도 포함되며 또한 Kernel의 부수적인 하드웨어 제어를 위한 별도의 기능(network, pcmcia, apmd)들도 역시 포함됩니다.
  • 이들 /etc/rc.d/init.d에 포함되어 있는 모든 서비스 스크립들은 service라는 명령으로 제어가 가능하며, 일반적으로는 start, stop, restart의 세가지 명령을 수행합니다.(kudzu와 같은 경우는 restart가 없습니다.) 서비스에 따라서는 status등과 같은 별도 기능을 가지고 있는 것들도 있습니다. 이들 명령의 확인은 단순하게 service 서비스명으로 조회가 가능합니다. 참고로 restart는 stop->start의 연속인 경우가 대부분이지만, 경우에 따라서는 해당 서비스가 가지고 있는 특유의 재실행 명령을 수행하기도 합니다.

[root@ns2 root]# service named status
number of zones: 15
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
server is up and running
[root@ns2 root]# service named stop
Stopping named:                                            [  OK  ]
[root@ns2 root]# service named start
Starting named:                                            [  OK  ]
[root@ns2 root]# service named restart
Stopping named:                                            [  OK  ]
Starting named:                                            [  OK  ]
[root@ns2 root]# service named reload
[root@ns2 root]# service httpd status
httpd (pid 27936 27935 27934 27933 27932 27926 27925 27924 1164) is running...
[root@ns2 root]# service httpd
Usage: httpd {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}

2.2. Debian

  • "/etc/inittab"에 "id:X:initdefault:" 라고 명시하며 "X" 부분에 숫자로 runlevel을 선택합니다.
  • init에 의해 처음 실행되는 스크립트는 /etc/init.d/rcS입니다. 이 스크립트는 /etc/rcS.d/에 있는 스크립트를 실행합니다. 이 스크립트 실행이 끝나면 initdefault에 설정한 runlevel로 이동합니다.
  • Debian의 기본 runlevel은 2입니다. 1은 싱글유저, 2-5는 멀티유저, 0은 시스템 종료, 6은 재부팅입니다. 2에서 5까지의 런레벨은 아무런 차이가 없으며, 3, 4, 5는 기본적으로 사용되지 않습니다. 필요하시면 3, 4, 5 runlevel을 마음대로 고치셔서 작동시키셔도 문제가 없다는 얘기가 됩니다.
  • 각 runlevel에 맞게 /etc/rcrunlevel.d/에 스크립트가 위치합니다. 물론 실제적인 스크립트는 /etc/init.d에 있으며 각 runlevel 디렉토리에 심볼릭 링크되어 있습니다.
  • 예를 들어 센드메일 재시작은 /etc/init.d/sendmail restart 와 같이 실행합니다.

2.3. Gentoo

  • "/etc/inittab"에 "id:X:initdefault:" 라고 명시하며 "X" 부분에 숫자로 runlevel을 선택합니다.
  • RedHat 과는 다르게 "/etc/runlevels"에 boot, default, nonetwork, single 등 숫자대신에 이름이 부여되어 있으며 이를 통해서 서비스가 기동됩니다.
  • 또한 의존성관계가 철저한 명시로 이루어지며 의존성에 관계가 없을경우(명시되지 않는다면) 알파벳 순서로 기동되게 되어 있습니다. 즉, 의존성을 검사하는 단계가 있으며 이에 의해서 순서가 결정됩니다.
  • RedHat에서는 이것을 SXX로 숫자에 의해서 강제로 부여되지만 Gentoo에서는 의존성이 명시되며 이에 의해서 정확한 순서가 지켜집니다. init 스크립트는 "/etc/init.d"에 명시되며 rc-update 명령에 의해서 "/etc/runlevels"에 링크가 걸리게 되며 init script에서는 각 runlevel을 boot->default 순으로 scan하게 됩니다. 또한 runlevel 의 이름은 사용자가 임의로 바꿀수 있기도 합니다.(이때도 알파벳순서에 의존함)
  • 의존성에 의한 실행절차의 결정은 "/sbin/depscan.sh" script가 관장하며 "rc-update"명령실행시에 자동으로 함께 호출되므로 특별한 경우가 없다면 따로 실행할 경우는 없습니다. (간혹 사용자가 script를 수정하거나 의존성명시부분을 수정하였을때 실행해줘야 합니다.)

3. 그외 기본 설정 (네트웍 등)

3.1. RedHat

  • 네트웍 설정 관련파일
    • /etc/sysconfig/network
    • /etc/sysconfig/network-script/ifcfg-eth0 , ethx
    • inetd : internet super server . service daemon
    • redhat 6.x 이하 : /etc/inetd.conf
    • redhat 7.x 이상 : /etc/xinetd.conf , /etc/xinetd.d (디렉토리내 설정)
  • 네트워크 재시작
  • service network restart

3.2. Debian

  • 네트웍 설정
  • dpkg-reconfigure etherconf
  • /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.0.2
        netmask 255.255.255.0
        gateway 192.168.0.1

# dhcp는 다음과 같이
auto eth0
iface eth0 inet dhcp
  
  • 네트워크 재시작 : /etc/init.d/networking restart

3.3. Gentoo

  • Network configuration
  • "/etc/conf.d/net" 에 설정을 하게 되며 딱 보면 설명이 없어도 알아볼 정도로 쉽습니다.
  • "/etc/init.d/net.eth0" 등과 같이 "net.XXXY" 와 같은 식으로 각 NIC 서비스를 편집하거나 만들어서 "rc-update add net.eth0 default" 로 등록합니다.
  • xinetd
  • "/etc/xinetd.conf" : 설정파일
  • "/etc/xinet.d/*" : 확장된 설정파일
  • xinetd 를 기동하기 위해서는 다음과 같은 절차로 기능을 활성화 해줍니다.
  • "rc-update add xinetd default" 로 부팅시 실행되도록 합니다.
  • "/etc/xinetd.conf" 에서 "only_from = localhost" 라고 명시된 부분을 주석처리 또는 삭제합니다.
  • "/etc/xinet.d" 에서 원하는 서비스의 파일을 열어서 "disable = yes" 라고 된 부분을 "disable = no" 로 바꿉니다.
  • rc script 의 설정은 "/etc/conf.d/rc"를 수정하여 설정합니다.

5. Q and A




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2005-04-12 22:23:51
Processing time 0.0081 sec