
컴퓨터의 부팅 과정에 대해 이해해 보자. 부팅은 PC가 켜진 후에 OS가 실행되기 전까지 수행되는 일련의 작업 과정을 의미한다. 부팅 과정에 수행하는 작업에는 프로세서 초기화(멀티코어 관련 처리 포함), 메모리와 외부 디바이스 검사 및 초기화, 부트 로더를 메모리에 복사하고 OS를 시작하는 과정 등이 포함된다. 1. Power 누르기 컴퓨터의 전원을 누르면, 메인보드에 전력이 들어온다. 뒤이어 메인보드에 연결된 장치(CPU, Memory, Disk, etc.)에도 전력이 들어온다. 2. BIOS 동작 CPU가 ROM(Read-Only Memory)에 저장된 BIOS(Basic Input/Output System)을 실행한다. BIOS는 메인보드에 포함된 펌웨어(Firmware)의 일종으로, 이름 그대로 ..

vmlinux와 bzImage에 대해 이해해 보자. 1. vmlinux vmlinux는 압축되지 않은 커널 이미지를 ELF 형식으로 담고 있는 정적 링크된 실행 파일이라서, 사실상 커널 그 자체라고 할 수 있다. 이 파일은 심볼이나 재배치 정보가 살아 있어서, 커널 디버깅 시에 유용하게 사용할 수 있다고 한다. 그러나, 이 파일만으로는 컴퓨터를 부팅(운영체제를 메모리에 로딩)할 수 없다. 심볼을 제거하고, 압축도 해서 크기를 줄인 뒤에, 부팅에 관계된 코드까지 넣어야 부팅 가능한 이미지가 되는 것이다. 이 파일에서 심볼을 뽑아내면, System.map 파일이 되는 것이다. 이 파일은 커널을 컴파일할 때 생성되는 심볼 테이블 파일이고, 비슷한 것으로는 /proc/kallsyms가 있다. 전자는 파일 시스템..