Presentation is loading. Please wait.

Presentation is loading. Please wait.

부트 프로세스 200811436 박철승.

Similar presentations


Presentation on theme: "부트 프로세스 200811436 박철승."— Presentation transcript:

1 부트 프로세스 박철승

2 부트 프로세스 들어가기 전 윈도우와 반대로 리눅스는 부팅과정을 사용자에게 보여주게 되는데, 리눅스의 부팅과정을 이해하는 것은 시스템의 전반적인 이해 부팅과정 중 각종 하드웨어의 인식과 커널 부트로더 파일시스템 마운트 시스템 초기화 스크립트 등 알 수 있다 시스템 장애시 부팅과정을 순차적으로 분석하여 장애 원인을 알 수 있으며 조치를 취할 수 있다

3 부팅 메세지 대부분의 시스템은 이 때 MBR영역에 설치되어 있는 GRUB 부트로더를 이용하여 리눅스가 부팅 시스템 전원 가동
POST Booting(하드웨어, 메모리 테스트 및 부팅 순서 결정되기 전 과정) BIOS에 설정되어 있는 부팅 디바이스 순서에 의해 시스템 자동 부팅 이 때 MBR영역에 설치되어 있는 GRUB 부트로더를 이용하여 리눅스가 부팅 커널 이미지 적재, 파일 시스템 마운트, 시스템 초기화 프로그램 동작하여 부팅이 이루어짐

4 부트 프로세스 부트(Boot) 과정 : 컴퓨터의 시동 과정 시스템 전원 ON BIOS 프로그램의 실행 부팅매체 검색
부트로더 실행 커널 부트 이미지(vmlinuz) 적재 루트(/) 파일시스템 마운트 init 프로세스 실행

5 부트 프로세스 1단계: 시스템 전원 ON 2단계: BIOS 프로그램의 실행 시스템에 전원을 공급하는 과정
모든 운영체제에 부팅하기 위한 첫 번째 과정 1. 메인보드의 ROM-BIOS에 있는 BIOS 프로그램들이 자동으로 실행 2. BIOS 프로그램들은 전원공급과 함께 메모리와 CPU를 작동 2단계: BIOS 프로그램의 실행 포스트(POST)과정 – 자체진단기능을 통하여 컴퓨터의 이상 유무 검사 포스트과정 중 문제가 생기면 경고음을 통해 문제를 알려줌 1. 컴퓨터에 전원이 들어오면 전류는 CPU로 흘러가고, CPU는 시동 프로그램(BIOS 프로그램)을 불러들인다 2. BIOS프로그램은 CPU를 시작으로 CMOS를 검사하고, 메모리를 테스트 후 용량 확인 3.이어서 그래픽카드, 키보드, 마우스 등 각종 장치의 이상 유무를 검사하여 장치를 초기화

6 부트 프로세스 3단계: 부팅매체의 검색 4단계: 부트로더의 실행
POST과정에서 검사가 완료되면 검색된 부팅매체(하드디스크, CD-ROM, Network) 중 CMOS에 설정되어 있는 순서대로 부팅을 시도 하드디스크로의 부팅에서 시스템파일의 가장 첫번째 부분(MBR: Master Boot Record)으로 부팅의 제어권을 넘긴다 MBR에 존재하는 부트로더인 GRUB를 읽고, 부트로더(GRUB)가 메모리에 적제되고 시스템의 제어권은 부트로더(GRUB)가 갖는다 4단계: 부트로더의 실행 부트로더인 GRUB는 커널을 메모리에 올려놓는다 GRUB 설정파일인 /boot/grub/grub.conf 파일을 읽어서 부팅할 커널 선택 설정에 따라 자동선택, 사용자 직접 선택 가능 GRUB는 커널이미지를 불러들이고 시스템의 제어권을 넘겨준다 커널이미지 : 커널이 하나의 파일로 디스크에 저장되어 있는 것을 의미

7 부트 프로세스 5단계: 커널 부트 이미지(vmlinuz) 적재 6단계: 루트 파일시스템 마운트
GRUB의 부트 메뉴에서 커널을 선택하면 커널 이미지가 동작한다 이 때 커널 이미지는 압축되어 있기 때문에 PID 0번인 swapper 프로세스를 호출한다 swapper 프로세스가 커널 이미지를 압축해제하고 커널이 사용할 각 장치드라이브들(메모리, 디스크, 시리얼 장치, 마우스 등 하드웨어)을 초기화하고 자세한 정보를 콘솔에 나타낸다 6단계: 루트 파일시스템 마운트 하드웨어 검색 후 커널은 루트(/) 파일시스템을 마운트한다 파일시스템이 안전하게 점검될 수 있도록 읽기 전용으로 마운트 이후에 읽기/쓰기로 마운트

