티스토리 뷰

반응형

컴퓨터 전원의 파워버튼을 누른후에 리눅스가 부팅되기까지 그 중간 중간에 어떤 과정들이 있는지 알아보자.


1. 시스템의 전원이 들어옵니다.

컴퓨터의 파워 서플라이에서 메인보드, 각종하드웨어에 전원을 공급합니다.  그 전기의 흐름이 CPU에 전달되어 CPU에 있는 이전 레이스터들의 값들을 초기화 시킵니다. 그리고선 CPU의 PC는 대게 0xF000으로 초기화되게 됩니다.
0xF000은 롬 바이오스의 부트 프로그램 주소값 입니다.

2. BIOS의 실행.

이제 부팅이 되기 시작하면 바이오스가 실행되어 CPU의 이상유무와 기본테스트가 수행됩니다. 이 기본테스트에서의 테스트값이 ROM에 미리 저장되어있는 정상값과 일치하게되면 자가진단이 실행됩니다. 이것을 POST라고 합니다.

여기서 POST과정이 무엇인지 알아봅시다.
POST과정의 8단계

1. 시스템 버스 테스트.
시스템 버스란 메인보드에 연결된 각종 하드웨어간의 데이터통신을 할 수 있는 통로를 말합니다.

2. RTC(Real Time Clock) 테스트
RTC란 컴퓨터의 전원이 끊켜도 현재의 시간을 유지시켜주는 컴퓨터시계입니다.

3. 시스템 비디오 구성 요소 테스트
각종 그래픽카드들이죠. 여기 3번까지 테스트중에 오류가 하나라도 발생하면 화면자체가 안뜨겟죠?

4. 램테스트
보통 컴퓨터킬때 숫자가 좌르륵 올라가는걸 보실텐데요. 그게 램테스트 과정입니다.
(바이오스 설정으로 생략할 수 있습니다)

5. 키보드테스트
키보드가 연결되잇나 테스트를 하는겁니다. 보통 컴퓨터는 키보드가 연결안되잇으면 부팅이 안됩니다.
(바이오스 설정으로 부팅가능하게 할 수 있습니다.)

6. 각종 ODD테스트
하드연결댓나, CD롬붙어잇나~

7. POST결과 검사
검사~

8. 추가적 BIOS 로드
SCSI 하드나 몇몇의 그래픽카드들은 저마다의 BIOS를 가지고 있습니다.
메인보드에 달려있는 BIOS만으로는 그 하드웨어들을 전부다 컨트롤 할 수가 없습니다.
따라서 그런 하드웨어로들로부터 BIOS를 로드해서 메모리에 올립니다.

3. 부팅 매체를 검색합니다.
BIOS로 부팅순서를 설정하잖아요? 거기에 설정되어있는 순서대로 부팅합니다.
CD롬에 들어있는 CD가 부팅가능한 CD라면 CD로 부팅이 되겟죠.
-하드디스크는 MBR을 로드합니다. (하드디스크에 맨첫번째 부분이죠)
-MBR의 부트로더 수행
리눅스는 전통적인 로더가 LILO라는 부트로더인데, 요즘 배포판에서는 대부분 GNU에서 채택한
GRUB부트로더를 많이 사용하죠.

4. 부트로더를 실행합니다.
부트로더의 역할은 OS를 로딩하는것 입니다.
기본적으로 커널을 메모리에 로드하고 GRUB설정파일을 읽어와서 부팅할 커널을 선택하게 합니다.
커널이미지를 로드한후에 제어권을 시스템에게 넘겨줍니다.

5. 커널 부트 이미지 로드
GRUB부트로더 매뉴에서 커널을 선택하면은 커널 이미지가 동작합니다.
이때 커널이미지 (vmlinuz-2.6.xx.xx)는 압축이 되어 있는 상태입니다.
따라서 PID0번인 swapper 프로세스를 호출하게 됩니다.
이 swapper 프로세스는 커널이미지를 압축해제하고, 커널이 사용할 장치 드라이브를 초기화 합니다.

6. 루트 파일시스템 마운트
하드웨어들을 검색한후에 루트 파일시스템을 마운트 합니다.
처음 마운트는 시스템의 점검을 위한 목적으로 읽기전용으로 마운트하고, 그후에 다시 읽기/쓰기 로 재마운트를 합니다.

7. init 프로세스를 실행
init프로세스는 PID넘버가 1번으로서 모든 프로세스의 부모역할을 하게 됩니다.
이 init프로세스는 기본 시스템 초기화 스크립트인 sysinit스크립트를 실행하게 됩니다.

이런식으로 우리가 매일매일 부팅하던 컴퓨터의 부팅과정을 직접 써보니 정말 복잡하다는걸 알 수 있었습니다..

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함