본문 바로가기

학부_대학원/대학원_학과공부정리

리눅스 커널 부팅 과정[0]

SMALL
리눅스 커널 소스의 부팅 과정


하나 하나 깊게 짚고 들어가기 전에 넓게 그림을 그리고 간다.


        (0) start.S 부분이 리눅스 커널의 가장 먼저 시작 부분. (/linux-3.16.3-elv210-v01/arch/arm/boot/compressed)
    
        

        
        misc.c 부분 (/linux-3.16.3-elv210-v01/arch/arm/boot/compressed)

        (1) 리눅스 커널의 압축이 해체가 됨

        
    

        (2) 압축된 코드를 재배치 함 (compressed/head.S)

            
        

        (3) head.S (arch/arm/kernel/) —> 위의 head.S 와는 다름

            시스템을 초기화 한 후, start_kernel을 호출한다.

            이러한 부분에서 스택과 같은 것을 설정한다. 그 후 이제 .c 파일이 실행 할수 있게 된다.


            3-1     커널 동작 모드 설정

                        프로세서의 동작 모드를 SVC로 변경하고, 인터럽트 Disable 함

                
            3-2       프로세서 정보 검색

                        arch/arm/mm/proc-v7.S에 명시 되어 있음      

                        커널이 동작하기 위해서 어떤 프로세서를 사용하는지 검색

            3-3     머신 아키텍처 정보 검색(커널 2.6 버전 까지만 존재)
    
                        arch/cpu/machine 위치에 존재 함      
                        
                        머신에 맞는 아키텍처 정보를 검색하고 설정하는 루틴

            3-4       페이지 테이블 설정과 MMU, 캐시 설정

                        커널의 초기 동작에 필요한 페이지 테이블 설정

                        MMU(CPU의 메모리 관리)와 캐시를 활성화 시킴

                
            3-5        커널 정보 설정, 스택 설정, BSS 영역 클리어

                        arch/cpu/kernel/head-common.S 에 정의되어 있음

                         커널 정보와 스택 정보, BSS 영역 정보를 설정


        (4) main.c(./init/) : start_kernel 함수에 의해서 실행된다.
        
            계속해서 커널의 초기화가 진행된다.

            to be continue… 아마 


LIST