리눅스 부팅 과정 이해
리눅스 부팅 과정을 통 해 시스템 장애 발생 시 장애의 원인을 분석하여 적절한 조치를 취할수 있다.
1. 시스템 부팅 과정
Power On |
▼ |
ROM-BIOS에서 지정된 부트 드라이브로 부팅 시작 |
▼ |
부트 드라이브의 첫 번째 섹터인 부트 섹터 읽어 들임 |
▼ |
부트 섹터의 부팅 프로그램인 Boot loader 작동 |
▼ |
커널이미지 (/boot/vmlinuz) 적재 |
▼ |
루트 파일 시스템 (root filesystem)마운트 |
▼ |
시스템 초기화 프로그램(init) 작동 |
▼ |
Login : 프롬프트 |
2. 시스템 부팅 단계
1) 부팅 1단계 : ROM-BIOS
- 컴퓨터 하드웨어, 각 장치 사용을 위한 인식및 준비를 위한 기초적인 프로그램
- ROM-BIOS는 컴퓨터 전원이 들어오면 가장먼저 실행되는 CROM에 들어있음.
- ROM-BIOS란 ROM에 들어있는 BIOS(Basic Input Output System)를의미
▶ ROM-BIOS의 역할
▷ POST ( Power On Self Test) (자체 진단기능)
하드웨어 자체가 스스로의 시스템에 문제가 없는지 기본적인 사항을 체크
BIOS(Basic Input / OutputSystem)에 의해 실행
▷ BootLoader
Boot loader 종류에는 LILO와 GRUB가 있음.
POST과정에서 이상이 발생하지 않으면 Boot Loader를 메모리에 로딩하여 리눅스 부팅 시작
Boot Loader는 부팅매체(HDD, CD-ROM, USB)를 하나씩 검사.
부팅매체의 0번섹터 (MBR)에서 Boot Program을 읽어 들여 메모리 로드.
Boot Program(= Boot Loader, BootSector)에 GRUB이 들어있음.
ROM-BIOS에 의해 Boot loader가 메모리에 로딩된 이후부터 ROM-BIOS는 시스템부팅
제어권을 GRUB에게넘겨주고 자신은 종료, GRUB이 시스템의 부팅과정을 주도하게 됨
▷ MBR ( Master Boot Record )
MBR은 저장매체의 첫번째 섹터 (LBA 0)에 위치하는 512바이트 크기의 영역.
OS가 부팅할 때 POST(Power On Self Test)를 하고, Disk의 첫번째섹터 호출을 시도.
2) 부팅 2단계 : Boot Loader 실행과 역할
2-1) 리눅스 커널 적재
- GRUB실행화면에서는 어떤 커널을 로딩할 것인가를 선택 가능.
- 리눅스 커널이 메모리에 적재되는 이 순간부터 부팅이 진행
- GRUB은 /boot/grub/grub.conf 파일에 정의되어 있는 여러 가지 리눅스 커널 중 선택된 리눅스 커널을
메모리에 로딩
2-2) 스와퍼 프로세스 호출
- 리눅스 커널 로딩이 끝난 후 수행되는 작업
3) 부팅 3단계 : 스와퍼 프로세스
- 스와퍼라는 프로세스의 첫번째 역할은 전에 인식했던 각 장치들의 드라이브를
- 초기화하고 PID가 1인 init프로세스를 실행 후 그 외 몇가지 기능을 수행 부팅이 완료되면 사라짐
4) 부팅 4단계 : init 프로세스의 실행
- init프로세스는 /etc/inittab라는 설정 파일을 읽어 들여 부팅 시 화면에 뿌려주고 설정 파일대로 실행 됨.
5) 부팅 5단계 : 부팅 레벨의 결정단계
- /etc/inittab 설정 파일에서 시스템부팅레벨을 확인하여 부팅
실행레벨 (RunLevel) | |
0 | 시스템 중지(halt) |
1 | 단일 사용자 모드, single 모드로 쉘로 바로 부팅 |
2 | NFS 기능을 제외한 다중 사용자 모드 |
3 | 모든 기능을 포함한 다중 사용자 모드 |
4 | 사용하지 않음 |
5 | X-Window로 부팅 |
6 | 시스템 리부팅(reboot) |
6) 부팅 6단계 : 부팅 레벨의 결정단계
- 시스템 초기화 작업을 수행하는 스크립트
7) 부팅 7단계 : /etc/rc.d/rcN.d/ 디렉토리 실행
- 부팅레벨에 따라 'N'의 숫자가 바뀜
- 부팅레벨에 따라 시스템 부팅시에 자동실행될 서비스들에 대한 설정
- /etc/rc.d/init.d/ 디렉토리에 있는 파일이 원본
- 'K'로 시작하는 것은 자동시작되지 않는 서비스
- 'S'로 시작하는 것은 자동시작되는 서비스
- 'K. S' 다음에 오는 숫자는 실행된 순서를 의미
- S99local 은 /etc/rc.d/rc.local 파일을 원본으로 하는 링크파일로 2,3,4.5번 부팅레벨에서만 실행,
- S99local은 부팅레벨에서 가장 마지막 단꼐 실행되는 파일.
- rc.local 파일에는 부팅시 소스로 직업컴파일하여 설치했던 apache, mysql, proftpd등
- 응용프로그램들을 자동실행하기 위한 설정파일
'기술자료 > 기술운영자료' 카테고리의 다른 글
HAProxy 소개와 설정 (1/2) (0) | 2016.03.20 |
---|---|
리눅스 파일과 디렉터리의 소유와 허가권 (0) | 2016.03.20 |
CentOS7 본딩 구성 (0) | 2016.03.20 |
Windows Server 2012 원격 데스크탑 세션 제한 해제 방법 (0) | 2016.03.20 |
[CentOS] sshfs - 리눅스 윈도우간 데이터 전송을 편리하게 (0) | 2016.03.20 |