티스토리 뷰

운영체제의 부팅

1. ROM으로부터 BIOS 펌웨어 실행

2. 하드웨어 검사 후, 부트 로더를 메모리에 적재

3. MBR에 있는 부트로더 실행

4. 부팅가능한 파티션 찾음

5. 리눅스 부트로더인 GRUB를 찾아 메모리에적재함

6. GRUB는 그래픽 인터페이스와 멀티부팅을 지원

7. 커널 이미지 로드 (/boot/vmlinuz-<kernel-version>)

8. initramfs 로드(부팅 과정에 필요한 임시 파일 시스템)

9. 커널 실행

10. 하드웨어 점검하고 초기화

11. 루트(/) 파일 시스템을 마운트하고 검사

12. /sbin/init 프로그램을 실행시키고 제어를 넘김

초기화 데몬

전통적 init 데몬

runlevel에 기초하여 순차적으로 서비스를 실행하는 방식

시간이 오래걸리며, 복잡한 초기화 스크립트로 인해 새로운 하드웨어나 서비스 등장에 효율적 대처가 어렵다.

업스타트 init 데몬과 systemd 데몬

이벤트 기반으로 서비스를 실행

간단한 설정파일들로 구성

init 프로세스

  • 모든 사용자 프로세스의 최상위 조상 프로세스(PID 1)
  • ps ax 명령으로 확인 가능
  • 시스템 초기화 작업을 실행한다.
  • 시스템 운영을 관리하고 셧다운을 처리함.
  • /etc/init/ 디렉터리에 있는 job 설정 파일을 읽음
  • initctl 명령 : job의 상태를 확인하거나 수동으로 시작/중지시키는 명령

환경 설정 파일과 스크립트

  • /etc/init/rcS.conf : 부팅시 한번 실행. 초기 런레벨을 읽고 /etc/rc.d/rc.sysinit 스크립트 실행
  • /etc/init/rc.conf : 부팅되거나 런레벨이 바뀔 때 필요한 서비스를 관리하기 위한 /etc/rc.d/rc.runlevel 스크립트를 실행
  • /etc/inittab : 부팅 시 정해지는 초기 런레벨이 정의된 파일
  • /etc/rc.d/rc.local : 런레벨 2, 3, 5에서 가장 마지막에 실행되는 스크립트.

런레벨

/etc/inittab 파일에 id:5:initdefalut: 와 같이 설정되어 있다.

런레벨이 5라면 /etc/rc.d/rc5.d/ 디렉터리에 존재하는 스크립트가 실행된다.

런레벨 2, 3, 5에서 가장 마지막에 실행되는 스크립트는 /etc/rc.d/rc.local이다.

런레벨 설명
0 시스템이 종료될 때 사용되는 레벨로 기본값으로 설정해서는 안 됨
1 단일 사용자 모드로, 로그인 과정없이 root 사용자로 로그인되며 콘솔에서 시스템 점검이나 복구를 위한 관리자모드
2 기본적으로 네트워크 서비스를 제공하지 않는 다중 사용자 모드
3 모든 네트워킹을 지원하는 다중 사용자 모드.
4 사용되지 않음
5 그래픽 사용자 환경을 제공하는 다중 사용자 모드
6 시스템을 재부팅할 때 사용되는 레벨로 기본값으로 설정해서는 안 됨.

telinit 명령

런레벨을 변경하는 관리자 명령

runlevel 명령

이전 런레벨과 현재 런레벨을 확인하는 명령

chkconfig 명령

부팅 시 런레벨에 따른 시스템 서비스의 활성화 여부를 확인하거나 변경하는 명령

service 명령

시스템 운영 중에 /etc/rc.d/init.d/ 디렉터리에 존재하는 초기화 스크립트를 수동으로 실행 또는 중지시키는 명령

시스템 종료

shutdown 명령

시간을 정해 시스템을 안전하게 종료하는 명령

shutdown [options] time [message]

 

옵션

-r : 재부팅

-c : 셧다운 취소

 

종료 절차

  1. init 프로세스를 통해 런레벨 변경(0 또는 6)
  2. 모든 프로세스에게 종료를 알림
  3. 각 프로세스가 스스로 종료하도록 TERM 시그널을 보냄
  4. 종료하지 않은 프로세스에게 강제 종료를 위한 KILL 시그널을 보냄
  5. 시스템 파일을 잠그고 파일 시스템을 언마운트함
  6. 버퍼에 있는 데이터 파일 시스템에 기록함
  7. 시스템 호출을 통해 커널에 재부팅 또는 종료를 요청

 

'방송대 > UNIX시스템' 카테고리의 다른 글

텍스트 편집  (0) 2022.09.25
사용자 관리  (0) 2022.09.24
파일과 디렉터  (0) 2022.08.30
shell 사용하기  (0) 2022.08.29
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함