8 부트 프로세스 7단계: init 프로세스 실행 모든 프로세스의 부모 역할을 하는 PID1번의 init 프로세스를 실행
여러 명령 스크립트 파일을 호출하여 시스템 초기화 진행 1. init 프로세스는 기본 시스템 초기화 스크립트인 sysinit 스크립트를 실행 sysinit 스크립트는 fsck명령어를 이용하여 로그인 프롬프트가 나오기 전까지 파일시스템 점검, 필요한 커널 모듈의 메모리 적재, 스왑 파티션 초기화, 네트워크 초기화, 서비스 프로세스 관리, 가상 콘솔 접속 관리, 실행 레벨 관리를 실행하고, /etc/fstab에 명시되어 있는 각 파티션들을 마운트하는 과정을 수행 2. sysinit프로세스 호출이 끝나고, init프로세스는 가장 먼저 /etc/inittab파일을 읽 어 들인다 /etc/inittab파일에는 시스템의 기본 실행 단계가 정의 되어 있다

9 id : runlevel : action : process
부트 프로세스 /etc/inittab 구성 id : id는 inittab에서 다른 설정과 구분하기 위해서 사용하는 것 1~4 글자 runlevel : 특정한 동작을 하게 되는 실행 레벨 리스트 action : 그 줄의 프로세스가 어떤 동작을 취할지 설정하는 것 -respawn : 프로세스가 종료되면 재실행하는 것 -wait : 프로세스의 특정 레벨에서 한번 실행된 init은 프로세스 종료될 때까지 대기 -once : 지정한 runlevel이 실행되면 한번만 그 프로세스를 실행 -boot : 시스템 부팅 때 그 프로세스를 실행. 이 때 runlevel 값은 무시 -bootwait : 시스템 부팅 시 그 프로세스가 실행되는데 이 때 init는 그 프로세스가 종료될 때 까지 대기 -off : 아무것도 아님. 단지 id만 존재 -ondemand : 지정한 ondemand runlevel이 호출될 때마다 그 프로세스를 실행. runlevel은 바뀌지 않는다 -initdefault : 시스템 부팅 뒤에 실행될 runlevel을 지정. 이부분이 없을 경우 어떤 runlevel을 사용할 지 콘솔에서 물어본다 -sysinit : 시스템 부팅시 그 프로세스가 실행. boot, bootwait로 지정된 프로세스보다 먼저 실행 process : 실행될 프로세스를 지정 id : runlevel : action : process

10 부트 프로세스 Default runlevel (기본 실행 레벨)
실행레벨 : init프로세스에 의해 시스템이 어떻게 동작할 것인지 결정하는 실행값 윈도우 부팅시 F8키를 눌러서 시스템을 어떻게 시작하려는 결정(안전모드,표준모드) 0~6번까지 7개의 값을 가지며 보통 Runlevel 3이지만, 시스템 성능이 향상되면서 요즘엔 Runlevel 5로 운영하는 시스템이 많다 Runlevel 0 : 시스템 종료(halt) Runlevel 1 : 단일 사용자 모드, 싱글 모드 Runlevel 2 : NFS를 지원하지 않는 다중 사용자 모드 Runlevel 3 : 모든 기능을 포함한 다중 사용자 모드, TUI환경 Runlevel 4 : 사용되지 않는 실행 모드(사용자가 직접 정의하여 사용 가능) Runlevel 5 : X 윈도우 부팅 Runlevel 6 : 시스템 재부팅 실행레벨이 5이라면 /etc/rc.d/rc5.d 디렉토리에 있는 스크립트를 실행 실제로는 심볼링 링크 파일만 담고 있고 rc스크립트에 의해 실행될 모든 스크립트 파일의 원본은 /etc/rc.d/init.d 디렉토리에 있다 각 실행 레벨에서 새로운 서비스를 추가하고자 하면 /etc/rc.d/init.d 특정 형식에 맞추어 실행 스크립트를 만든 후 실행 레벨 디렉토리에 심볼릭 링크를 만들면 된다

11 부트 프로세스 ls –l 명령어를 이용하여 링크된 파일만 존재하는 것을 알 수 있다
또한 S나 K로 시작하게 되는데 S는 데몬을 시작 K는 데몬을 종료시키는 것이다

12 부트 프로세스 S(Start) 파일 K(Kill) 파일 실행레벨 변경
S00microcode_ctl → S04readahead_early → S05kudzu → S06cpuspeed → S08arptables_jf 순으로 스크립트들이 실행 K(Kill) 파일 K01yum → K02NetworkManager → K03rhnsd → K05saslauthd → K10dc_server 순으로 스크립트들이 종료 /etc/rc.d/rc0.d 에서는 디렉토리내의 파일들이 모두 K*로 구성. (shutdown이기 때문) 실행레벨 변경 init 명령어 init [runlevel 0~6] 명령어 입력을 하면 바로 해당 실행레벨로 부팅 telinit 명령어 telinit [runlevel 0~6]

