반응형
Linux OS Booting Process
리눅스 부팅 과정
- Power on
- BIOS에서 지정된 부트 드라이브로 부팅 시작
- 부트 섹터 로드
- GRUB 작동
- 커널 이미지 로드
- 파일 시스템 마운트
- 시스템 초기화 프로그램(init) 작동
- 로그인
부트로더가 나올 때까지의 과정
- 시스템 전원이 시작되면 시스템에 이상이 없는지 확인하고(POST), 이상이 없는 경우 BIOS에서 지정한 부팅 순서에 따라 해당 드라이브로 부팅이 이루어진다.
- 해당 드라이브의 첫번째 섹터인 부트 섹터를 읽어들이는데, 이를
마스터 부트 레코드
(MBR
:Master Boot Record
)라 한다. - 리눅스의 경우
GRUB
가MBR
에 저장되어 있다.
커널 이미지 로드
- 부트로더에서 리눅스가 선택되면 커널 이미지(
/boot/vmlinuz-version
)가 작동한다. - 커널 이미지는 압축되어 있는 상태이므로
swapper
라는 프로그램에 의해 압축이 풀어지고, 메모리, 디스크 등 여러 하드웨어들을 체크하여 이에 대한 정보를 화면에 보여준다.- 화면으로 출력되는 하드웨어 정보를 보고 싶다면 다음의 명령어를 이용한다.
루트 파일 시스템 마운트$ dmesg | more $ cat /var/log/dmesg
- 화면으로 출력되는 하드웨어 정보를 보고 싶다면 다음의 명령어를 이용한다.
- 커널은 루트 파일시스템을 마운트 하는데, 이 때 부트로더의 설정파일(
/boot/grub/menu.lst
)에 있는root=
옵션으로 명시된 파티션을 루트 파일 시스템으로 마운트 시킨다. - 이 때 루트 파티션이 잘못 지정되거나, 루트 파티션이 변경되었음에도 이 정보가 갱신되지 않았을 때 커널에서 파일 시스템 마운트 과정이 실패하고 결국 패닉 에러를 보이며 부팅이 실패한다.
시스템 초기화 프로세스 init과 inittab
- 루트 파일 시스템이 마운트된 후 제일 먼저 시작되는 프로세스인
init
은 프로세스 번호 1번을 갖는다. - 시스템은
init
프로세스에 의해 초기화가 이루어진다. 즉, 로그인 프롬프트가 나오기 전까지 파일 시스템 점검, 서비스 프로세스 관리, 가상 콘솔 접속 관리, 실행레벨 관리 등 사용자의 리눅스 사용환경을 위한 초기화 작업을 실행한다. init
프로게스가 실행될 때 제일 먼저 읽어들이는 파일이/etc/inittab
파일이며,inittab
파일의 설정에 따라 프로세스들을 실행시킨다.
실행 레벨(Run Level)
/etc/inittab
내용을 보면 실행 레벨(Run level)에 대한 설정 값이 보인다. 실행 레벨은 시스템이 어떤 모드로 작동될지 결정하는 실행 값을 말한다.- 실행 레벨의 내용은 아래와 같다.
0
: 시스템 중지1
: 단일 자용자 모드(싱글 모드로 쉘로 바로 부팅)2
: NFS 기능을 제외한 다중 사용자 모드3
: 다중 사용자 모드(콘솔 모드)4
: 내용 없음(사용하지 않는 값)5
: GUI의 X - Window로 부팅6
: 시스템 리부팅
- 위의 런레벨을 파일의 제일 아래에
id:(런레벨 값):initdefault
로 적어주면 시스템 부팅 시 해당 런레벨로 실행된다.- 참고로
/etc/inittab
파일을 수정하지 않고telinit
명령어로 원하는 런레벨로 호출할 수 있다.- 예)
telinit 5
: X-Window의 런레벨 5 호출
- 예)
- 참고로
시스템 초기화
- 시스템이 부팅되면
init
프로세스는/etc/rc.d/rc.sysinit
스크립트를 실행시켜 네트워크 설정, 호스트 이름 설정, 하드디스크 최적화 등의 작업을 수행하고/etc/inittab
에 설정된 런레벨에 따라 해당하는/etc/rc.d/rc[0-6].d
스크립트를 실행한다.- 즉 런레벨이 3으로 설정되어 있다면
/etc/rc.d/rc3.d
를 실행한다.
- 즉 런레벨이 3으로 설정되어 있다면
/etc/rc.d/rc[0-6].d
스크립트는 런레벨에 맞춰 필요한 서비스 데몬을 실행하거나 중지하는 일을 맡는다.- 예)
/etc/rc.d/rc3.d
디렉토리 안에는 많은 스크립트 파일이 있는데, 스크립트에서S
는 해당 런레벨에서 시작해야 하는 프로세스들을,K
는 해당 런레벨에서 죽여야 하는 프로세스를 의미한다. S
나K
뒤에 있는 숫자는 초기화 때 실행되는 순서를 의미한다.
- 예)
반응형
'운영체제 > LINUX' 카테고리의 다른 글
[Linux] Linux Basic (리눅스 기초) (0) | 2021.05.24 |
---|---|
[Linux] Linux Commands Cheat Sheet (Linux 명령어 정리) (0) | 2021.05.17 |
[Linux] Capabilities (0) | 2019.12.17 |
[Linux] 사용자(User) 네임스페이스 (0) | 2019.12.16 |
[Linux] PID 네임스페이스 (0) | 2019.12.14 |