티스토리 뷰

공부/Linux

25. 부팅 과정

김대욱대욱 2018. 3. 23. 09:13

목표

1.  리눅스 부팅 과정


 ▷ 리눅스 부팅 과정

  - 0단계 : 전원 스위치 ON 단계

시스템 전원공급

메인보드의 ROM-BIOS에 있는 BIOS프로그램 자동실행 한다.

BIOS 프로그램은 전원공급과 함께 메모리의 특정번지에 자동 로드 된다.

CPU는 전원공급과 함께 특정번지의 BIOS프로그램을 자동실행 한다.

  ※ BIOS란?

기본 입출력 프로그램, BIOS는 컴퓨터를 처음 켤 때 부터 끌 때까지 시스템에 설치된 주변기기들에 대한 제어와 오류 검색 기능을 수행하며 프린터 등 시스템 외부에 설치된 주변 장치들을 운영체제가 직접 통제 할 수 있게 해준다.


  - 1단계 : BIOS(Basic Input/Output System) 단계 (Firmware 단계)  

자체진단기능 (POST(Power On Self Test))

CMOS검사, CPU, MEMORY, 그래픽카드, 키보드, 마우스등 각종 장치들의 유무를 검사하고 이들 장치를 초기화

부팅매체검색과 부트로더 실행

검색된 부팅매체에서 부트로더를 불러들인다.

 

  - 2단계 : 부트 로더(Boot Loader) 단계

부트로더는 GRUB와 LILO(Linux Loader)가 있다.

GRUB는 실행과 함께 /boot/grub/grub.conf 파일을 읽어서 어떤 부팅메뉴로 부팅 할 것인가를 결정

GRUB는 커널이비지를 불러들이고 시스템 제어권을 커널에게 넘겨준다.


  - 3단계 : 커널(Kernel) 단계

/etc/grub/grub.conf 파일에 의해서 커널이 메모리상에서 실행되면, 하드웨어를 점검하고 /var/log/dmesg 파일에 기록한다.

루트 파일시스템을 읽기 전용으로 마운트 한다. 실패시 "커널 패닉" 메세지를 출력한다.

커널은 swapper프로세스(PID 0번)를 호출한다.

 /sbin/init 프로세스가 실행되면서 /etc/inittab 파일을 읽어들여서 그 내용들을 차례대로 실행한다.

  ※ dmesg 명령어

시스템이 부팅될 때 화면에 출력되는 내용을 다시 보여주는 명령어이다. 시스템은 지속적으로 서비스가 이뤄져야 하므로 부팅 시에 출력된 메세지를 보기 위해서 시스템을 재부팅하게 되면 서비스가 중단되게 된다. 서비스가 계속되면서 부팅 시 출력된 메세지로 시스템에 에러가 없었는지 확인하기 위해  dmesg 명령어를 사용하는 것이다. 이 명령은 로그 기록이 저장되는 /var 디렉토리에 파일로 저장되어 /var/log/dmesh 파일에 저장된 내용을 확인 하면 시스템 부팅시 출력 되었던 내용을 확인할 수 잇다.

 

  - 4단계 : Init 단계


/sbin/init 프로세스가 실행이 되면 /etc/inittab 파일에 정의된 순서에 따라서 시스템을 초기화하기 시작한다. 즉, 로그인 프롬프트가 나오기 까지, 부팅완료화면까지 init프로세스에 의해서 실행되는 내용들인 것이다.


 ▷ /sbin/init 데몬

  - 프로세스란 실행 중인 프로그램을 말하는 것이다. 프로세스가 어떤 다른 프로세스를 새로 생성할 경우, 실행시킨 프로세스를 부모 프로세스 라고 하고, 새로 실행된 프로세스를 자식 프로세스라고 한다. 프로세스는 자기 고유의 번호를 가지고 있다. 이걸 PID라고 한다. 그리고 프로세스는 자기를 실행시켜준 부모 프로세스의 번호도 알고 있으며, PPID라고 한다.

init은 무조건 PID 1번이다. 커널이 제일먼저 실행시키는 프로세스이기 때문이다. 이후로 생성되는 프로세스는 모두 init으로부터 나온 프로세스 이거나 init에서 나온 프로세스에서 나온 프로세스 이다. 그러므로 init은 모든 프로세스의 부모프로세스다.

 

  -/sbin/init 데몬확인

# pstree | more

# ps -ef | head -20


 ▷ /etc/inittab 파일

  - /etc/inittab 파일은 /sbin/init 데몬이 읽어 들이는 설정 파일이다.

  - 이 파일안에는 부팅시에 시스템을 초기화 하는 과정에 대한 전반적인 정보를 담는다.

# cat /etc/inittab

  - 시스템이 가동 될때 일반적인 운영 방법의 처리에 대한 것을 설명하고 있는 파일이다.

  - /etc/inittab 파일의 형식

ID : 식별자

Runlevel : 런레벨, 진행할 런레벨을 지정한다.

Action : 동작방식지정

initdefault : 시스템 부팅 뒤에 실행될 런레벨을 지정한다.

sysinit : 시스템 부팅을 할 때에 그 프로세스가 실행된다.

ctrlaltdel : init가 SIGINT 시그널을 받았을 때 그 프로세스가 실행된다.

powerfail : powerwait과 같지만, init는 프로세스 작업이 끝나기를 기다리지 않는다.

powerolwait : init가 SIGPWR 시그널을 받았을 때 그 프로세스가 실행된다.

respawn : 그 프로세스가 종료되면 항상 다시 시작하게 한다.

Process : 실행프로그램


 ▷ 현재 실행되는 스크립트와 부팅시 실행되는 스크립트

  - 부팅시 실행할 스크립트 : /etc/rc#.d/[S##|K##]script

  - 현재 실행할 스크립트 : /etc/init.d/script or /etc/rc.d/init.d/script


  - 부팅시에 특정한 서비스를 설정하기 위해서는 다음과 같은 툴을 사용할 수 있다.

(TUI) /usr/sbin/ntsysv (/usr/sbin/setup)

(TUI) /sbin/chkconfig

(GUI) /usr/sbin/system-config-services (/usr/sbin/serviceconf)



'공부 > Linux' 카테고리의 다른 글

27. 스케줄링 관리  (0) 2018.03.23
26. 사용자 그룹관리  (0) 2018.03.23
24. Software 관리  (0) 2018.03.19
23. swap 관리  (0) 2018.03.19
22. RAID관리  (0) 2018.03.19
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/04   »
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