250 likes | 461 Views
LINUX 부팅과정 & 부트로더. 강 명 수 flag12@cherub.sungkyul.edu. 시스템 부팅 과정 이해도. Linux 부팅과 종료 (1). 부팅과 종료를 위한 프로세스 ( 명령어 ) Init, shutdown, reboot, halt, poweroff 등 Ex) init 0 부팅레벨 6 종류 ( 관련파일 :/etc/inittab, 관련프로세스 :init) 레벨 0 : 시스템 종료 (init 0, halt, shutdown –h now)
E N D
LINUX 부팅과정 & 부트로더 강 명 수flag12@cherub.sungkyul.edu
시스템 부팅 과정 이해도 성결대학교 LINUX 수업 강명수
Linux 부팅과 종료(1) • 부팅과 종료를 위한 프로세스(명령어) • Init, shutdown, reboot, halt, poweroff 등 • Ex) init 0 • 부팅레벨 6종류(관련파일:/etc/inittab, 관련프로세스:init) • 레벨 0 : 시스템 종료(init 0, halt, shutdown –h now) • 레벨 1 : 싱글모드(관리모드), 콘솔로만 접근가능, root만 허용(init 1) • 레벨 2 : NFS를 지원하지 않는 멀티유저 모드(init 2) • 레벨 3 : NFS를 지원하는 멀티유저 모드(init 3, full multiuser mode) • 레벨 4 : 현재 사용하지 않는 부팅모드(설정하여 사용가능함) • 레벨 5 : X윈도우 환경으로 실행된 멀티유저 모드(init 5) • 레벨 6 : 서버 재부팅 모드(init 6, reboot, shutdown –r now) 성결대학교 LINUX 수업 강명수
Linux 부팅과 종료(2) • 부팅과 종료관련 파일들 • Init 프로세스 • /etc/inittab 파일(부팅시 init 프로세스에 의해 참조되는 파일) • /etc/rc.d/rcN.d 디렉토리 내의 K로 시작하는 파일들(N:0~6) • /etc/rc.d/init.d 디렉토리 내의 스크립트 파일들 • /var/log/wtmp, /var/log/messages, /var/log/dmesg, /var/log/boot.log 로그 파일 성결대학교 LINUX 수업 강명수
Linux 부팅과정의 이해(1) • 1단계 : Power On(전원스위치 on) • 시스템 전원공급 • 메인보드의 ROM-BIOS(basic input/output system)에 있는 BIOS 프로그램 자동실행. • 메모리의 특정번지에 자동 로드되어, 특정번지의 BIOS 프로그램(명령들)을 자동실행 • 2단계 : BIOS 프로그램들의 실행 • 자체진단기능(POST-Power On Self Test) • 부팅매체검색과 부트로더(GRUB or LILO) 실행 • 부트로더가 메모리에 적재되면, 시스템 제어권은 BIOS에서 부트로더로 이동. 성결대학교 LINUX 수업 강명수
Linux 부팅과정의 이해(2) 성결대학교 LINUX 수업 강명수
Linux 부팅과정의 이해(3) • 3단계 : 부트로더(GRUB)의 실행 • GRUB은 실행과 함께 /boot/grub/grub.conf파일을 읽는다. 그리고, 어떤 부팅으로 부팅할 것인지를 결정. • 이 화면이 GRUB 이 화면(파란화면)에 나타나는 첫번째화면이다. • GRUB은 커널(kernel) 이미지-(/boot/vmlinuz-버전)를 불러들임. • 시스템 제어권이 부트로더에서 커널로 이동. • 4단계 : 커널의 로딩 • 커널은 swapper 프로세스(PID 0)를 호출. • swapper는 커널은 압축된 커널이미지를 풀고, 사용할 각 장치드라이브들을 초기화한다. • 하드웨어 검색 후 임시로 루트 파일시스템을 마운트한다.(boot/grub/menu.lst-읽기전용) • Init 프로세스에 의해서 /etc/inittab 파일을 읽어 들여서 실행한다. 성결대학교 LINUX 수업 강명수
Linux 부팅과정의 이해(4) • 5단계 : init 프로세스의 실행(/etc/inittab 파일의 실행) • 모니터 화면에서 로그인 프롬프트가 나오기 전까지 이 init 프로세스에 의한 실행 내용이다. • 파일시스템 점검, 서비스 프로세스 관리, 가상 콘솔 접속 관리, 실행 레벨 관리 등의 리눅스 사용 환경을 위한 초기화 작업 실행. 성결대학교 LINUX 수업 강명수
Init과 inittab (1) 성결대학교 LINUX 수업 강명수
Init과 inittab (2) [ id : runlevels : action : process ] 예: id:3:initdefault 예: si::sysinit:/etc/rc.d/rc.sysinit • Id : 각 항목(행)의 이름들(id, si, pr, pf, ca 등) • Runlevels : 해당행의 설정내용을 어떤 부팅레벨에서 실행할 것인가를 설정 • Action : 다음에 오는 process를 실행할 때 적용할 프로세스 속성(옵션) • respawn : 프로세스가 종료되면 항상 다시 시작 • wait : 지정한 runlevel이 되면 그 프로세스가 실행되고, init는 그 프로세스가 종료되기를 기다린다. • once : 지정한 runlevel이 되면 한번만 그 프로세스를 실행한다. • boot : 시스템 부팅 때에 그 프로세스를 실행한다. 이때는 runlevel 값이 무시된다. • bootwait : 시스템 부팅 떄예 그 프로세스가 실행되는데, 이 떄 init는 그 프로세스가 종료되기를 기다린다. (예, /etc/rc) 이때는 runlevel 값이 무시된다. 성결대학교 LINUX 수업 강명수
Init과 inittab (3) • ondemand : 지정한 ondemand runlevel이 호출 될 떄마따 그 프로세스를 실행한다. 그러나 runlevel 값은 변경되지 않는다. • initdefault : 시스템 부팅 뒤에 실행될 runlevel을 지정한다. • sysinit : 시스템 부팅을 할 떄예 그 프로세스가 실행된다. • powerwait : init가 SIGPWR 시그날을 받았을 때 그 프로세스가 실행된다.(전원공급에 문제가 생겼을 떄 발생하는 시그날) • powerfail : powerwait와 같지만, init는 그 프로세스 작업이 끝나기를 기다리지 않는다. • ctrlaltdel : 키보드의 Ctrl+Alt+Del 키를 동시에 눌렀을 때 실행 • process : 실행할 실제 내용(명령어) 성결대학교 LINUX 수업 강명수
Init과 inittab (4) • 기본 실행 레벨 • Id:3:initdefault: • 시스템 부팅을 어떤 부팅레벨로 부팅할 것인가를 결정하는 행 • 레벨 0 : 시스템 종료(init 0, halt, shutdown –h now) • 레벨 1 : 싱글모드(관리모드), 콘솔로만 접근가능, root만 허용(init 1) • 레벨 2 : NFS를 지원하지 않는 멀티유저 모드(init 2) • 레벨 3 : NFS를 지원하는 멀티유저 모드(init 3, full multiuser mode) • 레벨 4 : 현재 사용하지 않는 부팅모드(설정하여 사용가능함) • 레벨 5 : X윈도우 환경으로 실행된 멀티유저 모드(init 5) • 레벨 6 : 서버 재부팅 모드(init 6, reboot, shutdown –r now) 성결대학교 LINUX 수업 강명수
Init과 inittab (5) • 시스템 초기화 • si::sysinit:/etc/rc.d/rc.sysinit • 시스템 초기화 스크립트 내용(약 500행) • Default path 설정 • 네트워크 설정 확인 및 적용(/etc/sysconfig/network) • 스왑작동 • 호스트 이름, 도메인 이름 설정 • keymap 로딩 • fsck 실행으로 파일시스템 체크(/etc/fstab 파일을 참조) • /proc 파일시스템 마운트 • 커널 모듈 로딩 • depmod 실행으로 모듈의 의존성 검사 • 시스템 클럭 설정 • 시스템 폰트 설정 • 파일 청소 작업 • 시리얼 포트 설정작업 • /usr/sbin/netconfig, /usr/sbin/timeconfig, /usr/sbin/sutoconfig, /usr/sbin/ntsysv 등을 필요시 실행 • Utmp, wtmp 파일의 검사 및 생성 • 기타 시스템 사용을 위한 초기화 작업을 수행 성결대학교 LINUX 수업 강명수
파일시스템 테이블파일 [파일시스템 장치명] [마운트포인트][파일시스템 종류][파일시스템속성][dump설정][체크옵션] 예: /dev/hda2 /home ext3 defaults 1 2 예: LABEL=/boot /boot ext3 defaults 1 2 • [파일시스템 장치명]은 디바이스를 파일로 표현한 것. • [마운트포인트]는 리눅스의 마운트포인트인 레이블명. • [파일시스템 종류] • Ext2, ext3, reiserfs, iso9660, nfs, swap, ufs, vfat, ntfs등 • [파일시스템속성] • Defaults 속성 : rw, nouser, auto, exec, suid • Auto, noauto, exec, noexec, suid, nosuid, user, nouser, ro, rw, usrquota, grpquota • [dump 설정] • 0 : dump로 데이터백업이 되지 않는 파일시스템을 의미함. • 1 : dump로 데이터백업이 가능한 파일시스템을 의미함. • [체크옵션] : fsck, e2fsck • 0 : 부팅시에 파일시스템체크(점검)을 수행하지 않음. • 1 : 루트파일시스템으로서 부팅시에 파일시스템 체크를 수행함. • 2 : 루트파일시스템 이외의 파일시스템으로서 부팅시에 파일시스템 체크를 수행함.(점검순서는 행의 순서대로 점검함) 성결대학교 LINUX 수업 강명수
Init과 inittab (6) • 시스템 초기화 • l0:0:wait:/etc/rc.d/rc 0 • l1:1:wait:/etc/rc.d/rc 1 • l2:2:wait:/etc/rc.d/rc 2 • l3:3:wait:/etc/rc.d/rc 3 • l4:4:wait:/etc/rc.d/rc 4 • l5:5:wait:/etc/rc.d/rc 5 • l6:6:wait:/etc/rc.d/rc 6 • 결정된 부팅레벨에 따라서 조건(id:3:initdefault)에 맞는 행을 실행 • 부팅화면에서는 각 서비스 데몬(sshd, sendmail, xinetd, syslogd, named, httpd 등)들이 실행 • 각 디렉토리들에 있는 S로 시작하는 파일들과 K로 시작하는 파일들이 링크 형태로 존재하고, /etc/rc.d/init.d 디렉토리의 파일들로 링크되어 있다. • S와 K 다음의 두자리 숫자는 실행순서를 의미한다. 성결대학교 LINUX 수업 강명수
Init과 inittab (7) • 시스템 재시작 • ca::ctrlaltdel:/sbin/shutdown –t3 –r now • CTRL + ALT + DEL 키를 동시에 눌렀을 때 실행. • shutdown 명령어의 옵션을 사용할 수 있음. • UPS 전원 부족 시에 자동으로 셧다운하기 • pf::powerfail::/sbin/shutdown –f –h +2 “Power Failure; System Shutting Down” • pr::12345:powerokwait:/sbin/shutdown –c “Power Restored; Shutdown Cancelled” • 시스템 전원공급에 관한 설정행 • pf행은 UPS 전원이 부족할 경우 2분후에 자동적으로 시스템을 shutdown시킴. • pr행은 다시 전원공급이 되었을 때(UPS 전원 재충전등)에 예약된 shutdown 실행을 자동취소시킴. 성결대학교 LINUX 수업 강명수
Init과 inittab (8) • 가상 콘솔 접속을 위한 mingetty 설정 • 1:2345:rewpawn:/sbin/mingetty tty1 • 2:2345:rewpawn:/sbin/mingetty tty2 • 3:2345:rewpawn:/sbin/mingetty tty3 • 4:2345:rewpawn:/sbin/mingetty tty4 • 5:2345:rewpawn:/sbin/mingetty tty5 • 6:2345:rewpawn:/sbin/mingetty tty6 • 리눅스의 가상콘솔을 지원하는 프로토콜 mingetty. • 부팅의 마지막 단계로서 6개의 가상콘솔이 실행됨 • 2, 3, 4, 5번 부팅레벨에서만 해당되는 내용 • 각 행은 ALT+F1, ALT+F2, ALT+F3, ALT+F4, ALT+F5, ALT+F6으로 전환. 성결대학교 LINUX 수업 강명수
리눅스 부트로더 이해 • GRUB 부트로더 • Grub 부트로더의 특징 • LILO에 비해 설정 및 사용이 편리. • 부트 정보가 올바르지 않더라도 부팅 시 이를 바로 수정하여 부팅할 수 있다. • Chain-load를 이용하여 멀티 부팅 지원 • 메뉴 인터페이스 환경을 지원하며, 대화형 모드로 부트 정보를 설정할 수 있다. • 파일시스템과 커널 실행 포맷을 인식하여 하드디스크 상에서 커널의 물리적 위치를 기록하지 않고서도, 커널 위치와 커널 이미지 파일명만 알고 있으면 부팅이 가능하다. 성결대학교 LINUX 수업 강명수
GRUB 설정(1) • /boot/grub/menu.lst or grub.conf • /boot/grub/menu.lst or /boot/grub/grub.conf or /etc/grub.conf 성결대학교 LINUX 수업 강명수
GRUB 설정(2) • timeout=5 • GRUB 부트 화면에서 키보드 입력을 받을 대기 시간 • 만약 입력이 없으면, 기본값으로 설정된 부트 엔트리가 부팅이됨. • Hiddenmenu 옵션이 적용되면 부트화면에서, 적용되지 않으면, GRUB 부트 메뉴 화면에서 적용 성결대학교 LINUX 수업 강명수
GRUB 설정(3) • default 0 • GRUB에서 기본적으로 부팅되도록 할 부트 엔트리 값 • 부트 엔트리는 title 옵션으로 명시된 부트 엔트리를 말한다. • 부트 엔트리는 0부터 시작 • fallback 1 • 기본 부트 엔트리의 잘못된 부트 정보로 인하여 부팅할 수 없는 경우에 차선택으로 부팅될 엔트리를 지정 • splashimage • 그림 이미지를 압축한 xpm.gz 파일을 GRUB 메뉴 화면의 배경 이미지로 사용한다. 성결대학교 LINUX 수업 강명수
GRUB 설정(4) • hiddenmenu • GRUB 부트 메뉴를 보여주지 않고 바로 리눅스 커널로 부팅되도록 한다. • 리눅스 부트 엔트리 설정 title 부트 엔트리 설명 root (하드디스크 디바이스명, 부트 파티션명) kernel 커널이미지경로/커널명, root=루트 디바이스명 부트 파라미터 initrd initrd 이미지경로/initrd명 Ex) title Fedora Core3 (Kernel 2.6.9-1.667) root (hd0, 4) kernel /boot/vmlinuz-2.6.9-1.667 ro root=LABEL=/ rhgb quiet initrd /boot/initrd-2.6.9-1.667.img 성결대학교 LINUX 수업 강명수
GRUB 설정(5) • GRUB의 디바이스 명칭 성결대학교 LINUX 수업 강명수
GRUB 설정(6) • GRUB 부트 메뉴 다루기 • 부트로더 명령 라인에 직접 부트 정보 추가하여 부팅하는 방법 • GRUB 스플래시 이미지 바꾸기 • GRUB 열쇠글 보안 설정 성결대학교 LINUX 수업 강명수
Q & A 감 사 합 니 다. 성결대학교 LINUX 수업 강명수