티스토리 뷰

유닉스 부팅의 개요

1.1 부팅이란?

컴퓨터에서 부팅 이란 시작한다는 뜻으로 통용되는 용어이며, Bootstrapping 의 줄임말이다. Bootstrap이란 장화(부츠)를 손쉽게 신기 위해 잡아당길 수 있도록 되어 있는 손잡이가죽을 말하며, 결국 bootstrapping은 장화를 신듯이 시스템이 운영할 수 있는 준비를 하는 것을 뜻한다.
1.2. boot 과정

일반적인 UNIX의 부팅 과정에서 진행되는 일은 다음과 같다.

- Kernel의 loading 과 initialization
- Device detection 과 configuration
- System process 의 생성
- Operator intervention(single-user boot에서만 가능함)
- System 시작 스크립트 수행
- Multi-user operation

x86 계열의 부팅과정으로, 보다 구체화 시키면 다음과 같다.

- 전원이 들어오면 일단 BIOS가 시스템 하드웨어에 문제가 없는지 테스트한다.
- 첫번째 하드 디스크의 MBR(Master Boot Record)의 프로그램이 Partition Table을 검사하여 활성화(active)된 파티션의 부트 섹터를 읽어 그 코드를 실행한다. 해당 코드는 커널을 메모리로 읽어 들이는 역할을 한다.
- 커널은 자료구조를 초기화하고 필요한 커널 모듈을 읽어 들인다.
- Root file system 을 mount 한다.
- init 프로그램을 수행한다(init 프로그램이 다양한 스크립트를 수행하여 multi-user mode로 전환하게 된다).

1.3. 초기 프로세스의 생성

커널이 메모리에 올라오고 초기화 작업이 끝나는 시점에서 사용자 메모리 영역에 몇 개의 자발적(spontaneous) 프로세스(fork와 같은 방법으로 만들어지는 것이 아닌 프로세스)를 만든다. BSD계열에서는

- swapper : process 0
- init : process 1
- pagedaemon : process 2

등이며, System V 계열에서는

- sched : process 0
- init : process 1
- memory handler(각 시스템마다 차이가 있음)

등의 이름을 가지고 있다. 몇몇 초기 프로세스의 생성이 끝나면, 부팅 에 관한 커널의 임무는 여기서 끝나고 나머지 부팅 과정은 init process 가 주도한다.

1.4. 시작 스크립트

init 는 각종 스크립트를 수행하여 시스템 운영 환경을 구축한다. 스크립트의 수행구조는 BSD계열과 System V 계열이 약간 차이가 있다.
BSD계열은 /etc 하위에 rc 로 시작하는 파일들이 수행되는 스크립트이며, System V계열은 /etc/init.d 하위에 시작 스크립트들이 존재하고 이중 필요한 것들이 /etc/rc0.d, /etc/rc1.d 등의 디렉토리에 링크되어 사용된다.
어떤 시스템이든 시작 스크립트는 대략 다음과 같은 일들을 한다.

- 컴퓨터의 이름 setting
- time zone setting
- 시스템의 디스크들을 mount
- network interface를 configuration
- 각종 daemon 과 network service 를 시작

우리는 솔라리스가 따르고 있는 System V 방식의 시작 스크립트에 대해 자세히 알아보도록 하겠다.

1.5. run level

System V 계열의 init daemon 은 run level 이라는 것을 지원한다. Run level은 시스템 자원을 서로 다르게 조합하여 운영하는 것을 가능케 하는데 시작 스크립트도 이에 따라 여러 부분으로 나누어져 있다.

System V에서는 다음과 같이 8개의 run level 을 제공한다.

Run LevelFunctionality
0Power down state : 시스템과 주변장치의 power 를 내려도 안전한 레벨
1System Administration state : 다른 log-on 한 사용자에게 영향을 주지 않고 관리 업무를 수행할 때 사용
2Multiuser mode : NFS 외의 모든 서비스가 제공되는 상태
3Networked Multiuser mode : 일반적인 operating mode
4Alternative Multiuser mode : 현재 사용되지 않는 run level
5Firmware state : maintenance activity를 위해 사용
6Shutdown and reboot state : 보통상태에서 reboot 할 때 사용
SSingle-user mode

댓글
안내
궁금한 점을 댓글로 남겨주시면 답변해 드립니다.