2011년 5월 25일 수요일

Chapter 1 Unix System 시작과 종료

Chapter 1 Unix System 시작과 종료


1.        Booting 절차
시스템 가동절차를 7단계로 나누어보면,

1단계: shelf-test
2단계: ok boot
3단계: boot disk(1-15번 섹터)을 읽어들인다.
4단계: boot block(bootblk) 프로그램을 로드한다
5단계: boot program(ufsboot) 프로그램을 로드한다.
6단계: ufsboot 프로그램은 32비트 또는 64비트 커널을 로드한다.
7단계: 커널 모듈을 로드한다
8단계: /etc/system 파일을 읽어 커널 파라미터의 값을 설정한다.
9단계: 커널 초기화를 실행한 뒤 init 프로세스를 실행한다.
10단계: init 프로세스는 /etc/inittab 파일을 읽어서 run control 스크립터를 실행한다.
A.      init 프로세스의 처리 루틴
시스템 부팅시 /stand/unix 프로그램에 의해 /sbin/init 프로세스가 구동된다. init 프로세스는 /etc/inittab 파일을 읽어서 그 파일에 기술된 순서대로 프로세스를 구동 시킨다. 시스템 관리자는 필요에 따라 시스템의 Run-Level을 변경할수 있는데 이때는 수퍼바이즈로 로그인한 상태에서 init프로그램을 실행하는 방법을 사용할 수 있다. 이때도 init프로세스는/etc/inittab파일을 순차적으로 읽어서 실행한다.
# cat /etc/inittab
ap::sysinit:/sbin/autopush -f /etc/ap/chan.ap
bchk::sysconf:/sbin/bcheckrc </dev/console >/dev/console
is:3:initdefault:
a0:0123456:wait:/sbin/contty -c 1 >/dev/sysmsg 2>&1
r0:0:wait:/sbin/rc0 off 1>/dev/sysmsg 2>&1 >/dev/console
r1:1:wait:/sbin/rc1  1>/dev/sysmsg 2>&1 >/dev/console
r2:2:wait:/sbin/rc2  1>/dev/sysmsg 2>&1 >/dev/console
r3:23:wait:/sbin/rc3  1>/dev/sysmsg 2>&1 >/dev/console
r5:5:wait:/sbin/rc0 reboot 1>/dev/sysmsg 2>&1 >/dev/console
r6:6:wait:/sbin/rc0 reboot 1>/dev/sysmsg 2>&1 >/dev/console
nw:12345:powerwait:/sbin/rpcfr >/dev/sysmsg 2>&1 >/dev/console
sc:23:respawn:/usr/lib/saf/sac -t 300
 :      :             :


/etc/inittab화일의 각항목은 콜론(:)에 의해 4개 필드로 나누어져 있다.
  • 1번째 필드: 라인식별자 ,4개 문자로 사용자가 정의한 각 항목의 이름
  • 2번째 필드: 상태
  • 3번째 필드: 액션
  • 4번째 필드: 명령어 init가 실행할 명령어를 기술한다.

init가 명령어를 실행할때 취할 액션지정
off
만약에 실행중인 프로세스가 있으면 종료한다.
once
지정하는 명령어를 한번만 실행한다.
sysinit
시스템을 초기화 하기위해 사용된다. init가 지정한 Run-level로 들어갈 때 실행되는 명령어들이다.
sysconf
initdefault와 비슷하다. exit code가 0가 아니더라도 run-level이 가능하다
initdefault
default 시스템 run-level을 지정한다
boot
시스템 부팅후 이 시스템 상태로 들어 갈 때 처음 실행한다
bootwait
boot하고 같지만 이 명령이 종료될 때 까지 다음 항목을 읽어서 실행하지 않는다
powerfail
init가 powerfail신호를 수신하였을 때 실행한다
powerwait
powerfail과 같지만 이 명령이 종료될때까지 다음 항목을 읽어서 실행하지 않는다.
respawn
init가 계속해서 프로세스를 점검하여 계속적으로 실행 상태가 유지되도록한다.
wait
명령이 종료될 때 까지 inittab의 다음 항목을 읽어서 실행하지 않는다


B.      /etc/rcx.d 디렉토리내 파일들의 이름 규칙
/etc/rcx.d 디렉토리들은 시스템 상태가 바뀌는 동안에 실행될 프로그램을 저장하고 있다. 디렉토리명중 x 는 시스템 상태번호로 대체된다. 각 상태는 init에 의해 시작되는 rcx 프로그램을 가지는데 이프로그램은 rcx.d 디렉토리내의 쉘 스크립트를 실행시킨다.
디렉토리내의 화일명의 형식
[S|K][00-99][이름]
  • S : Start
  • K : Kill
  • 00-99 : 순서번호
  • 이름 : 요약명

