IBM Power 서버 부팅과정 이해

반응형

시스템이 파워 스위치를 통해 시작하거나 (a cold boot) reboot 또는 shutdown 명령어를 통해 (a warm boot) 시작할 때, 시스템이 사용 가능하게 되기 위해서는 몇 가지 이벤트가 반드시 일어나야 합니다. 이러한 이벤트는 크게 세 phase로 나뉘어 질 수 있습니다.
[1]. Read Only Storage (ROS) Kernel Init Phase
[2]. Base Device Configuration Phase – Boot Phase 1
[3]. System Boot Phase – Boot Phase 2, 3


[1] ROS Kernel Init Phase

1. On-Chip Sequencer (OCS)가 microprocessor (BUMP)를 불러와서 시스템 마더보드에 이상이 없는지 체크합니다. 그 후 ROS가 power-on self-test(POST)를 통해 전원을 체크합니다.
2. ROS의 initial program load (IPL)가 유저의 boot list와 사용 가능한 boot device를 확인합니다. 만약 Non-Volatile Random Access Memory (NVRAM) 안에서 유저의 boot list 확인이 불가능할 경우나 사용 가능한 boot device를 찾을 수 없을 경우 default bootlist를 통해 이용 가능한 boot device를 찾게 됩니다. 만약 유저 boot list 가 없을 경우 모든 아답터와 디바이스들이 체크됩니다.
Note: 시스템은 default boot list 는 ROS에 user boot list 는 NVRAM에 저장합니다.
3. 사용 가능한 boot device 가 발견되면 boot record 나 program sector number (PSN) 을 체크해서 이용 가능여부를 확인한 후 memory로 이동시킵니다. 그 후 메모리의 어디에서 boot image가 읽혔는지 boot image의 길이는 얼마인지 어느 boot device가 사용 되었는지 등의 정보가 다음 boot를 위해 메모리의 IPL control block에 기록됩니다
4. Boot image 는 boot 레코드에 기록된 순서대로 메모리로 읽혀집니다. Disk boot image 는 kernel, random access memory (RAM) 파일 시스템 그리고 customized device 정보로 구성됩니다.
5. Boot Image가 메모리로 읽혀지고 나면 이제 process는 커널로 옮겨가 본격적인 시스템 초기화에 들어가게 되며 이때 RO가 init을 시작하여 rc.boot script의 phase 1 단계를 수행하게 됩니다.


[2] Base Device Configuration Phase – Boot Phase 1


Boot phase 1


rc.boot script 의 phase 1 은 base device 구성을 진행하며 전반적인 step은 아래와 같습니다.

1. Boot script는 restbase 명령어를 통해서 customized Object Database Manager (ODM)를 BLV에서 RAM 파일시스템에 구성합니다. 이 과정에 문제가 생기면 LED code 548를 보게 됩니다.
note: ODM 에 대한 이해는 Hints & Tips 49호 (2004년 7월호)를 참조하시기 바랍니다.
2. Boot script 는 configuration manager를 구동해 cfgmgr -f 이 RAM 파일시스템으로 옮겨온 ODM의 Config_Rules class를 읽은 후 base devices를 구성합니다. 이때 device의 attribute에 phase=1을 가진 device들은 base device로 간주됩니다. Base device란 rootvg에 접근하기 위해 필요한 모든 device를 말합니다. 이 과정을 통해 rootvg가 다음 phase에 active 될 수 있습니다.
3. Configuration manager 가 sys, bus, disk, SCSI, Logical Volume Manager (LVM) 그리고 rootvg volume group (RVG) configuration methods를 시작하게 됩니다.
4. Configuration methods 는 device drivers를 작동시키고 ODM의 customized data를 ODM 데이터베이스에 업데이트합니다.
5. 이 phase의 마지막에 bootinfo –b 가 구동되어 last boot device가 결정되며 이 단계에서 LED는 511을 보입니다.


[3] System Boot Phase - Boot Phase 2

Boot phase 2-1


