1. BIOS/UEFI
시스템 펌웨어가 특정프로그램으로 하드웨어를 점검하는 POST(Power On Self Test)를 진행. 손상된 경우 부팅되지 않음. MBR 파티션의 첫번째 섹터를 읽고 부터 로더(Boot Loader)를 찾음. 이를 메모리에 적재한 뒤 시스템 제어권을 부티 로더에게 전달.
커널(Kernel)
/boot 디렉토리에 존재하는 initramfs 압출파일을 해제. 램 디스크 초기화를 진행하고, 루트 파일 시스템을 임시로 마운트. 시스템 제어권을 init 프로세서에게 전달.
init
PID 1번이 할당되고 필요한 모든 프로세스를 실행. 런 레벨을 결정하고, 스왑이나 네트워크 설정을 초기화. 런 레벨을 실행하고 사용자에게 로그인 화면을 출력함.
1) BIOS ~ systemd
init 프로세스와 동일
default.tartget을 활성화하고 의존성 관계에 있는 유닛들을 모두 활성화
2) default.target
multi-user.target 또는 graphical.target으로 연결될 심볼릭 링크 파일. 어떤 것으로 부팅 진행할 지 결정.
3) graphical.target
init 프로세스의 런 레벨 5와 매핑됨. graphical.target이 활성화되기 전에 multi-user.target이 먼저 활성화되야함.
4) multi-user.target
커멘트 라인을 제공하는 다중 사용자 모드.
init 프로세스의 런 레벨 3과 매핑됨.
multi-user.target이 활성화되기 전에 basic.target이 활성화되야함.
5) basic.target
커널 메시지와 관련된 서비스를 시작하거나 모듈을 로드.
basic.target이 활성화되기 전에 sysinit.target이 활성화되야함.
6) sysinit.target
시스템 마운트, 스왑, 커널의 추가 옵션을 실행하는 서비스를 시작. 활성화되기 전에 local-fs.target이 활성화되야함.
7) local-fs.target
/etc/fstab에 등록된 마운트 정보로 파일시스템을 마운트함. 활성화되기 전에 local-fs-pre.target이 활성화되야함.
systemctl poweroff
systemctl reboot
1) who -r로 현재 사용중인 타겟 유닛 확인
2) default.target에 연결된 타겟 유닛 확인
1) 부트 로드에서 부팅할 커널 항목 선택
2) 'e'키를 눌러 편집모드에서 linux16 마지막에 'rd.break'를 눌러 램 디스크 초기화를 중단함.
3) ctrl+x를 입력해 switch_root#으로 진입함.
4) mount -o remount, rw /sysroot를 통해 읽기쓰기로 다시 마운트 함
5) chroot 명령을 통해 /sysroot를 루트 디렉토리로 변경함. 이때 passwd 명령으로 패스워드를 변경
6) 파일에 대한 레이블정보가 전부 제거되었기 떄문에 touch /.autorelabel 와 같이 빈파일을 생성하여 레이블을 자동으로 부여되도록 함. 레이블 후 해당 파일은 삭제됨.
/etc/fstab 파일은 자동 마운트 시켜주는 파일임.
잘못된 값을 입력하는 경우 발생되는 문제점과 해결방법에 대해 알아봄
1) 유효하지 않은 UUID 값 또는 존재하지 않은 파티션 이름을 지정할 경우
2) 존재하지 않은 마운트 포인트를 지정할 경우
3) 파일시스템 유형이 일치하지 않을 경우
4) 잘못된 마운트 옵션을 지정할 경우