블로그 이미지
GUCCI

카테고리

전체보기 (111)
여행 (1)
기기 (2)
쇼핑 (0)
게임 (0)
etc. (6)
취업이야기 (0)
업무일지 (5)
리눅스 (38)
웹프로그래밍 (2)
네트워크 (4)
JAVA (17)
Android (0)
IOS (2)
LUA (8)
C/C++ (1)
Objective C (2)
SERVER (2)
그누보드4 (1)
MSSQL (2)
Programming (1)
자바스크립트 (4)
HTML/CSS (1)
LGNAS (0)
Total
Today
Yesterday

리눅스 부팅 과정

리눅스 / 2012. 2. 10. 09:10

■ 시스템 부팅 과정

 

▶ 개 요

 - Bootstrapping 이란 '컴퓨터를 시동하기'를 뜻한다. 컴퓨터가 처음 시동될 때에는 아직 OS가 작동가능한 상태가 아니므로 컴퓨터는 스스로 OS를 메모리에 로드하고 여러 초기화 작업을 수행해야 한다. 이 과정을 bootstrapping, 줄여서 booting이라고 한다.
Booting 중에 있는 시스템은 취약하다. 설정의 오류, 장치의 부재, 잘못된 파일 시스템등에 의해 시스템은 잘 booting 되지 않을 수 있다. 시스템 관리자는 처음 시스템을 설치하게 되면, 시스템의 환경에 맡게 적절한 시스템 설정을 해주어야 한다.

시스템은 자동 또는 수동으로 booting 할 수 있다. 자동 모드에서는 외부로부터의 조작없이 시스템이 스스로 모든 booting 과정을 끝낸다. 수동 모드에서는 시스템이 싱글 유저 모드 단계까지만 booting 과정을 진행하고, 이 후는 관리자가 직접 부팅 과정을 수행한다.

⇒Boot PROM
각 W/S는 Kernel을 load하기 전에 시스템 운용을 제어하는 monitor program이내장된 PROM Chip을 가지고 있다. 또한 PROM은 시스템에 접속된 장치들을 확인하고 access할 수 있는 내장 device driver를 가지고 있다. 

⇒Boot Blocks
시스템의 첫 번째 boot 프로그램은 bootstrap 과정에서 사용되는데, 이것은 두번째 boot program을 load 하는데 사용된다.
두 번째 boot program은 "installboot" 명령어에 의해 root File system에 install된다. 

⇒Run Level
Run Level은 시스템 서비스들을 설정하는 System Software Configuration이다.

⇒Run Control Scripts
File system Check 및 mount와 여러 Daemon Process를 시작하고 중지시키는 rc script들을 제공한다.

⇒Kernel Modules
Small static core와 dynamically loadable module로 구성된다.

▶ 시스템 Booting 절차

   1) 부팅의 과정은 여섯단계로 나누어진다.

  • 커널의 로딩과 초기화
  • 장치 인식과 설정
  • 자발적인 시스템 프로세스의 생성
  • 관리자 제어(싱글 유저 모드에서만)
  • 시스템 startup scripts 실행
  • 다중 사용자 모드 진입

   2) 상세한 절차 표현

     ① Boot PROM(1. 시스템 설정 banner의 표시(Model 및 Keyboard type, HostID, 
         PROM revision Number, Ethernet Address) 
         →2. 자기지단 → 3. PROM에 설정된 Boot 장치에서 boot program을 찾는다. 
         →4. Boot Program의 load(/platform/sun4m/ufsboot)
     ② Boot Program(5. ufsboot 프로그램을 load한 후 boot PROM은 kernel을 load한다.)
     ③ Kernel 초기화 단계(6. Kernel 자기자신을 초기화한 후 ufsboot program을 이용하여          moduleemf을 load 한다.)
     ④ /sbin/init(7. Kernel은 사용자 process 한 개를 생성하고 /sbin/init program을실행

        시킨   다. 
         →8. /sbin/init program은 /etc/inittab 파일에 기록된 내용을 실행한다.)

 

OBP Basic Element's Relationship to NVRAM and CPU

 

 

▶ System Run Levels

Run Levels

기 능

0

PROM Monitor Level

1

시스템 관리상태(몇 개의 파일시스템이 mount되어지고 login 환경을 지원하지 않는 Single-user)

2

자원을 공유할 수 없는 Multiuser 상태

3

자원을 공유할 수 있는 Multiuser 상태

4

현재는 사용되지 않음

5

Halt와 대화형 Boot(boot -a)

6

Reboot to default run level 3

S,s

시스템 관리상태(몇 개의 파일시스템이 mount되어지고 login 환경을 지원하지 않는 Single-User 상태

※ Run level은 who -r로 확인

▶ Run Control Scripts

 - 모든 Run level들은 시스템 상태에 대하여 기능별로 start 또는 stop할 수 있는특정 shell script를 가지고 있다. 이러한 shell script들은 각 run level 관련 디렉토리 안에 있는 실행 가능한 형태의 명령어 파일을 수행시킨다.
이 명령어 파일들은 /etc/init.d 디렉토리에 link되어 사용된다

명령어

run control script

run level directory

/sbin/init0

/sbin/rc0

/etc/rc0.d

/sbin/initS

/sbin/rcS

/etc/rcS.d

/sbin/init1

/sbin/rc1

/etc/rc1.d

/sbin/init2

/sbin/rc2

/etc/rc2.d

/sbin/init3

/sbin/rc3

/etc/rc3.d

/sbin/init5

/sbin/rc5

 

/sbin/init6

/sbin/rc6

 

 

▶ Run Control Script의 요약

Script Name

주요 기능

/sbin/rcS

- diskless/dataless client 지원을 위한 network setup

- root와 user File system의 check 및 mount

- device 생성 및 Link

/sbin/rc0

- PROM level로 System Down

- 시스템의 서비스와 모든 프로세스의 중지

- 모든 File system의 mount

/sbin/rc1

- Run level 1(Single user Mode)로 system down

/sbin/rc2

- run level 2의 Multiuser 상태 
- 모든 File system의 mount 
- NFS File system Sharing을 제외한 모든 network service의 수행

/sbin/rc3

- 모든 자원의 공유가 이루어지는 run level 3의 Multiuser 상태
- syslogd daemon start
- NFS, RFS server Process Start

/sbin/rc5

- 시스템 Halt와 대화형 Booting의 실행
- 모든 시스템 프로세스와 서비스의 중지
- File System의 umount

/sbin/rc6

- 시스템의 Halt와 Reboot 
- /etc/rc0.d/K* stop 수행 
- 시스템 프로세스와 서비스의 중지
- File system의 umount 
- Booting하여 /etc/inittab파일의 initdefault 수행

 

 

▶ System Run Level의 변경

1) boot 명령어

-PROM monitor level의 boot 명령어는 다른 run level로 변경 실행 시킬 수 있다.

 

    ok boot [device_name] [option]

 

option

설 명

-a

 interactive boot

-r

 reconfiguration boot

-s

 Singel mode run level로 boot

-v

 상세한 boot 메시지를 print

-w

 File system을 쓰기 가능하게 boot

 

2) who 명령어

