먼저 부팅(Booting)이 뭔지.. 그냥 컴퓨터 켜는게 부팅이라고 생각할 수 있는데, 정확하게 알고 넘어가자.
부팅(Booting)이란,
PC 전원이 들어온 후 운영체제가 실행되기 전의 과정을 얘기한다.
윈도우로 치면 그 윈도우 로고가 팔랑팔랑거리기 전까지를 부팅 과정이라고 하는 것이다.
이 과정에서는 프로세서 초기화, 메모리와 외부 디바이스 검사 및 초기화, 부트 로더 호출하고 OS 시작 등의 작업을 한다.
그냥 쉽게 모든 것을 초기화하고 OS를 로딩하는 과정이다.
부팅 과정에서 H/W 관련된 작업들을 BIOS (Basic Input/Output System)이 수행하고,
이놈이 하는 각종 작업들을 POST (Power on Self Test) 라고 한다. 뭐 그냥 이렇게 부른다.
BIOS는 펌웨어다. 메인보드에 포함되어 있다. 메인보드 종류에 따라 다른 BIOS가 탑재되어 있겠지?
보통 메인보드에 ROM, 플래시 메모리 형태로 존재하고, 전원을 넣었을 때 가장 먼저 실행되는 코드가 BIOS이다.
시스템 전반적인 설정 값 관리, 부팅 옵션 설정, 설정한 값으로 초기화 등의 작업을 한다.
옛날에 MS-DOS 시절에는 BIOS에 많이 의존했었는데, 요즘은 그렇게 까지는..
우리가 만들 OS인 MINT64도 메모리에 이미지를 복사하고 GUI 환경으로 변환할 때는 BIOS의 기능을 사용한다.
우리가 만드려는 OS의 부팅과정을 한번 볼까?
위 과정에서 가장 중요한 부분은?? 다 중요하다. OS를 부팅하는 과정인데,
일단 BIOS 영역을 보면, 부트로더 이미지를 메모리로 복사하는 부분이 있다.
굳이 BIOS에서 중요한 부분을 꼽으라면 저 부분이다.
부트 로더는 부트스트랩(Bootstrap) 코드 라고도 불리며, 우리가 BIOS로 부터 제어권을 넘겨받는 가장 처음부분이다.
부트 로더는 저장 매체의 가장 첫부분에 존재한다. 즉, OS가 설치되어 있는 저장 매체의 가장 첫부분에 존재한다는 말.
우리는 CD로도 부팅을 시킬 수 있고, USB 메모리로도 부팅을 시킬 수 있다.
BIOS 녀석이 POST 과정을 거치고 나서 저장 매체에 부트로더가 존재하는지 검사한다.
저기 0x7C00 이라는걸 괄호 쳐두었는데, 만약 저장 매체에 부트로더가 존재한다면
0x7C00 어드레스에 코드를 복사한 후, 프로세서가 0X7C00 부터 코드를 실행하도록 만든다.
부트로더가 만약 없다면, BIOS 'Operation System Not Found' 라는 메세지를 내뱉는다.
부트로더가 디스크->메모리 로 복사가 되었다면, OS를 메모리에 올려 실행할 준비가 끝났다는 것을 의미한다.
'IT 그리고 정보보안 > Knowledge base' 카테고리의 다른 글
MintOS 32-bit 보호모드 전환 (0) | 2021.04.12 |
---|---|
MintOS 부트 로더 제작 (0) | 2021.04.12 |
OS 메모리 관리 기법 (0) | 2021.04.12 |
레지스터 (Register) (0) | 2021.04.12 |
MintOS 운영 모드 (0) | 2021.04.12 |