실제 리눅스 박스에 파워 버튼을 누르고 사용자의 로그인 화면이 나오기까지 어떠한 단계를 거쳐 이루어지는지에 대한 설명이다.
실제 하나하나 더 파보고 까볼라면 더 복잡하고 범접하기 힘들겠지만, 리눅스 유저로서 개략적인 단계를 알고 이해할만한 수준의 부팅 절차를 아는 것은 필요한 사항같다.
1. BIOS (Basic Input/Output System)
- mainboard의 bios를 통해 cpu와 memory등 하드웨어의 상태를 체크하고 초기화한다.
- boot loader를 찾는다. 여기엔 cd-rom이나 harddisk, flopy disk 등이 있겠고..그 순서는 유저가 바꿀 수 있다
- boot loader를 찾았다면 메모리에 해당 프로그램을 올리고 컨트롤을 넘긴다
2. MBR (Master Boot Record)
- MBR은 실제 부팅 가능한 디스크의 첫번째 섹터를 가르킨다. 크기는 512바이트.
- primary boot loader (446byte) / partition table (64byte) / MBR validation check (2byte)
- MBR의 정보를 따라 GRUB 내지는 LILO를 실행시킨다.
3. GRUB (Ground Unified Bootloader)
- kernel 이미지들의 선택 및 실행을 담당한다.
- 복수개의 kernel 이미지를 가지고 있다면 선택을 하여 부팅할 수 있다.
- 해당 정보는 실제로 /boot/grub/grub.conf 에서 확인 가능하다.
- 선택된 kernel과 initrd를 메모리에 올리고 실행시킨다.
4. Kernel & initrd
- grub.conf의 명시된대로 kernel을 마운트 시킨다.
- initrd는 실제 root file system이 마운트 되기 전까지 kernel에 의해 사용되는 임시 root file system 이다.(init ram disk)
- kernel은 init 프로그램을 실행시킨다.
5. init
- 최초 sysinit을 통하여 초기화를 시킨다.
- /etc/inittab의 default initlevel을 체크하여 알맞는 프로그램을 실행시킨다. (보통 3이나 5를 가진다)
6. runlevel execute