본문으로 바로가기

Day-19 부팅 프로세스

category Linux 2017. 1. 13. 09:05

1. Power On & Rom BIOS
- 전원이 들어오면 CPU가 ROM(Read Only Memory)에 저장된 BIOS(Basic Input Output System) 실행
- BIOS가 POST (Power On Self Test/자체 진단 기능)을 수행하며 하드웨어 장치들을 하나씩 인식하며 이상 유무 확인
- 부팅 장치를 선택하여 부팅 디스크의 첫 섹터(Boot Sector)에서 512바이트 MBR(Master Boot Record)을 읽어, 부트로더(GRUB)로드 시킴.
- 부트로더 메모리에 적재되면 시스템 제어권은 부트로더가 가지게 된다.

 

2. Boot Sector의 Boot Loarder 실행 (GRUB)
- 부팅 메뉴 선택(/boot/grub/grub.conf)
- kernel 이미지와 (/boot/vmlinuz), initrd이미지를 메모리 로드
- 커널은 동작에 필요한 프로세스와 쓰레드 생성한다.  일반적인 프로세스와는 구별하기위해 '[ ]'로 표시 (ps -ef)
  init은 일반 프로세스의 부모, 커널 데몬을 동작시키는 부모 데몬은 커널스레드데몬(kthreadd) 
- swapper 프로세스 호출 (PID 0)
- 시스템 제어권이 커널에게로 넘어간다.

 

 

 

3. swapper 프로세스 실행
- 커널 이미지 압축해제, 장치 드라이브 초기화 (dmesg)
- 루트(/) 파일 시스템을 read-only 모드로 마운트한 뒤 파일 시스템을 검사
- 루트(/) 파일 시스템을 read-write모드로 다시 마운트 한뒤 init 프로세스를 호출 (/sbin/init PID 1)

 

4. init 프로세스 실행 (PID 1)
- /etc/inittab 파일 참조하여 설정된 runlevel 실행
  inittab 필드 구성 - [id]:[runlevel]:[action]:[process]
  id - 각 항목을 구별하기 위한 유일한 식별자로 2문자 이하로 제한
  runlevel - 각각의 runlevel을 선택할 수 있는 항목으로  0-6번까지 구성
  action - id 및 runlevel에서 실행해야할 행동 양식을 설정
  process - 명령어를 실행하기위한 세무적인 명령어 및 옵션

 

 


  id:3:initdefualt:

 

  initdefault
  시스템이 부팅한 후 runlevel을 호출 하기 위한 설정 값으로 만약 설정하지 않는다면 부팅 할 때 runlevel 선택 메세지를 출력
  process의 필들의 설정값은 무시

  runlevel - 시스템을 어떤 방식으로 부팅할 것인가를 분류해 놓은 것
  0 시스템 종료 (init 0)
  1 싱글 유저 모드
     - 시스템 응급 복구, 루트 패스워드 분실 시 사용
  2 NFS 기능이 없는 다중 사용자 모드
  3 모든 네트워크 기능을 지원하는 다중 사용자 모드(TUI)
     - 대부분의 서버
  4 사용하지 않음 (Unused)
  5 X-Window/KDE/GNOME (GUI)
  6 시스템 재부팅 (init 6)

     - 부팅 레벨이 결정되면 /etc/rc.d/rc.sysinit 스크립트 실행
        (default path 설정, 네트워크 설정, 스왑 작동, 호스트네임 , /proc 파일 시스템 마운트, 시스템 시간,폰트 등 작업)
     - 해당 runlevel에 맞는 /etc/rc.d/rc#.d/* 스크립트 실행 (#=runlevel 숫자)
        K(Kill)로 시작하는 파일은 해당 부팅 레벨로 부팅시에 시작되지 않는 서비스 의미
        S(Start)로 시작하는 파일은 해당 부팅 레벨로 부팅시에 시작되는 서비스 의미
        K,S 다음에 오는 숫자값은 파일들이 실행될 우선순위를 뜻함

 

     ex)  runlevel 3에 해당하는 스크립트

 

 


     - 예외적으로 S99local은 /etc/rc.d/rc.local 파일을 원본으로 하는 링크 파일로서 2,3,4,5 runlevel에서만 실행디도록 되어 있다.
     - /etc/rc.d/rc.local 파일은 각 사용자들이 부팅시에 자동으로 실행 하고자 하는 프로그램을 설정하거나 스크립트를 설정해두는 파일이다.
     - runlevel 1에서만 실행되는 /etc/rc.d/rc1.d/S99Single가 있고, runlevel 6에서만 실행되는 /etc/rc.d/rc6.d/S01Reboot이 있다. 

 

5. 로그인 프롬프트 실행 및 X-Window (GUI)

시스템 초기화 및 관리 프로세스

과거 : System V init (init->inittab->rc.sysinit)
현재 : System V init + .Conf->rc.conf->Upstart (init->rcSrc->rc.local)
미래 : Systemd

