Power On
BIOS 펌웨어 동작
펌웨어(firmware)란 하드웨어의 기본적인 구동 및 제어를 담당하는 특수 용도의 소프트웨어로, ROM(read-only memory)에 기록된다.
/boot/grub/grub.cfg
경로에 설정파일이 위치한다./boot/vmlinuz-x.x.x-xx
에 위치해 있다./sbin/init
프로그램 실행SysVinit
-> Upstart
-> systemd
순서대로 사용되어졌고 최근에는 거의 systemd
를 사용한다./etc/inittab
설정파일을 읽어 Runlevel을 결정SysVinit, Upstart, systemd
SysVinit
은 Runlevel이라고 하는 시스템 상태를 정의하고 모든 프로세스와 서비스를 Runlevel에 맞춰 실행한다. 초기의 init프로그램이다.
Upstart
는SysVinit
을 대체하기 위해 만들어졌다. Runlevel을 사용하는 대신 시스템 이벤트를 사용하여 서비스를 실행/중지했다.
systemd
은 가장 최근의 init프로그램이다. Runlevel 대신 target이라는 개념을 사용하고 있다. 순차적으로 init을 수행한 SysVinit과 달리 병렬로 서비스를 실행하여 부트 시간을 단축할 수 있다.
Runlevel과 Target의 관계
각 runlevel은 특정 systemd-target과 매핑된다.
*
로 표시된 부분은 default 설정이다.
Power On
UEFI 부트 매니저 작동 (efibootmgr)
/boot/efi/EFI/ubuntu
경로에 Boot loader를 가지고 있다.grub.cfg
: GRUB 설정파일grubx64.efi
: Boot loader 파일/sbin/init
프로그램 실행systemd
가 실행되어 default target으로 지정된 graphical.target
(Ubuntu 22.04.3 LTS 버전 기준) 에 정의된 서비스와 스크립트를 실행한다.default target
default target을 정의하는 파일은
/etc/systemd/system/default.target
이다. 이 경로에 없다면/lib/systemd/system/default.target
파일에서 default target정보를 확인할 수 있다. 아래와 같이 default target으로 설정된graphical.target
을 가리키고 있다.
아래는graphical.target
파일로, 어떤 의존성이 있는지, 어떤 서비스를 실행해야 하는지 정의한다.
https://velog.io/@markyang92/boot
https://blog.kubesimplify.com/linux-boot-process-simplified
https://www.computernetworkingnotes.com/linux-tutorials/differences-between-sysvinit-upstart-and-systemd.html
https://yonlog.tistory.com/59
https://www.baeldung.com/linux/boot-process