Phase 1이 종료되고 rootvg에 mount 하기 위한 check가 모두 끝나면 다시 init 프로세스가 phase2를 rc.boot script command를 통해 시작합니다.
1) ipl_varyon 프로그램이 rootvg 을 vary on 합니다. 만약 이 과정이 성공하지 못하면 LED에서 552, 554, 또는 556 코드를 볼 수 있습니다.
2) root file system (/dev/hd4)이 임시 RAM 파일 시스템의 mount point인 /mnt에 마운트 되고 이 과정이 실패 할 경우 555 또는 557LED를 볼 수 있습니다. 다음으로 /usr 과 /var file system이 mount 되고 실패 시 LED 518을 보입니다.
3) 다음 단계로 /var를 mount 하게 되는데 이 때 system이 만들어 둔 dump 가 있다면 지정된 dump device로부터 copycore를 통해 dump를 복사해옵니다. default dump device 는 /dev/hd6이며 default copy directory는 /var/adm/ras입니다.
4) rootvg의 primary paging space인 /dev/hd6이 swapon 프로그램에 의해 활성화 됩니다.

Boot Phase 2-2


5) Boot phase 2의 앞 단계가 끝나면 rootvg의 RAM 파일 시스템에 만들어 둔 ODM 정보와 /dev 정보를 mergedev 프로그램을 이용하여 Hard disk로 옮겨지게 됩니다.
6) /usr 과 /var 이 RAM 파일시스템으로부터 unmount 됩니다.
7) 마지막으로 rootvg의 root 파일 시스템이 RAM 파일 시스템의 mount point인 /nmt 로부터 default mount point 인 /root로 옮겨집니다. 그 후 /usr 과 /var 역시 그들의 기본 mount point에 mount 할 수 있습니다.
8) 이 때까지 사용 가능한 console이 정해져 있지 않으므로 모든 boot message는 errorlog인 alog에 기록됩니다.


[3] System Boot Phase – Boot Phase 3

rc.boot 의 phase 2 가 끝나면 모든 boot 프로세스는 RAM 파일 시스템으로부터 하드 디스크의 root 파일시스템으로 바뀌게 됩니다. 이제 init 프로세스는 /etc/inittab file를 읽어서 지정된 프로세스들을 실행 시킵니다 이때 rc.boot script 의 phase3도 함께 실행됩니다.
9) /tmp 가 하드디스크의 파일시스템에 mount 됩니다.
10) configuration manager를 다시 실행시켜 나머지 device 들을 모두 구성합니다
11) savebase 명령어를 통해 이번 시스템 boot 시 수정된 여러 데이터를 boot logical volume 에 저장합니다.
12) rc.boot script를 종료하게 되며 이 과정이 끝나면 시스템은 완전히 올라와서 사용할 수 있게 됩니다.


4. the RAM File System 이해하기

Random access memory (RAM) 파일 시스템은 boot image의 일부이며 memory-resident 파일 시스템으로 시스템 boot가 진행되는데 필요한 모든 프로그램을 포함하고 있습니다. Root volume group 이 꼭 vary on 되야 하는 것이 아니기 때문에 RAM 파일 시스템의 서비스 boot는 logical volume 모양을 가질 필요는 없지만 Root volume group의 vary on과 paging의 보다 빠른 활성화를 위해 RAM 파일 시스템이 개별의 logical volume의 구조를 가집니다. RMA 파일 시스템이 boot 시 구동하는 init 명령어는 실제로는 간단한 shell (ssh) 프로그램입니다. 이 ssh 프로그램이 rc.boot라는 script를 통해 boot 프로세스를 관리합니다. rc.boot의 첫 단계는 어떤 디바이스를 통해 시스템을 boot 시킬 것인가를 결정하는 단계입니다. 이때 결정된 boot device가 어떤 device가 RAM 파일로 사용 될지를 결정합니다. rc.boot script가 boot device를 찾고 나면 RAM 파일 시스템으로부터 boot를 위한 시스템 구성이 시작됩니다. rc.boot script는 ssh 프로그램에 의해 두 번 불려지고 마지막으로 디스크나 network boot의 경우는 해당 host의 실제 inittab file 에 의해 불려져서 최종 구성을 완성하게 됩니다. 여러 가지 타입의 device 들을 구성하기 위해 각각의 Boot device 별로 RAM 파일 시스템은 다르게 구성되어있습니다.
각각의 device 마다 표준 구성을 가지고 있고 bosboot 명령어는 mkfs명령어를 통해 다양한 RAM 파일시스템을 만들게 되는 것입니다.





반응형