kkamagi's story

IT, 정보보안, 포렌식, 일상 공유

OS

[Linux] 부팅 프로세스 메모 정리

까마기 2021. 1. 18. 17:13
반응형

오늘도 어김없이 2012년 강의 내용에 대한 정리. 우선 에버노트에서 복붙한것이고.. 나중에 차근차근 정리가 필요하다..

 

     Boot PROM

     PROM

     Open Boot PROM (OBP) -> Boot PROM의 표준

     ok mode

     ok prompt

     FORTH

 

     커널 초기화 단계에서 /etc/system 의 제어 가능 범위

     부팅할 때 로드할 기본 커널 모듈의 검색 경로

     루트 파일 시스템 유형과 장치

     부팅할 대 자동으로 로드되지 않는 모듈

     처음 접근할 때가 아니라 부팅 할 때 강제로 로드해야 하는 모듈

     기본 커널 파라미터 값보다 우선 적용되는 새로운 값

 

 

-     커널을 메모리에 적재 시키고 커널을 초기화 함.

     init 단계에서는 run level에 따라서 서비스를 제어함.

     /etc/inittab 파일을 읽는 순서.

     스트림 모듈 초기화

     소켓 전송 서비스 제공자 설정

     SMF 를 위한 svc.startd 데몬을 초기화

     전원공급 실패 시 시스템 종료에 대한 설명

 

 

     서비스 : 프로그램을 동작시키기 위한 서비스.

-     서비스 데몬

-     데몬 프로세스

-     Daemon

-     커널과 중간 사이의 매개체. 어플리케이션과 커널의 중간 사이에서 어플리케이션을 자동으로 관리.

 

     Legacy Boot 프로세스

-     /sbin 디렉토리

 

 

-     /etc/rc#.d 디렉토리

 

 

 

-     시작, 중지 스크립트

     s로 붙어있는 파일은 start 숫자는 서비스번호 문자는 서비스 이름.

     k는 중지를 한다.

 

-     /etc/init.d 디렉토리 : 각 런 컨트롤 스크립의 원본 파일.

 

 

     서비스의 대한 원본 파일.

리눅스는 SMF가 존재하지 않지만, 서비스 스크립터 내의 모든 정보를 다 포함하고 있다.

 

 

 

 

 

<솔라리스 부팅 과정>

 

 

◈ 참고

-  x86 부팅 과정은 init 까지는 리눅스와 동일하며 Windows 부팅과정도 원리는 비슷하다.

BIOS (Basic Input Output System)  -> 모든 하드웨어를 자가 점검한다.

  제조사가 존재한다. ( American, Phoenix 등)

 

1. 시스템 별 부팅 단계

 

- POST ( Power On Self Test )

- 하드웨어 입출력 설정

- 부팅 장치 결정 & Boot Loader 실행 : 부팅 장치에서 부트로더 실행, ufs 같은 경우 1~15번 섹터에 부트 블록이 존재, 여기서 부트 로더 꺼내는 것.

 

 

1) Boot PROM 단계 또는 BIOS 단계

- Boot PROM 또는 BIOS는 시스템의 하드웨어를 검증하기 위해 POST를 실행시켜 자가 점검을 시작한다.

 

1-1) SPARC 시스템의 경우

- 기본 부트 장치의 0번 섹터에 있는 디스크 레이블을 읽어 들여 Boot Program을 찾는다. 또, 기본 부트 장치의 1~15번 섹터에 있는 bootblk( 시스템의 중요 Boot Program)을 읽어서 메모리로 로드한다.

 

1-2) x86 시스템의 경우

- BIOS 부트 프로그램은 부트 장치로부터 첫 번째 디스크 섹터(Master boot record, MBR 또는 mboot)를 읽기를 시도하여 MBR 즉, mboot가 존재하면 로딩 후 실행하고 존재하지 않는다면 에러 메세지를 출력

 

2) Boot Program 단계

 

2-1) SPARC 시스템의 경우

① bootblk 프로그램은 부트 장치의 2차 boot program인 Boot Loader(ufsboot)를 메모리에 로드한다. 이 부트 로더의 경로는 bootblk 프로그램에 기록되어 있다.

② Boot Loader(ufsboot)는 해당하는 커널의 두 부분에 위치해 있고 해당하는 커널을 로드한다.

- 커널의 핵심 : genunix와 unix라는 2개의 정적 코드(static code)로 이루어져 있다.

     - genunix : 플랫폼에 독립적인 커널

     - unix : 특정 플랫폼별 커널

     --> 위 2개의 파일을 메모리에 로드--> 파일이 결합 --> 커널을 구성

- 32bit 모드로 동작하는 시스템 커널 : /platform/`uname -m`/kernel 에 있다.

- 64bit 모드로 동작하는 시스템 커널 : /platform/`uname -m`/kernel/sparcv9 에 있다.

 

 

2-2) x86 시스템의 경우

① mboot(MBR)는 활성파티션의 위치를 찾기 위한 디스크 정보를 가지고 있으며 이를 찾아 로드하여 실행한다.

- 활성파티션

     - activce partition

     - Solaris Boot Program( pboot )

② pboot는 Primary boot program 인 bootblk을 읽어들이는데, ufs file system 상에 존재하는 secondary boot program을 읽어 들이기 위해서이다.

 

************************ 만약 부트가 가능한 파티션이 1개 이상일 경우*************************

- bootblk는 기본 부트 파티션에 위치한 fdisk 테이블을 읽고 사용이 가능한 파티션의 메뉴를 출력, 30초 이내에 원하는 파티션을 선택한다.

 

④ bootblk는 boot.bin이나 ufsboot 같은 보조 부트 프로그램을 찾고 실행한다.( 커널 로드하기 위해)

 

