본문 바로가기

Linux

리눅스 부팅과정

리눅스의 부팅과정 과정입니다. 반드시 기억하세요.

1. 전원스위치 ON
2. BIOS프로그램 실행
3. ROM-BIOS의 POST(자체진단기능) 수행
4. ROM-BIOS가 부트로더(GRUB)를 불러들임
5. ROM-BIOS의 실행종료와 GRUB의 실행시작
   검색된 부팅매체의 0번 섹터(대부분 MBR 이라고 부름)에서 Boot Program을 읽어들여 메모리로 적재(로드, load)합니다.
6. GRUB의 실행초기 단계
   GRUB의 메뉴, 입력대기상태
7. GRUB에 의한 부팅메뉴 선택
   여기서 선택한 부팅메뉴로 GRUB은 부팅을 계속해 나갑니다.
   GRUB 설정 파일(/boot/grub/grub.conf, /boot/grub/menu.lst)
8. GRUB이 커널이미지를 메모리로 적재와 swapper 호출
   GRUB은 입력된 커널이미지를 메모리로 불러들입니다.(적재, load) 메모리로 load된 커널은 swapper를 호출합니다.
9. swapper의 장치 드라이브 초기화
   GRUB에 의해 swapper라는 pid 0번인 프로세스가 실행이 되며 swapper는 각 장치 드라이브들을 초기화 합니다.
10. swapper의 init프로세스 실행
    swapper라는 프로세스튼 다시 pid 1인 init프로세스(/sbin/init)를 실행하게 됩니다. 즉, swapper가 init프로세스를 실행시키고 본연의 swapper로서의 기능을 수행하기 시작합니다.
11. init프로세스의 /etc/inittab파일 호출
    init프로세스는 /etc/inittab파일을 읽어들입니다. 특, init프로세스는 제일먼저 /etc/inittab 파일을 읽어서 init프로세스가 무엇을 해야할 것이가를 결정하게 됩니다.
    /etc/inittab파일내의 각 행의 포맷
    name: level-number:options:process -options
    세번째 항목인 options 에 올 수 있는 것들
    - respawn  : 프로세스가 종료될때마다 재실행됩니다.
    - wait  : 지정된 프로세스가 실행되면 init은 프로세스가 종료될 때까지 기다린 후에 다음 작업으로 넘가도록 하는 옵션입니다.
    - once  : 해당 프로세스를 한번만 실행되도록 하는 옵션입니다.
    - boot  : 시스템이 부팅되는 동안 해당 프로세스가 실행되며, init은 실행레벨필드를 무시합니다.
    - bootwait  : 시스템이 부팅되는 동안 해당 프로세스가 실행되며, init은 프로세스가 종료될 때까지 기다립니다.
    - off  : 아무런 동작도 발생하지 않도록 하는 옵션입니다.
    - ondemand  : 실행레벨이 1, 2, 3인 경우에만 ㅇ용합니다. init은 이 세개의 실행레벨과 함께 호울될 때만 프로세스가 작동합니다. 잘 사용되지 않는 옵션입니다.
    - initdefault : 시스템이 부팅되면서 어떤 실행레벨로 부팅을 할 것인가를 결정하게 하는 옵션입니다. 즉, 시스템의 실행레벨을 결정하는 옵션입니다.
    - sysinit  : 시스템이 부티오디는 동안 한번만 프로세스가 실행하는 옵션이니다. sysinit은 boot나 bootwait보다 우선권을 가집니다.
    - powerwait  : init은 SIGPWR신호를 받는 경우에만 프로세스가 가동됩니다.
    - powerfail  : powerwait과 같지만, init은 프로세스가 돤력도ㅚㄹ 때까지 기다리지 않습니다.
    - powerokwait : init가 SIGPWR신호를 받고 /etc/powerstatus라는 텍스트 파일에 OK라는 문자열이 있을 때 프로세스가 실행됩니다.
    - ctrlaltdel : 이 옵션은 init프로세스가 SIGINT신호를 받았을 때에 싱행되록 합니다.
    - kbrequest  : 이 옵션은 init프로세스가 키보드관리자로부터 keyboardsignal을 받았을 때에 해당프로세스를 실행되도록 합니다.
12. init에 의해 /etc/rc.d/rc.sysinit 실행
    /etc/rc.d/rc.sysinit 파일은 실행레벨가는 무관하게 부팅과 함께 일회만 실행이 됩니다.
    /etc/rc.d/rc.sysinit 파일의 역할
13. init에 의해 각 부팅 레벨별 스크립트 실행
    앞 단계에서 결정된 실행레벨에 따라서 설정되어 있는 모든 프로세스들을 실행하게 됩니다.
14. init에 의해 /etc/rc.d/rc.local 파일 실행
15. init에 의해 /sbin/update 실행
16. init에 의해 CRTL+ALT+DEL키 작동 설정
17. init에 의해 전원관리 설정
18. init에 의해 6개의 가상콘솔 실행
    콘솔 로그인을 위해 /sbin/mingetty를 실행합니다.
19. init에 의해 콘솔(첫번째 가상콘솔)로그인 프롬프트 실행됨