[정보보안기사/리눅스] 리눅스 부팅(Booting)
Boot Master
컴퓨터 시스템에 전원이 들어왔을 때 가장 처음 하는 것은 보조 기억 장치에 있는 운영체제의 커널을 주기억 장치에 적재하는 작업이다. 이렇게 보조 기억 장치에 있는 커널을 주기억 장치에 올리는 것은 로더(Loader
)라는 프로그램이 수행한다
리눅스에서 이러한 로더의 역할을 수행하는 것이 LILO(LInux LOader)이다. 즉, LILO는 리눅스의 부트로더이다. LILO는 실행 시 /etc/lilo.conf
라는 파일을 읽어 들여서 실행된다
최근에는 리눅스 부팅에 LILO보다는 GRUB 이라는 부트로드를 사용한다. GRUB은 로더의 역할을 수행하는 것으로 /boot/grub/grub.conf
설정파일을 읽어서 가동된다
GRUB
의 특징- 부트정보를 사용자가 임의로 변경할 수 있음
- 여러 운영체제를 사용할 수 있는 멀티부팅 지원
- 커널 경로 및 파일명만 알고 있다면 부팅이 가능
/boot/grub/grub.conf 설정 값 | 설명 |
---|---|
default=0 | 부트 순서를 지정하는 번호로 멀티부트의 경우 운영체제 레이블 번호를 선택 |
timeout=0 | 지정된 시간이 경과되면 default로 지정된 운영체제로 부팅 |
splashimg=(hd0,0) /grub/splash.xpm.gz |
부팅 이미지를 지정하는 부분 |
hiddenmenu | 부트로더를 보여주지 않음 |
title Fedora | 부팅되는 부트 엔트리를 의미 |
부팅 순서
- 리눅스의 서버 전원을 켜면 ROM BIOS를 읽고 디스크의 MBR(Master Boot Record)에 있는 부트로더가 실행
- 부트로더는 보조 기억 장치에 저장되어 있는 리눅스 커널을 찾고 실행
- 리눅스 커널은 하드웨어를 확인하고 root의 읽기 전용으로 마운트를 수행
- 디스크 검사하고 root의 쓰기 전용으로 다시 마운트 수행
- 리눅스 커널은 init 프로세스를 실행하고 PID 1번을 할당
- init 프로세스는 자신의 설정파일인
/etc/initab
파일을 읽어서 디바이스 및 프로세스를 활성화 - init 프로세스의 작업 수행은 리눅스의 Run 레벨에 따라 다르게 부팅된다
Run Level
- 0 : PROM 감사 단계
- 1 : 관리상태의 단계. 사용자 로그인의 접근이 불가능한 단일 사용자 단계로 여러 개의 파일 시스템이 로드되어 있음. 암호를 변경할 때 사용
- 2 : 공유된 자원을 갖지 않은 다중 사용자 단계
- 3 : 기본 실행 단계로 공유 자원을 가진 다중 사용자 단계, 텍스트 유저 모드
- 4 : 현재 사용되지 않음
- 5 : Level3 으로 기동 후에 그래픽 모드인 X-Windows 실행
- 6 : 재부팅 단계로 실행단계 3의 상태로 재부팅
디렉터리 구조
디렉터리는 운영체제의 파일 관리 구조로 사용자는 디렉터리를 만들어서 파일을 저장하고 사용할 수 있다. 디렉터리는 리눅스를 설치하면 기본적으로 생성되는 것이 있으며 해당 디렉터리는 그 용도가 정해져 있다
리눅스 디렉터리는 계층형 파일 시스템으로 이루어져 있으며 사용자별로 자신의 디렉터리를 생성하여 사용할 수 있다. 특히 bin
은 기본적인 실행파일을 가지고 있고 boot
는 리눅스 부트 프로그램인 LILO 파일을 가지고 있다.
etc
디렉터리는 환경설정에 관련된 파일을 가지고 있어서 사용자 패스워드 정보를 가지고 있는 passwd 파일, shadow 파일과 프로토콜 및 서비스 정보를 보유를 protocol, services 파일 등을 가지고 있다
리눅스는 다중 사용자를 제공하고 있으므로 각 사용자별로 디렉터리를 생성한다. 사용자 디렉터리는 home
디렉터리 하위에 생성된다
디렉터리 구조 | 설명 |
---|---|
/ | 루트 디렉터리 |
/bin | 기본적인 실행 명령 |
/boot | LILO 등 부팅에 관련된 파일 |
/dev | 장치 파일 모음 |
/dev/fd | 플로디 디스크 |
/dev/hda | 마스트 IDE 하드 디스크 |
/dev/sda | SCSI 및 SATA 하드 디스크 |
/dev/cdrom | CD ROM 드라이버 |
/dev/mouse | 마우스 |
/dev/hdb | 슬레이브 IDE 하드 디스크 |
/dev/hd | 하드 디스크 |
/etc | 시스템 설정 파일 |
/home | 사용자 홈 디렉터리 |
/lib | C 라이브러리 |
/mnt | 임시 마운트용 디렉터리 |
/proc | 시스템 정보를 가진 가상 디렉터리 |
/proc/buddyinfo | 버디 할당자 정보 |
/proc/cmdline | 시스템 부팅 중 커널에 제출된 명령 내용 |
/proc/cpuinfo | 시스템 CPU 정보 |
/proc/devices | 디바이스들의 목록 |
/proc/diskstats | 디스크의 상태 및 파티션 정보 |
/proc/dma | DMA 채널 |
/proc/filesystems | 파일 시스템의 목록 |
/proc/interrupts | 인터럽트에 대한 통계 |
/proc/iomem | 할당된 메모리 영역 |
/proc/ioport | 입출력 포트 정보 |
/proc/kallsyms | 심볼들의 목록 |
/proc/loadavg | CPU 부하와 관련된 정보 |
/proc/locks | 잠금 파일 |
/proc/mdstat | RAID 시스템의 정보를 제공 |
/proc/meminfo | 시스템 메모리 정보 |
/proc/modules | 사용중인 모듈들 |
/proc/partitions | 파티션 정보 |
/proc/slabinfo | 슬랩 할당기 통계 정보 |
/proc/swaps | 스왑 파티션에 대한 정보 |
/proc/uptime | 시스템이 부팅된 이후의 시간 |
/root | 루트 사용자의 홈 디렉터리 |
/sbin | 시스템 관리용 실행 파일 |
/tmp | 임시파일 디렉터리 |
/usr | 애플리케이션이 설치되는 디렉터리 |
/var | 시스템에서 운영되는 임시파일 및 로그파일 |
댓글남기기