부트로더에 대한 개념정리

– 구글 위키에서 부트로더의 정의

부트로더(boot loader, 문화어: 초기적재프로그램)란 운영 체제가 시동되기 이전에 미리 실행되면서 커널이 올바르게 시동되기 위해 필요한 모든 관련 작업을 마무리하고 최종적으로 운영 체제를 시동시키기 위한 목적을 가진 프로그램을 말한다.

 

‘부트로더’ 라는 단어의 사전적 정의입니다. 위 정의만 가지고는 잘 이해가 되지 않으시는 분들도 계실 텐데, 간단하게 설명하면 이렇습니다.

가장 먼저 컴퓨터가 켜지면 롬에 들어있는 BIOS가 로드됩니다. BIOS는 컴퓨터에 연결된 저장 매체에서 설정된 부팅 순서대로 부트로더들을 불러오게 됩니다. 이 때, 하드 디스크가 첫 번째 부팅 장치로 설정되어 있으면, BIOS는 하드 디스크의 부트로더를 로드하게 됩니다.

운영체제는 크게 세 부분으로 나뉩니다. 실제 명령어들이 구동되는 커널, 프로그램에 포함된 명령어들을 커널에 전해주는 프레임워크, 그리고 커널과 프레임워크 위에서 구동되는 UI가 있습니다.

일반적으로 ‘부팅’이라하면 커널을 로드하고, 프레임워크를 실행시킨뒤, UI를 실행하는, 운영체제를 시동하는 행위를 일컫는데요, 위의 정의에서 나타나는 것 같이 부트로더는 커널을 시동시키기 전 하드웨어들을 준비하는 역할을 합니다.

그렇다면 부트로더는 어디에 있을까요?

하드디스크의 파티션 정보는 MBR이라는 하드 디스크의 첫 섹터 속에 존재합니다. 여기서 BIOS는 파티션 테이블을 읽은 후 활성화 되어있는 파티션의 PBR을 읽어 그 데이터로 부팅하게 됩니다. 여기서 이 MBR과 PBR이 바로 1차 부트로더입니다.

여기서 잠깐, 제가 왜 ‘1차’ 부트로더라는 말을 썼을까요? 그렇다면 ‘2차’ 부트로더도 있다는 말인가요?

네, 있습니다. 바로 이렁게 생겼는데요, 여기서 GRLDR은 GRUB4DOS의 2차 부트로더입니다. 윈도우 비스타/7/8의 2차 부트로더는 BOOTMGR이고요, XP는 NTLDR입니다. 2차 부트로더는 파일의 형식으로 부팅 파티션의 루트경로에 존재합니다.

왜 2차 부트로더라는 것이 존재할까요? MBR/PBR의 최대 용량은 512바이트밖에 되지 않기 때문에 도스 같은 운영체제 정도에는 적합했지만 윈도우 같은 복잡한 운영체제의 커널을 로드할 준비를 하기에는 턱없이 모자랐습니다. 그래서 2차 부트로더를 1차 부트로더를 통해 커널을 로드하듯이 로드한뒤, 2차 부트로더를 통해 커널을 로드하는 방식을 택하게 된 것입니다.

따라서 현재 일반적으로 운영체제를 부팅시키는 대략적인 과정은 다음과 그림과 같습니다. 그렇다면 멀티부팅을 하게 되면 어떻게 될까요?

어떤 부트로더인지에 따라 조금씩 달라질 수도 있지만 우리가 사용하게될 GRUB4DOS의 멀티부팅 과정은 이렇습니다. 2차 부트로더가 로드된 후 어떤 운영체제를 부팅할 지 선택하는 화면을 띄워준 뒤, 해당 운영체제의 2차 부트로더를 로드하게 됩니다. 이러한 과정을 체인 로딩 (Chainloading) 이라고 합니다.

 

즉, 부트로더의 역할은 !

– 임베디드 보드의 전원을 켰을 때, 플래시 메모리(ROM)에서 시작되는 시스템 소프트웨어로서 하드웨어를 초기화 시켜 주고, 커널을 메모리(RAM)에 적재(복사)시켜서 사용자 명령 처리를 준비하는 역할을 한다.

즉, 부트로더에 의해서 임베디드 보드가 기동(부팅)된다.  부트로더는 직렬통신, 인터럽트, 타이머, 콘솔, 메모리, 각종 입출력장치 등을 점검하여 실행 가능 상태로 만들어 준다. 임베디드 보드의 하드웨어 구성과 부트로더는 서로 밀접한 관계이며, 임베디드 보드 제작사에 의해서 부트로더가 보통 제공이 된다.
일반적으로 임베디드 보드 제작사에서 제공하는 부트로더를 플래시 메모리에 그대로 적재시켜 사용해도 되지만, 임베디드 보드의 하드웨어 구성과 내부 동작방식을 이해하고 응용하고자 할 때는 부트로더 소스코드를 분석해야 한다. 특히, 새롭게 임베디드 보드를 제작하고자 한다면 부트로더 이해와 코딩은 필수적이다.

 

출처 – http://diginuri.tistory.com/7

http://www.embeddedworld.co.kr/atl/view.asp?a_id=4912

Advertisements

부트로더에 대한 개념정리”에 대한 1개의 생각

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중