티스토리 뷰
전원 ON -> 바이오스 단계 -> 부트 로더 단계 -> 커널 초기화 단계 -> systemd 서비스 단계 -> 로그인 프롬프트 출력
┗━━━━PC 부팅━━━━┛┗━━━━━━━━━━━━━━━━리눅스 부팅━━━━━━━━━━━━━━━━┛
1. 바이오스 단계
바이오스는 PC에 장착된 기본적인 하드웨어(키보드, 디스크 등)의 상태를 확인한 후 부팅 장치를 선책하여 부팅 디스크의 첫 섹터에서 512B인 로딩한다. 이 512B를 마스터 부트 레코드라고 하며, 어느 파티션에 2차 부팅 프로그램(부트 로더)이 있는지에 대한 정보가 저장되어 있다.
2. 부트 로더 단계
바이오스 단계에서 MBR는 부트 로더를 찾아 메모리에 로딩하며, 부트 로더는 여러 운영체제 중에서 부팅할 운영체제를 선택할 수 있도록 메뉴를 제공한다. 리눅스의 대표적인 부트 로더는 GRUB와 LILO으로, 우분투에서는 부트 로더로 GRUB를 사용한다. 기본적으로 GRUB 메뉴를 출력하지 않고 부팅하는데, 메뉴를 출력하려면 /etc/default/grub 파일을 수정해야 한다. 부트 로더는 리눅스 커널을 메모리에 로딩하는 역할을 수행한다. (리눅스 커널은 /boot에 존재. 업데이트하면 커널이 추가됨)
3. 커널 초기화 단계
커널은 가장 먼저 시스템에 연결된 메모리, 디스크, 키보드, 마우스 등 장치들을 검사한다. 장치 검사 등 기본적인 초기화 과정이 끝나면 커널은 fork(일반적으로 프로세스를 만드는 방식)를 사용하지 않고 프로세스와 스레드 생성하며, 이 프로세스들은 메모리 관리 같은 커널의 여러 가지 동작을 수행한다. 이 프로세스는 일반적인 프로세스와 구분되도록 대괄호([ ])로 표시하며, 주로 PID 번호가 낮게 배정되어 있다.
4. systemd 서비스 단계
기존의 init 스크립트를 대체한 것으로, 다양한 서비스를 동작시킨다. 각 서비스가 시작하는 과정은 화면에 메시지로 출력되는 대신 부트 스플래시(boot splash) 이미지를 출력한다. 부트 스플래시 화면이 바로 종료되고 메시지가 출력되는 화면으로 전환된다. 부팅 메시지를 출력하려면 /etc/default/grub 수정해야 한다. 이 메시지는 dmesg 명령이나 more /var/log/boot.log 명령으로 확인할 수 있다.
유닉스에서는 init 프로세스가 처음 생성된 프로세스로서 PID가 1번이지만, 우분투 15.04 버전부터 init 대신 systemd를 사용하기 시작했다. (init 프로세스가 systemd 파일의 심벌릭 링크로 설정)
5. 로그인 프롬프트 출력
마지막으로 그래픽 로그인 시스템인 GDM(GNOME display manager)을 동작시키고, 로그인 프롬프트 출력한다.
'cs > linux' 카테고리의 다른 글
[리눅스/Linux] 리눅스 시스템 종료 방법 (0) | 2021.01.27 |
---|---|
[리눅스/Linux] init 프로세스, 런레벨 개념/변경, systemd 개념/명령(systemctl, telinit, init) (0) | 2021.01.27 |
[리눅스/Linux] 디스크 사용량 확인(df, du), 파일 시스템 검사/복구(fsck, e2fsck, badblocks, dumpe2fs) (0) | 2021.01.26 |
[리눅스/Linux] 리눅스에 장치 연결하기(마운트) (0) | 2021.01.26 |
[리눅스/Linux] 마운트, 마운트 포인트, 마운트 설정 파일(/etc/fstab), 마운트 관련 명령(mount, umount) (0) | 2021.01.26 |