4장. CentOS 리눅스 시작과 종료 4.1 리눅스 부팅 과정 4.2 리눅스 로그인 4.3 시스템 종료와 재부팅 4.1 리눅스 부팅 과정 1단계 : 메인보드의 ROM-BIOS 실행 - BIOS프로그램은 전원이 들어오는 즉시 메모리 특정번지로 load 후 적재. CPU는 시스템 전원공급 즉시 메모리 특정주소의 BIOS 명령어를 실행. * BIOS : 컴퓨터에서 전원을 켜면 맨 처음 컴퓨터의 제어를 맡는 프로그램. ( 하드웨어와 소프트웨어 사이의 연결과 번역 기능을 담당하는 인터페이스 ) 바이오스를 구성하는 루틴으로는 스타트업(start-up) 루틴과 서비스 처리 루틴, 하드웨어 인터럽트 처리 부분이 대표적. 2단계. 부트로더 실행 - 부팅가능한 GRUB(LILO)중 선택된 Kernel 이미지를 메모리로 로딩. ( 압축된 커널이미지는 메모리에 올라간 다음 압축 해제 ) - Root 파티션을 마운트. ( read-only ) * Bootloader : 부트로더는 OS의 커널을 로드하고 몇몇 커널 파라메터를 커널에 넘겨주는 일을 한다. * LILO(LInux LOader), GRUB : 3장 참고 3단계. Swapper 프로세스 실행 - PID가 0번인 스와퍼는 각 장치 드라이브 초기화 장치 드라이브가 초기화 되면 PID 1번인 init 실행. - 디스크 검사(init)후, 검사가 끝나면 다시 read-write 모드로 remount. 그 후, /sbin/init 프로그램을 실행. 4단계. init 프로세스 실행 - /etc/inittab 파일중 가장 먼저 실행되는것은 /etc/rc.d/rc.sysinit 스크립트 (시스템초기화 : /etc/inittab에 사용자가 설정한 실행 내용에 따라 달라짐) - /etc/rc.d/rcN.d(실행 레벨 설정된 프로세스) 실행. - K는 해당 스크립트 종료. S는 스크립트 실행. - /etc/rc.d/rc.local 각 사용자들이 부팅시 자동으로 실행하고자하는 프로그램을 설정하거나 스크립트 설정파일. 표 1. /etc/rc.d/rc.local 스크립트 파일 /etc/inittab init의 설정파일 /etc/rc.d/rc.sysconfig init스크립트에서 제일 먼저 실행되는 것 /etc/rc.d/rc.local init스크립트에서 제일 마지막에 실행되는 것 /etc/rc.d/init.d/* 데몬을 실행시키기 위한 스크립트들 /etc/rc.d/rc[0-6].d/* 각 런레벨에 정의된 데몬들을 실행시키기 위한 것 실제 내용은 /etc/rc.d/init.d의 스크립트로의 링크 /etc/rc.d/rc 각 런레벨에 해당되는 스크립트를 실행시키는 스크립트 /var/lock/subsys/* 현재 실행되고 있는 데몬들의 lock파일들 /var/run/*.pid 현재 실행되고 있는 데몬들의 PID가 적힌 파일들 5단계. 계정 프로세스 실행 - login을 위해 /sbin/mingetty 실행(Console Login 실행) * Runlevel : init는 /etc/inittab이란 파일을 읽는다. 표2. /sbin/inittab # # inittab This file describes how the INIT process should set up # the system in a certain run-level. # # Author:Miquel van Smoorenburg, # Modified for RHS Linux by Marc Ewing and Donnie Barnes # # Default runlevel. The runlevels used by RHS are: # 0 - halt (Do NOT set initdefault to this) # : 시스템종료 # 1 - Single user mode # : 싱글유저모드 (root계정만 존재) # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) # : 다중 사용자 모드. NFS를 지원하지 않음. # 3 - Full multiuser mode # : 완전한 다중 사용자 모드. 모든 네트워크 지원. # 4 - unused # : 특별히 정해진 의미없음. # 5 - X11 # : X-Window에서 로그인 가능. # 6 - reboot (Do NOT set initdefault to this) # : 재부팅. # id:3:initdefault: # : 이 줄에서 기본 런레벨을 지정함. # System initialization. si::sysinit:/etc/rc.d/rc.sysinit # : init은 제일 먼저/etc/rc.d/rc.sysinit에 적어 놓은 명령들을 실행 # 루트파티션 이외의 파티션을 검사해서 마운트시키는 등의 과정. 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 : : # : runlevel 3번에 해당하는 스크립트들을 실행. # 이 스크립트들은 /etc/rc.d/rc3.d 디렉토리에 위치. # 주로 데몬 프로세스를 시작하거나 종료시키는(죽이는, kill)역할. # 순서에 따라서 마지막에 S99local이 실행. (/etc/rc.d/rc.local 에 링크.) # 일반적으로 부팅과정에 어떤 작업을 추가시키려면 이 파일에 추가. 요약 전원 스위치를 켜면 BIOS프로그램들의 실행내용들이 실행이되고 부트로더(GRUB)의 실행이 되고, 커널의 로딩이 된후 init프로세스의 실행이 된다. init에서 부팅모드를 정할 수 있고, 필요에 따라 사용자가 선정할 수 있다. 리눅스 부팅 과정을 다 알지는 못하였지만 전반적인 부트로더의 흐름을 간략하게 알 수 있었던것 같다.
Posted by 알 수 없는 사용자
,