시스템 프로그래밍(5)-리눅스 시작과 종료

taehee kim·2021년 11월 2일
0
post-custom-banner

1. 컴퓨터 부팅과정

  • ROM BIOS 펌웨어 실행
    POST(하드웨어 문제없는지 검사)->부트 로더 적재
  • 부트로더 실행
  • 커널이미지(/boot/vmlinus-\<kernel-version>)와 initramfs(부팅과정에서 필요한 임시 파일시스템, ram 임시 파일시스템)를 로드
  • 커널 실행됨

2. 커널 실행

  • 하드웨어 점검및 초기화
  • 루트 파일시스템을 마운트하고 검사함
  • /sbin/init 프로그램을 실행시키고 제어를 넘김
  • init프로세스는 시스템 운영을 위한 나머지 초기화 PID = 1


post->bios-> 부트로더->커널->/sbin/init

3.초기화 데몬 (/sbin/init)

  • 전통적 init : 런레벨을 기준으로 필요한 서비스 순차적으로 실행
    시간이 오래걸리고, 초기화 스크립트가 복잡하여 새로운 상황에 대처가 힘듬.

  • upstart init, systemd 데몬 : 이벤트 기반, 스크립트를 설정파일로 대체

  • 초기설정파일(/etc/init/)에 따라 서비스 프로그램 실행

  • 계속 실행되며 시스템 운영, 셧다운 처리

4.init 설정파일 (/etc/init)

  • job 설정 파일 확장자.conf
  • 이벤트에 따라 job(실행파일, 셸 스크립트) 실행.

5.init 런레벨

6.service 명령

  • /etc/rc.d/init.d/디렉토리에 존재하는 초기화 스크립트를수동으로 실행 시키는 관리자 명령

7.컴퓨터 종료

  • init 프로세스 런레벨 바꾸어 셧다운
  • init 프로세스가 TERM 시그널과 KILL시그널을 보냄
  • 시스템 파일을 잠그고 파일 시스템을 언마운트함
profile
Fail Fast
post-custom-banner

0개의 댓글