GRUB 부트로더 설정
/etc/grub.conf (GRUB설정, meny.lst)

 

 

 

default - GRUB 초기 부팅화면에서 부팅할 메뉴를 선택하지 않았을 경우 사용할 기본 부팅메뉴를 선택해둔 것(기본값=0)

 0번 메뉴와 1번메뉴가 있다.

passwd - passwd 필드가 존재하는 경우도 있고 존재하지 않는 경우도 있다.

 우리는 Day-11에서 GRUB모드에 대해여 passwd를 설정했기 때문에 passwd 필드가 존재한다.

 암호화된 패스워드가 보이는 필드이다.

timeout - GRUB 초기 부팅화면의 대기시간을 지정한 값이다.

title - GRUB 부팅항목의 메뉴에 나타나는 제목이다.

root (하드디스크, 파티션) - 루트 디바이스의 위치를 지정하는 필드이다.

kernel - 해당 메뉴로 부팅할때의 kernel의 이미지 파일을 경로로 지정한 것이다.

initrd - SCSI 디스크를 사용하는 경우 반드시 지정해야 하는 항목, 부팅할때 사용할 initrd 이미지를 지정해준다.

 

 

chkconfig - 서비스 데몬의 실행 레벨 정보를 관리하는 프로그램

chkconfig --list                                            //시스템에 등록된 모든 데몬 출력
chkconfig --list [이름]                                 //해당 데몬의 실행 정보를 출력
chkconfig --[add|del] [이름]                        //해당 데몬 실행정보 추가/삭제
chkconfig --level[#] [이름] [on|off|reset]  // #=runlevel number
chkconfig에 사용되는 서비스는 /etc/rc.d/init.d에 위치해야 한다.

 

 


find - 파일 검색
형식 : find [path] [option] [filename] [action]

find option
시간 관련 옵션 - 아이노드에 포함된 메타데이터 파일과 관련된 세가지 타임 스탬프 (timestamp)

1. Accessed Time - 파일 접근(실행)시간
2. Change Time   - 권한 변경 시간
3. Modified Time - 파일 내용 수정 시간

ctime : 파일이나 inode값이 바뀐 시점 (속성값이 바뀐 시점)
            퍼미션, 소유주, 파일크기 등이 변경되었을때 ctime 갱신

mtime : 파일 내용이 바뀐 시점, 파일 내용이 바뀌는건 파일의 크기도 달라진다.
             이때 파일의 크기가 속성이므로 ctime도 갱신

atime : 파일을 오픈하면 갱신, grep, sort, cat 등등 명령어로 해당 파일을 접근할때 갱신

- amin [n]       // n분 전에 마지막으로 액세스된 파일
  atime [n]      // n*24시간 전에 마지막으로 엑세스된 파일

- cmin [n]        // n분 전에 마지막으로 상태가 변경된 파일
  ctime [n]       // n*24시간 전에 마지막으로 상태가 변경된 파일

- mmin [n]       // n분 전에 마지막으로 데이터가 변경된 파일
  mtime [n]      // n*24시간 전에 마지막으로 데이터가 변경된 파일

 

 


 
 n : 정확히 n분/n*일(24시간전)
-n : 지금부터 n분/n일 전까지
+n : n분/n일 또는 n분/n일 이전

#date -s '2016-10-14 10:10'
#touch -t 201610111000 file-1         //2016 10 10 1000
#touch -t 201610121000 file-2
#touch -t 201610131000 file-3

 

 

 

perm 옵션 -,+

1. -perm  [permission] : 정확하게 [permission]과 일치
2. -perm -[permission] : [permission]을 포함한 추가적인 퍼미션
3. -perm +[permission] : [permission]에서 하나의 bit라도 일치하는 퍼미션

find action
- delete                         //검색 결과 삭제
- exec [command] \;      //검색 결과를 지정한 명령어로 처리
- exec [command] {} \;  //검색 결과를 차례대로 매칭하면서 지정된 명령어를 실행

  {} - 매칭된 파일들에 하나씩 대입
  \; - -exec에서 설정한 명령을 수행하는 역할

-ls      //검색 결과를 ls 형태로 출력
-ok [command]   //검색 결과에 실행할 명령어에대한 확인여부
        질의
-print     //검색 결과 출력 (기본값)
-printf     //검색 결과에 형식 지정 %h 경로 %f....       
-fprintf [파일이름]  //검색결과를 파일로 지정하여 저장

 


 

'Linux' 카테고리의 다른 글

Day-21 VMware Network & 실습 환경 구축  (0) 2017.01.16
Day-20 소프트 웨어 관리하기  (0) 2017.01.14
Day-18 파일 시스템 관리 5  (0) 2017.01.12
Day-17 파일 시스템 관리 4  (0) 2017.01.10
Day-16 파일 시스템 관리 3  (0) 2017.01.09