시스템 부팅시에 실행되어야 할 프로그램이 있다면 해당 Run-Level에 읽혀져서 실행되는 디렉토리안에 파일명형식에 맞춰 실행 디스크립트 파일을 생성해 두면 된다.
2.        시스템 상태
솔라리스에서는 시스템 부팅시 여러개의 부트 단계를 제공하고 있다.
런레벨
설명
0
시스템 다운 (SPARC 에서는 PROM감시단계)
1
관리 상태
싱글유저상태. 멀티유저 화일시스템이 언마운트
되고 데몬도정지
2
다중사용자 상태. 화일시스템이 마운트되고 정규 사용자 서비스가 시작 된다
3
NFS(Network File System)상태. 다중사용자가 네트웍을 통해 화일시스템을 서비스 받을 수 있다.
4
사용자 정의. 현재 거의 사용하지 않음
5
정지(halt) 및 전원 차단
6
기본수행단계로 리부팅
S,s
싱글유저 상태. "root"사용자만이 시스템에 접근가능하며 최소한의 루트 파일시스템만 사용가능한 상태


3.        시스템 종료
시스템을 종료시키기 전에 먼저 해주는 작업이 "sync"라는 작업이다. 이 "sync"작업의 필요성은 디스크 의 수퍼블락이라는 영역에는 파일시스템에 관한정보(사용가능한 inode, 사용가능한 데이터 저장 공간에 대한 정보)는 파일 시스템이 마운트 될 때 메인 메모리에 로드된다. 이 정보는 사용자가 새로운 파일을 생성한다던지, 파일을 삭제할 때 변경되게 되는 데 그 변한 내용중 디스크에 기록되지 않은 내용들을 디스크에 저장하도록 하는 명령이다. 여러번의 "sync"명령을 실행하고 난 뒤 상황에 맞는 적절한 종료 명령을 사용한다.
1)       halt : 시스템을 바로 종료시킨다. 이 명령 실행전에 반드시 "sync" 명령을 선행한다.
2)       fsathalt : halt와 동일하나 시스템이 리부팅 될 때 디스크 검사를 하지 않으므로 부팅이 빨리 된다.
3)       Shutdown : 시스템을 사용중인 사용자에게 셧다운 경고 메시지를 전송한 뒤 지정한 시간후에 시스템을 종료한다.
# shutdown -h now
# shutdown -h +2
# shutdown 20:00


/usr/sbin/shutdown 명령은 시스템 종료에도 사용하지만 주로 시스템의 실행 단계 변경을 위해 사용된다.
명령어 형식:
shutdown [-y] [-gn] [-istate]
  • -y 시스템 종료 작업시 확인 질문에 대해 사전 yes값을 지정
  • -gn 시스템 종료작업이 시작되기전 대기 시간을 초단위로 지정(디폴트 60초)
  • -istate init에 의해 변경될 시스템 상태 지정

참고 : Unix 호스트명을 변경하는 쉘스크립트
파일 이름 chhostname.sh
#!/bin/ksh
#
#   호스트명을 변경하기 위해서는
#   /etc/nodename
#   /etc/hosts
#   /etc/hostname.hme0
#   /etc/net/ticlts/hosts
#   /etc/net/ticots/hosts
#   /etc/net/ticotsord/hosts
#   파일에서 호스트명을 변경하여야 한다.
#
TMP=/tmp/tmpfile        

if [ "$1x" == "x" ]
then
echo "Usage : ./chhostname  <new_hostname> "
   exit 1
fi
OLD_HOSTNAME=` cat /etc/nodename`
for FILENAME in /etc/nodename /etc/hosts `ls /etc/hostname.*0` /etc/net/ticlts/hosts  /etc/net/ticots/hosts /etc/net/ticotsord/hosts
do
   cp $FILENAME $FILENAME.bak
sed "s/\<$OLD_HOSTNAME\>/$1/g" $FILENAME > $TMP 2>/dev/null
mv $TMP $FILENAME
echo "$FILENAME 파일을 변경하였습니다"
done
rm $TMP

댓글 없음:

댓글 쓰기

블록체인 개요 및 오픈소스 동향

블록체인(block chain) 블록체인은 공공 거래장부이며 가상 화폐로 거래할때 발생할때 발생할 수 있는 해킹을 막는 기술. 분산 데이터베이스의 한 형태로, 지속적으로 성장하는 데이터 기록 리스트로서 분산 노드의 운영자에 의한 임의 조작이 불가...