⑤ boot.bin 이나 ufsboot 같은 보조 부트 프로그램은 명령어 해석기로 /etc/bootrc 스크립트 실행 -> 부팅 가능한 시스템 목록 메뉴 선택 (5초 시간 제공) -> 커널 로드

 

 

 

 

 

 

 

3) 커널 초기화 단계( /etc/system 파일 참조 )

 

3-1) SPARC 시스템의 경우

① /etc/system 구성 파일 읽는다.

② 커널은 자체적으로 초기화 하고 모듈 로드를 시작한다.

ufsboot 명령어를 사용하여 파일을 로드, root 파일 시스템을 마운트하기 위한 충분한 모듈이 로드 되었을 때, ufsboot 프로그램은 맵핑을 해제하고 계속 진행한다.

 

③ 커널은 /etc/init 데몬을 시작한다.

--> /etc/init 데몬은 /sbin/init 파일의 심볼릭 링크로 연결

 

 

 

3-2) x86 시스템의 경우

① secondary boot program인 boot.bin 또는 ufsboot 에 의해 커널 자신이 초기화되고 해당 모듈을 시작한다.

/ 파일 시스템을 마운트 하기 위한 충분한 모듈이 로딩되었을 때까지 이것은 계속 진행된다.

② 커널은 사용자 프로세스와 /sbin/init 프로세스를 실행한다.

   /etc/inittab 파일을 읽기 위해 다른 프로세스들을 시작한다.

 

4) init 단계 ( /etc/inittab 파일에 저장된 내용을 가지고 실행 )

4-1) SPARC 시스템의 경우

- Boot Process의 최종 단계이며 init 데몬은 각각의 서비스를 시작, 정지하도록 담당하는 svc.startd 데몬을 구동시킨다.

- /sbin/init 단계에서는 /etc/inittab 파일에 저장된 내용을 가지고 실행이 된다.

① /etc/inittab 파일을 읽는 순서

-> 스트림 모듈 초기화

-> 소켄 전송 서비스 제공자 설정

-> SMF 를 위한 svc.startd 데몬을 초기화

-> 전원공급 실패 시 시스템 종료에 대한 설명

 

4-2) x86 시스템의 경우

① /sbin/init 은 /lib/svc/bin/svc.startd 데몬을 시작한다.

② 시스템 서비스들은 아래와 같은 작업을 수행한다.

- 파일 시스템 마운트와 점검

- 네트워크와 장치 구성

- 시스템 관리를 위한 다양한 프로세스와 관리 작업

③ svc.startd 는 rc(run control) 스크립트들과 호환되며 이를 실행한다.

5) svc.startd 단계

: SMF(Service Management Facility)의 마스터 프로세서, 데몬으로서 서비스 시작, 재시작을 담당

 

5-1) SMF 관련 데몬과 명령어

-     svs.stard (SMF Master Daemon)

     서비스를 관리하는 데몬 (서비스의 시작과 중지를 책임짐)

-     svc.configd

     구성 저장소에 접근(액서스)

-     svcs : 서비스 상태에 대한 모니터링 가능. –a, -l, -d, -D, -x, -v, -p

-     svcadm : 서비스를 시작하고 중지하는 기능을 하고 관리의 역할을 한다.

-     [enable|disable|milestone|restore|restart|refresh]

-     svcprop : property / 서비스 속성. 서비스가 어떻게 동작하는지 속성 값의 리스트를 확인 할 때.

-     svccfg : 서비스에 대한 구성의 import, export, modify 를 처리함

-     inetadm : inetd의 구성과 모니터링, 서비스를 제어.

 

 

 

6) 시스템 종료

6-1) /usr/sbin/init 데몬

init S : 단일 사용자 모드로 종료

init 0 : 솔라리스를 중지시키고, ok 프롬프트가 나타남

init 5 : 시스템 종료 및 전원 off

init 6 : 시스템 종료 후 다중 사용자 모드로 재부팅.

 

6-2) /usr/sbin/shutdown

rc0 강제 종료 스크립트를 실행하여 프로세스와 응용프로그램을 자연스럽게 종료함.

shutdown  -y –g grace-period –I init-state optional message

 

6-3) /usr/sbin/gal & /usr/sbin/poweroff

rc0 강제 종료 스크립트를 실행하지 않으면서 시스템을 즉시 종료

6-4) /usr/sbin/reboot

시스템을 런 레벨 3으로 설정하면서 시스템을 즉시 종료하여 초기화 함

rc0 강제 종료 스크립트를 실행하지 않는 면에서 init 6와 차이가 존재.

 

 

7)  Unix 와 Linux의 Run Level.

     Unix     Linux

Run Level0     PROM 모니터 실행, ok 프롬프트 상태     시스템종료 (HALT)

Run LevelS or s     솔라리스 os 단일 사용자모드    

Run Level1     접근 가능한 시스템이 마운트 되어 있음     단일 사용자, 싱글 모드

Run Level2     다중사용자,

네트워크 자원 서버관련 데몬 제외     NFS를 지원X

다중 사용자 모드

Run Level3     다중사용자,

네트워크 자원 서버들 사용 가능     모든 기능을 포함

다중 사용자 모드

(윈도우 지원안함)

Run Level4     Reserved     Reserved

Run Level5     솔라리스 OS 종료, 전원 OFF     X윈도우 부팅, GUI 환경

Run Level6     OS 종료 및 재부팅     시스템 재부팅

 

 

반응형

'OS' 카테고리의 다른 글

리눅스 무선랜 설정  (0) 2022.08.31
리눅스 사용자 계정  (0) 2022.07.24
VirtualBox Error - NTCreateFile  (0) 2020.11.24
Windows NIC 재시작 명령어  (0) 2020.11.24
Windows server - Active Directory 메모 정리  (0) 2020.11.09