운영체제 또는 오퍼레이팅 시스템(OS)은 시스템 하드웨어를 관리할 뿐 아니라 응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시슽메 서비스를 제공하는 시스템 소프트웨어.
- 프로세스 관리.
- 사용자에게 멀티테스킹 환경 제공.
1. 운영체제의 부팅 과정
(1) BIOS
- Health Check
- 시스템에 전원이 공급되면 가장 먼저 메인보드의 ROM-BIOS에서 BIOS 프로그램을 자동 실행하여 시스템 제어권을 가지고 장착된 H/W에 대한 기본적인 점검과 인식을 한다. 이 과정이 모두 끝나고 나면 ROB-BIOS는 하드디스크의 첫 번째 부트섹트인 MBR에 있는 부트로더에게 그 제어권을 넘겨준다.
- POST(Power On Self Test)
> CPU, Memory, Graphic Card, Key-board, Mouse 등 각종 장치의 이상 유무를 검사하고 하드웨어들을 초기화.
(2) MBR
- 소프트웨어 부팅 과정 실행
- 부팅할 디바이스 선택.
(3) GRUB or GRUB2
- Bootloader 라는 부분의 별도 소프트웨어를 읽어서 어느 영역으로 부팅을 해줄 것인지를 선택. (멀티 스테이지 부트)
- GRUB(or GRUB2)은 커널 이미지(vmlinuz kernel image)를 로드하고 initrd(Ram Disk Init) 이미지를 실행시키며 시스템 제어권을 kernel에게 넘겨준다.
(4) Kernel
- 각종 H/W 디바이스들을 초기화
- 운영체제가 시작.
- grub.cfg 에서 "root=" 로 표기된 루트 파일 시스템을 마운트하고, /sbin/init 프로그램(혹은 systemd)을 실행한다.
- /sbin/init 프로그램(혹은 systemd)은 리눅스가 부팅된 후 최초로 실행되는 프로세스로써 PID가 자동으로 1번이 지정된다.
- 이는, 리눅스를 시작하고 종료시키는 모든 과정을 통제한다.
(5) Init / Systemd
- 운영체제의 핵심 기능이 메모리에 올라가게되면, 그 다음에 시스템에 필요한 여러가지 응용 소프트웨어가 Init이라는 프로세스로부터 시작.
- 시스템 초기화 및 관리 설정 파일들을 실행한다.
- /etc/inittab 파일을 참조하여 설정된 Runlevel을 확인할 수 있다.
(runlevel 목록)
0 - 시스템 종료
1 - 싱글 유저 모드 (안전모드)
싱글 유저 모드 부팅 실패 시, 로그인 분실 시 사용
2 - 네트워크 기능이 없는 다중 사용자 모드
3 - 네트워크 기능이 있는 다중 사용자 모드
4 - 사용하지 않음 (Unused)
5 - GUI환경으로 부팅 ( X-Windows )
6 - 시스템 재부팅
※ 리눅스 배포판과 무관하게 모든 리눅스 계열 공통 부팅 과정이다.
2. CentOS 부트로더(BootLoader) // GRUB(GRand Unified Bootloader)
부트로더란 리눅스가 부팅되기까지 부팅의 전과정을 진행하는 부팅 전문프로그램을 의미한다.
- GRUB 초기화면에서 "c" 입력 -> GRUB(Command-line) 모드로 진입
> bash쉘에서 사용했던 명령어와 거의 유사 형태의 명령어들을 사용 가능.
- GRUB 초기화면에서 "e" 입력 -> 부팅메뉴 편집 모드로 진입
> 리눅스 시스템의 root 패스워드를 잃어버리는 등 정상적인 부팅이 되지 않아 불가피하게 싱글모드로 부팅을 해야하 는 경우가 종종 있다.
(grub 버전 확인)
$ rpm -qa | grep grub
/boot/grub
- grub.cfg <- /etc/grub.d/* 내용들과 /etc/default/grub 을 통해 생성.
> grub.cfg가 생성될 때 GRUB 메뉴 설정 세팅들이 /etc/default/grub 로부터 불러들여진다.
- 대부분 운영 체제의 커널을 불러올 수 있으며, 인자를 넘겨줄 수도 있다.
- 사용자 정의 부팅 기능.
- 파일 시스템 직접 접근 기능.
GRUB 패키지를 설치한 다음에는 grub-install 이라는 명령어로 GRUB 관련 파일을 설치할 수 있다.
grub-intsall 명령어는 /boot/grub/menu.lst 파일의 설정 내용을 부트디바이스의 MBR에 GRUB를 설치하는 명령어.
3. 운영체제의 부팅 프로세스 - 파일시스템 마운트
/etc/fstab
- 리눅스 운영체제가 부팅 과정을 거치면서 파일시스템 마운트 정보들이 담긴 파일의 위치.
4. Init vs Systemd
5. 운영체제의 부팅 프로세스
※ 같은 역할을 하는 스크립트의 경우 init 명령어 보다는 systemd 명령어를 사용하는 것을 권장(systemctl).
※ CentOS7 버전에서는 init 프로세스가 사라지고, systemd가 모든 프로세스를 관리한다.
6. 파일시스템 및 디렉토리 구조
'OS > Linux Server' 카테고리의 다른 글
[리눅스커널이야기] Load Average 와 시스템 부하 (0) | 2022.07.26 |
---|---|
[리눅스커널이야기] top 을 통해 살펴보는 프로세스 정보들(2) (0) | 2022.07.26 |
[리눅스커널이야기] top 을 통해 살펴보는 프로세스 정보들 (0) | 2022.04.07 |
[Shell Programming] 10. Backup (0) | 2022.03.17 |
[Shell Programming] 9. Looping (0) | 2022.03.11 |