13 부트 프로세스 시스템 초기화 프로세스(init) sysinit라는 키워드가 action 필드에 지정
제일 처음 init프로세스가 실행시키는 명령어 (start-up 스크립트)

14 부트 프로세스 Ctrl + Alt + Delete 키 : 시스템 재시작 UPS 전원관련 시스템 종료
Ctrl + Alt + Delete 키 조합을 누르게 되면 shutdown 명령에 의해 시스템이 재부팅 되도록 설정 UPS 전원관련 시스템 종료 정전으로 인해 시스템을 보호하기 위해 무정전 전압 장치인 UPS를 이용할 경우 유용한 설정 UPS 전원이 부족할 경우 2분 후에 시스템을 종료

15 부트 프로세스 가상 콘솔 설정 xdm의 실행 레벨 표준 레벨로 gettys를 실행하도록 설정 6개의 가상 콘솔을 제공
X-Window의 기본 실행 레벨 설정

16 실행 레벨 설정 수동으로 실행 레벨 설정 각 실행레벨에 해당하는 디렉토리에 각 순위를 고려하여 /etc/rc.d/init.d 디렉토리에 존재하는 데몬 실행 스크립트 파일과 연결해주면 된다 EX) 실행레벨2는 NFS서비스를 제외하곤 실행레벨3과 같다. NFS서비스 동작 설정을 하려면 ln –s : 심볼링 링크 생성

17 실행 레벨 설정 chkconfig 유틸 실행 단계별로 데몬을 관리할 수 있는 편리한 관리도구 실행 레벨에 따른 실행 여부 확인
chkconfig –list | more

18 실행 레벨 설정 특정 데몬의 실행 여부 확인 데몬의 실행 레벨 변경
ex) 아파치 웹서버의 데몬인 httpd의 실행 레벨에 따른 실행 여부 확인 chkconfig --list daemon_name 데몬의 실행 레벨 변경 ex) 데몬 httpd를 실행레벨 2, 3, 5에 실행이 될 수 있도록 하는 등록 예 chkconfig --level 235 httpd on

19 실행 레벨 설정 ntsysv 유틸리티 chkconfig와 마찬가지로 실행 레벨별로 서비스 데몬을 관리하는 인터페이스 프로그램
ntsysv 입력 ( 방향키, space키, tab키를 이용) 현재로그인 되어 있는 실행레벨에서의 서비스 데몬만 설정 가능 전체 실행 레벨에서의 데몬 실행 여부를 결정하기 위해서는 ex) ntsysv --level 235

20 실행 레벨 설정 system-config-service : 서비스 설정 도구
각 실행레벨별로 서비스 데몬을 관리하는 그래픽 응용프로그램 system-config-services / [프로그램]→[시스템설정] →[서버설정] →[서비스]

21 리눅스 부트로더 GRUB(GRand Unified Bootloader) 부트로더 GRUB의 설정
파일시스템과 커널 실행 포맷을 인식하여 하드디스크 상에서의 커널의 물리적인 위치를 기록하지 않고도 커널 파일명과 커널이 위치하고 있는 파티션의 위치만을 알고 있으면 시스템 부팅이 가능 전통적인 부트로더 LILO의 단점을 보안하여 막강한 기능을 가진 Linux의 기본 부트로더로 자리를 잡았다 GRUB의 설정 설정파일 : /boot/grub/grub.conf

22 리눅스 부트로더 설정 파일 default=0 timeout=5
GRUB에서 기본 부팅을 시도할 부트 엔트리값 엔트리 순서는 0번부터 시작하며 현재는 title CentOS ( el5) 로 부팅 된다 timeout=5 지정된 시간동안 키보드입력이 없으면 지정된 엔트리로 부팅(시간 단위는 초) splashimage=(hd0,1)/grub/splash.xpm.gz GRUB의 부팅 이미지 파일 위치를 지정 hiddenmenu hiddenmenu가 적용된 이후에는 메뉴를 숨기게 되고 부팅 중 키 조작이 있으면 hiddenmenu이후의 메뉴들을 출력 password GRUB 부트로더에 암호를 지정하는 옵션

23 password --md5 <password-hash>
리눅스 부트로더 password 설정 방법 MD5로 암호화된 패스워드 생성 /boot/grub/grub.conf 파일 설정 /boot/grub/grub.conf 파일에서 timeout 옵션 밑에 를 추가 # grub-md5-crypt password --md5 <password-hash>

24 리눅스 부트로더 title root kernel initrd title에 지정된 운영체제의 위치를 정의.
ex) (hd0,0) : 첫번째 하드디스크 hd0, 첫번째 파티션 0 kernel 루트 디렉토리 내에 존재하는 기본 부트 커널 이미지 initrd initrd 이미지의 위치 및 파일명을 지정

25 Q & A


Download ppt "부트 프로세스 200811436 박철승."

Similar presentations


Ads by Google