리눅스 시스템의 부팅
리눅스의 부팅은 PC전원을 켜는 순간 ~ 로그인 프롬프트가 출력될 때 까지를 말한다.
전원 ON → 바이오스 단계 → 부트 로더 단계 → 커널 초기화 단계 →systemd 서비스 단계→ 로그인 프롬프트 출력
---------pc 부팅------------- ----------------------------------------리눅스 부팅----------------------------------------
우분투는 15.x 버전부터 기존의 1번 프로세스인 init 를 대체한 systemd 서비스를 도입했다.
1) 바이오스 단계 (BIOS : Basic Input / Output System)
- 바이오스는 보통 ROM 에 저장되어 있어 ROM-BIOS 라고 부른다.
- PC 에 장착된 기본적인 하드웨어 (키보드, 디스크 등)의 상태를 확인한 후 부팅 장치를 선택하여 부팅 디스크의 첫 섹터에서 512B 를 로딩한다. (512B 를 마스터 부트 레코드 (MBR) 라고 함) 디스크의 어느 파티션에 2차 부팅 프로그램 (부트 로더)이 있는지에 대한 정보가 들어있다. 메모리에 로딩된 MBR은 부트 로더를 찾아 메모리에 로딩하는 작업까지 수행한다.
- 전원 ON -> 하드웨어 검사-> 부팅 장치 선택 -> MBR로드-> 부트 로더 로드-> 부트 로더 단계
2) 부트 로더 단계
- 리눅스의 대표적인 부트 로더는 GRUB(우분투 사용) 과 LILO 이다.
- 리눅스 커널을 메모리에 로딩하는 역할 (리눅스 커널은 /boot 아래 vmlinuz-버전명 의 형태로 제공된다.
- ls /boot/vm* 명령 실행해보기!
3) 커널 초기화 단계
- 커널은 가장 먼저 시스템에 연결된 메모리, 디스크, 키보드, 마우스 등 장치들을 검사한다.
- 장치 검사 등 기본적인 초기화 과정이 끝나면 커널은 fork를 사용하지 않고 생성되는 프로세스와 스레드를 생성한다.
- 이 프로세스들은 메모리 관리 같은 커널의 여러 가지 동작을 수행한다.
- 이들 프로세스는 일반적인 프로세스와 구분되도록 [ ] 대괄호로 표시하며, 주로 PID가 낮게 배정된다.
4) systemd 서비스 단계
- 우분투에서 systemd 서비스는 기존의 init 스크립트를 대체한 것으로 다양한 서비스를 동작한다.
- 각 서비스가 시작하는 과정은 화면에 메시지로 출력된다.
- 부팅 후 메시지 확인 ) dmesg 명령이나 more /var/log/boot.log명령을 통해 확인 가능
5) 로그인 프롬프트 출력
- GDM (GNOME display manager) 를 동작시키고, 로그인 프롬프트 출력!
'리눅스프로그래밍' 카테고리의 다른 글
우분투 리눅스 - 우분투 패키지 (0) | 2020.06.20 |
---|---|
우분투 리눅스 - systemd 서비스 (0) | 2020.06.04 |
우분투 리눅스 - 파일 시스템의 구조 (0) | 2020.05.31 |
우분투 리눅스 - 파일시스템의 종류 (0) | 2020.05.30 |
우분투 리눅스 - 포그라운드, 백그라운드 프로세스와 작업 제어 (0) | 2020.05.23 |