Embedded Linux인 경우 Bootloader 가 두개가 존재하여 부팅을 하고, 있으며, (1st Loader 와 2nd Uboot) 그 다음에 Kernel 과 Filesystem과
mount 후 init 부분들로 구성이 될 것이다.
Kernel의 설정과 Filesystem의 구성 및 설정에 부팅속도가 달라질 것이라고 본다.
- RamDisk를 사용하는 경우 (압축 및 설정부분)
- NAND기반의 Filesystem을 사용하는 경우
- NOR 기반의 Filesystem을 사용하는 경우 (XIP 사용 할 경우)
- eMMC/SD Card 기반으로 사용하는 경우
- USB 기반으로 기반으로 사용하는 경우
- 리눅스 Boot Sequence 그림
일반적으로 Linux Boot 속도의 최적화 하는 방법은 다음과 같다.
- Bootloader 및 Kernel에서 불필요한 설정기능을 제거
- 가능하다면 Kernel의 Module을 Kernel로 설정
- Ramdisk를 사용한다면 사이즈와 압축방법(미압축) 및 필요여부
- Filesystem의 불필요한 Service 제거
- Filesystem의 순서 및 모듈의 올리는 순서 변경
1.2 이외 세부적으로 점검
아래의 기사를 읽고 다음과 같은 부분들을 더 점검해봐야 겠다.
- Network를 사용할 경우 관련설정 확인
- DHCP
- 네트워크 Hot Plug 기능 (uPnP, avahi )
- Hotplug가 지원되는 기능이 불필요하다면 제거 및 점검
- USB / HDMI / 각 Bus Interface 연결지체되는 부분 점검
- WIFI / Bluetooth / RF Interface
- Network Protocol (접속확인이 필요한 것들)
- Hardware 연결 지체되는 부분 점검
- 통신지연이 되는 부분들 점검 (상위와 동일)
- 좀 더 작은 용량의 배포판 사용
- 가능하다면 busybox의 해결
- Web Server 도 역시 작고 빠른 것으로 설정
- 그래픽 환경 설정
- Module에 관련된 사항
Hotplug가 지원되는 Module들이 이와 같은 기능을 할 것 이라고 본다.
가능하다면, Module로써 필요가 없는 것들은 Kernel에 포함 시키자.
아래의 기사는 일반적인 리눅스에서 빠른 Boot 속도를 위한 방법이지만 기존에 가지고 있던 나의 생각에서 다시 점검하게되어서 좋았다.
https://www.techrepublic.com/blog/10-things/10-ways-to-make-linux-boot-faster/