linux kernel

linux kernel 부팅 과정을 살펴볼까?

olive's 2019. 4. 8. 15:44

커널 부팅 과정을 살펴본다는 것은.. 

 

음 이미 BIOS가 기본적인 하드웨어 특성들을 다 맞추고 나서 리눅스 커널을 불렀다는 얘기다.. 

 

(BIOS랑 BootLoader는 나중에 다시 보는 걸로 하고^^)

 

우리가 쓰는 노트북들은, PC는 대부분 intel/AMD x86_64 cpu를 사용하는 관계로 이쪽 커널을 살펴볼려고 한다.. 

 

흠.. arm쪽을 보고 싶었는데 왜 x86_64냐고? 그런데 큰 줄기는 비슷하다.. 

 

(ARM 쪽은 나중에 보는 걸로^^ 급한 사람은 그쪽 먼저 보고 오시면 되어요^^) 

 

linux kernel은 한번에 짜잔 하고 첨부터 실행이 되지 않는다 

 

BIOS가 부트로더를 부르고 부트로더가 메모리의 특정영역에 커널 관련 데이터를 복사한 다음에 커널관련데이터의 시작부분값을 IP에 던져주면 이제 시작되는 거다. IP가 뭐냐고? instruction Pointer다 컴퓨터가 일하고 있는 곳을 말한다. 

 

자 그럼 뭐하는 거냐고? 바쁘다. 압축되어 있는 부분 압축 푼다음 압축풀린 위치에 IP를 던져준다. 그리고 나면 기본적으로 메모리를 사용하기 위해서 페이지 테이블 구성하고, 함수를 실행시킬수 있게 스택이랑 힙 영역 구성해주고(이거는 처음에 잠깐 쓸려고 하는 거라 대강 설정한다.)  그리고 start_kernel을 호출한다. 

 

여기까지 자세한거 좀있다