▶ 개 요
- 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
|