리눅스의 부팅과정

* 작성자
조재혁(Mminzkn@minzkn.com)

  • 고친과정
    2009년 7월 25일 : 처음씀

간단요약

  1. POWER ON
  2. BIOS가 눈을 뜸 (POST과정을 거침)
  3. BIOS는 Booting 가능한 매체의 MBR(Master Boot Record)를 읽어서 메모리 7c00H로 탑재후 분기함.
  4. MBR(7c00H에 탑재된 코드)에서는 부트로더(LILO 또는 GRUB)를 로딩하여 실행
  5. 부트로더는 설정된 커널을 로딩하고 이에 대한 필요한 인자를 넘겨줌
  6. 커널은 기본 장치를 초기화하고 root= 옵션에 정의된 root fs를 마운트하고 init 프로세스를 실행함. 또는 init= 으로 지정된 실행가능한 파일을 실행함.
  7. init 프로세스는 보통 "/sbin/init"에 위치하며 통상적으로 "/etc/inittab"에서 명시하는 sysinit 항목을 실행
    예) si::sysinit:/sbin/rc sysinit <= 이 경우 "/sbin/rc sysinit"이 실행된다고 보면 됩니다.
    보통 Boot splash 는 여기서 지정한 실행파일에서 처리하게 됩니다.
  8. sysinit에서 지정한 실행파일(보통은 스크립트)에서 "/etc/init.d/S??*" (여기부터는 반드시 이런 과정이 아니고 배포판마다 차이가 있는 부분입니다.) 을 차례대로 실행합니다.
  9. sysinit 에서 지정한 실행이 끝나면 respawn 항목으로 지정한 터미날을 생성하게 되며 보통은 getty 같은 명령을 실행하게 합니다. 이렇게 되면 터미날(콘솔을 이어받은 터미날)이 만들어집니다.
  10. getty 는 login명령을 실행하여 사용자로 하여금 login을 요구받게 됩니다.
    응용) getty 대신에 "/bin/sh" 로 바꾸면 로그인과정이 생략되고 바로 쉘로 진입할수 있겠죠?
  11. login에 필요한 정보가 합당하면 로그인이 성공하고 /sbin/sh 가 실행됩니다. 이로서 사용자가 사용하게 됩니다.



/*
[ FrontPage | PrintView | RawView | RSS ]

Copyright ⓒ MINZKN.COM
All Rights Reserved.

MINZKN
*/