부트로더가 커널을 메모리에 로드하고 필요한 매개변수를 전달하면, 커널이 시스템 제어권을 넘겨받습니다. 이제 다음에 일어나는 일들을 살펴보겠습니다.
커널 초기화 및 Initramfs
부팅 과정에서 발생하는 고전적인 난제는 커널이 하드웨어 장치에 접근하려면 드라이버가 필요하지만, 해당 드라이버들이 종종 커널이 아직 접근할 수 없는 저장 장치에 위치한다는 점입니다. 이 문제를 해결하기 위해 리눅스는 임시 루트 파일시스템을 사용합니다.
구형 시스템에서는 이것이 initrd(초기 RAM 디스크) 로 처리되었습니다. 커널은 이 디스크 이미지를 로드하여 필요한 드라이버를 찾은 다음 실제 루트 파일시스템으로 전환했습니다. 우분투와 같은 최신 시스템은 initramfs(초기 RAM 파일시스템) 를 사용합니다. initrd와 달리, initramfs는 메모리 내에 임시 파일시스템으로 직접 압축 해제되는 cpio 아카이브입니다. 이 방식은 블록 장치를 생성하고 마운트하는 오버헤드를 피할 수 있어 더 효율적입니다. initramfs에는 커널이 실제 부트 파티션 및 기타 하드웨어에 접근하는 데 필요한 필수 모듈만 포함되어 있습니다.
부트 루트 파일시스템 마운트
initramfs에서 드라이버를 로드한 후, 커널은 이제 주 부트 루트 파일시스템을 찾아 마운트할 수 있습니다. 이 파일시스템의 위치는 일반적으로 부트로더에 의해 매개변수로 전달되며, 이는 /etc/default/grub과 같은 파일에서 구성될 수 있습니다.
먼저, 커널은 부트 루트 파티션을 읽기 전용 모드로 마운트합니다. 이는 fsck(파일 시스템 검사) 유틸리티가 데이터 손상 위험 없이 파일시스템의 무결성을 확인하고 검사할 수 있도록 하는 안전 조치입니다. 검사가 성공적으로 완료되면 커널은 파일시스템을 읽기/쓰기 모드로 다시 마운트합니다.
마지막으로, 루트 파일시스템이 완전히 사용 가능해지면 커널은 첫 번째 사용자 공간 프로그램인 init을 시작합니다. 이 프로그램은 나머지 시스템을 온라인 상태로 만드는 역할을 담당합니다.