리눅스 시스템의 부팅 |
- 리눅스 시스템의 부팅 과정은 크게 'PC 부팅' 과 '리눅스 부팅'으로 나누어짐. - 리눅스가 철치된 하드웨어(예:PC)의 부팅과 리눅스 운영체제의 부팅 절차로 구분 |
리눅스 부팅 과정 |
|||||
전원 ON |
바이오스 단계 |
부트 로더 단계 |
커널 초기화 단계 |
init 실행 단계 |
로그인 프롬프트 출력 |
PC 부팅 |
리눅스 부팅 |
바이오스 단계 |
- PC 의 전원 스위치를 켜서 부팅시 제일 먼저 바이오스(BIOS, basic input/output system)가 동작 - 바이오스는 보통 ROM에 저장되어 있어 흔히 ROM-BIOS라고 부름 - 바이오스는 PC에 장착된 기본적인 하드웨어(키보드, 디스크 등)의 상태를 확인한 후 부팅 장치를 선택하여 부팅 디스크의 512바이트를 로딩 - 이 512바이트를 마스터 부트 레코드(Master Boot record, MBR)이라고 함 - 디스크의 어느 파티션에 2차 부팅 프로그램(부트 로더)이 있는지에 대한 정보가 저장 - 메모리에 로딩된 MBR은 부트 로더를 찾아 메모리로 로딩하는 작업까지 수행
|
바이오스 단계의 세부 동작 |
|||||
전원 ON |
하드웨어 검사 |
부팅 장치 선택 |
MBR 로드 |
부트 로더 로드 |
부트 로더 단계 |
바이오스 단계 |
부트 로더 단계 |
- 바이오스 단계에서 MBR은 부트 로더를 찾아 메모리에 로딩 - 부트 로더는 일반적으로 여러 운영체제 중에서 부팅할 운영체제를 선택할 수 있도록 메뉴를 제공 - 리눅스의 대표적인 부트 로더는 'GRUB'와 'LILO' 임. - 우분투에서는 부트 로더로 'GRUB' 을 사용 - 기본적으로 멀티 부팅이 아닐 경우 'GRUB' 는 메뉴를 출력하지 않고 바로 작업을 진행 - 부팅할 때 'GRUB' 메뉴를 출력하려면 '/etc/default/grub' 파일을 수정해야함. - '/etc/default/grub' 파일을 열고 GRUB_HIDDEN_TIMEOUT=0 을 주석처리. - 'GRUB_TIMEOUT=10' 은 GRUB 메뉴가 출력되는 시간(단위 : second) => 시간이 지나면 자동으로 부팅과정 진행 =================================================================================== sjw-lenovo@sjwlenovo-Lenovo-U310:~$ sudo vi /etc/default/grub => 'grub' 파일 내용 # If you change this file, run 'update-grub' afterwards to update - '/etc/default/grub' 파일을 수정 후 'sudo update-grub' 명령을 실행하여 변경된 내용을 적용 =================================================================================== sjw-lenovo@sjwlenovo-Lenovo-U310:~$ sudo update-grub =================================================================================== - 적용후 재부팅시 GRUB 메뉴가 출력됨(GRUB_HIDDEN_TIMEOUT=0 을 주석처리했을 경우) - 부트 로더는 리눅스 커널에 메모리에 로딩하는 역할을 수행 - 리눅스 커널은 /boot 디렉터리 아래에 'vmlinux-버전명'의 형태로 제공 =================================================================================== sjw-lenovo@sjwlenovo-Lenovo-U310:~$ ls /boot/vm* |
커널 초기화 단계 |
- 부트 로더에 의해 메모리에 로딩된 커널은 가장 먼저 시스템에 연결된 메모리, 디스크, 키보드, 마우스 등의 장치를 검사 - 리눅스를 처음 시스템에 설치할 때 사용 가능한 하드웨어 정보를 미리 확인했다가, 부팅할 때 이 장치들이 사용 가능한 상태로 유지되고 있는지 확인하는 것 - 장치 검사 등 기본적인 초기화 과정이 끝나면 커널은 일반적으로 프로세스를 생성하는 방식인 'fork'를 사용하지 않고 생성되는 프로세스와 쓰레드를 생성 - 이 프로세스들은 메모리 관리와 같은 커널의 여러 가지 동작을 수행 - 이런 커널 프로세스의 개수와 종류는 리눅스의 버전과 종류에 따라 다름. - 일반적인 프로세스와 구분되도록 대괄호([ ])로 표시 - 주로 PID 번호가 낮게 배정 - 'ps -ef | more' 명령으로 확인 =================================================================================== sjw-lenovo@sjwlenovo-Lenovo-U310:~$ ps -ef | more =================================================================================== - 커널 프로세스가 생성되면 커널이 수행할 작업이 끝나고, 'init' 실행 단계를 동작시킴. |
init 실행 단계 |
- init 실행 단계에 이르면 리눅스가 본격적으로 동작하기 시작했다고 생각하면 됨 - init 실행 단계에서는 다양한 서비스를 동작시킴 - 각 서비스가 시작하는 과정이 화면에 메시지로 출력되는데, 우분투에서는 기본적으로 이 메시지를 보이지 않도록 하고 이미지를 출력시킴. - 부트 스플래시(Boot Splash)라고 하는 이 이미지는 리눅스 배포판에 따라 다르게 출력 - 부트 스플래시 화면이 진행 중일 때 'Alt + D' 키를 누르면 메시지가 출력되는 화면으로 전환 - 부팅할 때 메시지가 출력되도록 하려면 '/etc/default/grub' 파일에서 'GRUB_CMDLINE_LINUX_DEFAULT="quiet splah" 를 찾아 quiet 를 삭제하고 'sudo update-grub' 을 실행하여 변경된 내용을 적용하면 됨 - 또는 부팅 후 'dmesg' 명령이나 'more /var/log/boot.log' 명령으로 확인 가능 - dmesg 명령으로 출력되는 메시지에는 데몬의 시작과 관련된 것뿐만 아니라 하드웨어 검사와 관련된 것도 모두 포함 =================================================================================== sjw-lenovo@sjwlenovo-Lenovo-U310:~$ dmesg | more =================================================================================== - 전통적으로 유닉스에서는 init 프로세스가 서비스를 실행시킴. - 따라서 init 프로세스는 처음 생성된 프로세스로 PID가 1번임. |
'OS > Linux - Ubuntu' 카테고리의 다른 글
[Linux - 리눅스 / Ubuntu - 우분투] init프로세스와 런레벨 (0) | 2015.04.17 |
---|---|
[Linux - 리눅스 / Ubuntu - 우분투] init 프로세스 - init, upstart (0) | 2015.04.16 |
[Linux - 리눅스 / Ubuntu - 우분투] 파일 시스템과 디스크 관리 - 요약 (0) | 2015.04.13 |
[Linux - 리눅스 / Ubuntu - 우분투] 파일 시스템 검사 및 복구 - fsck, e2fsck, badblocks, dumpe2fs (0) | 2015.04.13 |
[Linux - 리눅스 / Ubuntu - 우분투] 디스크 관리 - df, du (0) | 2015.04.12 |