- 현재 시스템의 상태를 알 수 있다.

option

설 명

-a

 all

-b

 boot time

-d

 dead process

-l

 login process

-p

 process other than getty or user

-r

 run level

-T

 status of tty(++writable, -not writable, ?hung)

-u

 useful information

 

3) /sbin/init 명령어

- init 명령어는 system run level을 변경하기 위하여 shutdown 명령어 대신 사용할 수 있다.

그러나, init 명령어는 경고 메시지를 보내지는 않는다.

option

설 명

0

 PROM Monitor level

1

 Single-User level

2

 Multi-User level(no resource shared)

3

 Multi-User level(resource shared)

5

 Interactive Boot

6

 Halt and reboot Default run level3

S,s

 Single-User level

Q,q

 init 프로그램이 /etc/inittab 파일을 re-read

 

4) /sbin/init 프로세스

- 시스템이 booting할 때 /etc/inittab File의 "initdefault"에 의하여 첫 번째 run level이 설정된다.

/sbin/init 프로세스의 중요한 역활

① Scheduler 와 Page Daemon 등과 같은 모든 프로세스의 부모 프로세스 역할 
② 시스템을 default run level로 설정하기 위한 프로세스들을 생성
③ /etc/inittab 파일을 참조하여 run level 간의 변화를 조절
④ Service Access Control(SAF)를 구동시키며 Port Service를 관리한다.

 

5) /sbin/rc* Script

- 시스템 환경의 초기화를 수행

  • File system Check 및 Mounting
  • Network 환경 구축
  • Device Configuration 및 Link
  • Start Daemon Process

 

6) /etc/init.d Directory

- rc script는 /sbin 안에 존재하며 /etc 디렉토리 안의 file과 symbolic link 되어 있다. 
/etc/init.d 안에는 run control file들이 존재하는데 process를 start 시키거나, 또는 kill 시키는 script 들이 존재한다. 
실질적인 file은 이 디렉토리 안에 존재하지만 /etc/rc* 디렉토리와 hard link 되어있다.
만약, 어떤 script를 첨가하고 싶으면 /etc/init.d 디렉토리에 해당 script를 첨가하면 된다.

 

7) /etc/inittab File

- run level과 어떤 action을 취하는지의 정보를 기록하고 init process에 의해 생성된다.
init 프로세스는 run level이 변화할 때의 signal을 받으면 /etc/inittab file에 등록된 프로세스에 따라 시스템 환경을 처리한다.

 

8) Adding Run Control Files

- run control file을 추가하고자 할 경우의 procedure 이다.
① /etc/init.d/README file을 참고한다.
② 해당 file을 /etc/rc*.d의 어느 디렉토리에 link 할 것인지 결정한다. 
그리고 그 script가 start 인지 kill인지 결정한다.
③ /etc/init.d에 file을 만든 후 /etc/rc*.d에 링크 한다.
ex) # more /etc/init.d/sample 
echo 'Hello Soalris'
# cd /etc/rc3.d
# in /etc/in


'리눅스' 카테고리의 다른 글

portmap 데몬  (2) 2012.02.15
Linux Hotplug  (6) 2012.02.10
/dev/null 2>&1 의 의미  (1) 2012.02.10
Vi/Vim 단축키 모음 키보드그림  (4) 2012.02.09
RPM( Redhat Package Manager)  (1) 2012.02.09
Posted by GUCCI
, |

최근에 달린 댓글

글 보관함