부팅 관련 용어 정리

1. 런 레벨(Run Level)

- 시스템에서 런 레벨의 의미는 시스템의 운영 상태를 숫자나 문자로 표현 한 것

* 런 레벨(Run Level)

유닉스 시스템 관리자가 시스템 관리의 편의성을 증대하기 위해서 사용되는 것으로 필요시에는 유닉스 부팅을 변경하여 네트워크를 사용하지 못하게 하거나, 다른 사용자가 접근하지 못하게 하는 역할을 수행할 수 있음


1) /etc/inittab 파일

- init 프로세스: 모든 프로세스의 부모 프로세스, /etc/inittab 파일에 저장 되어 있는 스크립트 대로 프로세스들을 생성

- /etc/inittab 파일에 정의된 런 레벨에 따라 /etc/rc.d/rc[x].d ([x]는 런 레벨) 디렉터리에 나열된 스크립트를 실행하여 시스템의 운영상태를 구성

(* 참고: /etc/inittab파일에서는 /etc/init.d/rc [x]가 실행되는 것 같은데... 그리고 rc[x].d는 /etc에 있음..모르겠음 ㅠㅠ)


2) 유닉스의 런 레벨

 런 레벨

 상 태

 설 명

 0

 

 PROM(Programmable Read-Only Memory) 모드

 1

 부팅 직후 상태

 시스템 싱글 유저 모드, 로컬 파일 시스템이 마운트 되지 않은 상태

 2

 정상 상태

 멀티 유저 모드(NFS 클라이언트 모드)

 3

 멀티 유저 모드(NFS 서버 모드), UNIX 기본 Run Level

 4

 

 사용 안함

 5

 (유닉스)종료 상태

 시스템 power off 모드 

 (리눅스)정상 상태

 멀티 유저 모드 (x윈도우 환경으로 실행)

 6

 재부팅

 시스템 리부팅

 S, s

 

 시스템 싱글 유저 모드, 로컬 파일 시스템이 마운트 된 상태

* 참고

1. PROM(Programmable Read-Only Memory) 모드

PROM은 시스템이 부팅되기 전에 이용되며 self-test 절차로 시스템과 H/W와의 무결성 여부를 진단, 에러가 없으면 자동으로 boot process 수행

2. PROM 역할

하드웨어 테스트 및 초기화, 하드웨어 설정 확인, OS부팅, 대화형 인터페이스 지원, 하드웨어 검사, CPU검사, 메모리 검사, 버스 장치 검사, 드라이버 점검, 장치 트리 구성 등

3. Boot PROM이 가지고 있는 정보

- 기본적인 하드웨어 점검

- Flash ROM에 저장되어 존재하며, 소켓 형식으로 제공

- Defaults 값만 저장되어 있고 변경된 값은 NVRAM에 저장

- 인텔 PC의 CMOS와 유사

- 서버용 UNIX 시스템: 3 또는 5의 런레벨로 운영

3) 현재 운영중인 시스템의 런 레벨 확인

- who -r(--runlevel) 또는 runlevel 명령을 사용하여 확인


2. INIT 상태(INIT State)

- INIT 상태 = 런 레벨

- init 명령: 시스템이 런 레벨을 이동할 때 사용

- 예: 현재 런 레벨이 멀티 유저 모드 3번에서 싱글 유저 모드로 이동 - init S 명령어 이용


3. 시스템 런 레벨 단계 구성

- INIT의 상태는 런 레벨을 옮겨 다니며 각 레벨마다의 역할을 수행함

- init 명령어 다음에 런 레벨을 쓰면 해당 런 레벨로 이동 가능

- UNIX 시스템의 부팅 과정

- ok boot: PROM 환경에 설정된 값으로 부팅

- ok boot-s: single user mode로 부팅


시스템 시작

1. UNIX 시스템의 부팅 과정

1) 바이오스(Bios) 과정

- 시스템에 전원이 들어오면 바이오스는 시스템의 기본적인 하드웨어 이상 유무를 점검

- 시스템의 하드웨어 정보를 수집

2) 부트(Boot) 프로그램 과정

- 하드 디스크에서 커널을 읽어 들여 메모리 상에 적재, 시스템 제어권을 커널에 넘김

3) 커널(Kernel) 과정

- 커널이 메모리상에 적재되면 운영체제 구동 시작

- 하드웨어 점검을 완료

- 내부 자료구조를 초기화

- 시스템을 운영하기 위한 부가적인 커널 모듈을 하드디스크에서 메모리 상으로 적재

4) init 프로세스 과정

- init 프로세스: 커널에 의해 생성되는 첫 번째 프로세스

- 커널의 실행으로 운영체제가 하드웨어의 모든 기능을 제어하게 되었을 때 PID가 1인 init 프로세스가 실행

- init 프로세스 정보 확인


- init 프로세스는 모든 프로세스의 부모 프로세스

- 부팅 과정에서 사용자가 시스템을 사용 할 수 있게 초기화 작업을 담당

- BSD 계열: 싱글 유저 모드와 멀티 유저 모드 두가지를 지원

- System V계열: 더 많은 단계로 시스템 운영 상태를 분류(런레벨, /etc/inittab 파일에 정의)


시스템 종료

- 시스템 종료: 운영 중인 UNIX 시스템의 정기 점검, H/W 및 S/W의 추가, 변경, 기타 관리 작업 등을 위해 필요

- shutdow, halt, poweroff 명령을 통해 종료 가능

- Ctrl + Alt + Delete를 입력하여 시스템 종료 후 재시작 가능


1. UNIX 시스템 종료시 주의 사항

- 접속 중인 사용자에게 시스템의 종료를 공지하여 작업을 마무리 하도록 해야 함

- 운영중인 서비스(프로세스)를 안전하게 종료해야 함

- 하드 디스크를 갱신하여 파일 시스템의 무결성을 유지


2. shutdown 명령

shutdown 명령: 시스템을 안전하게 종료할 때 사용, 시스템의 런레벨을 변경 할 때도 사용

1) shutdown 명령어 도움말 (리눅스 계열)


- 주요 옵션

 옵 션

 설 명 

 -h

 Halt, 부트 PROM상태로 전환(디폴트 값)

 -r

 Reboot, 시스템 재부팅

 -k

 경고, 사용자에게 메시지만 전달, 시스템을 가짜로 종료

 -f

 Fast Reboot, 빠른 재시작(fsck skip)

- 예문

 명 령

 설 명

 shutdown +10 "server reboot"

 10분후 접속중인 사용자에게 "server reboot" 메시지를 보여준 후 시스템 종료

 shutdown now

 즉시 시스템을 종료

 shutdown -r 20:00

 20:00시에 시스템을 종료후 재시작 

 shutdown -r

 시스템을 종료 후 재시작

 halt

 "The system is halted." 메시지가 나온 후에 시스템 전원을 종료


하드 디스크 동기화(Sync)

- UNIX 시스템은 하드 디스크의 입,출력에 대한 효율성을 높이기 위하여 버퍼를 운영함

- 시스템이 비정상적으로 종료: 버퍼에 있는 데이터가 하드디스크에 반영되지 않아 파일 시스템에서 무결성 문제 발생

- 하드 디스크 동기화는 시스템을 종료하는 중에 해야할 가장 중요한 작업

- 유닉스나 리눅스 종료시 sync 명령을 내리는 이유: 버퍼의 내용을 하드 디스크로 옮김