10/02/2016

Linux Boot 속도개선

1. Linux의 일반적인 Boot

Embedded Linux인 경우 Bootloader 가 두개가 존재하여 부팅을 하고, 있으며, (1st Loader 와 2nd Uboot)  그 다음에 Kernel 과 Filesystem과
mount 후 init 부분들로 구성이 될 것이다.

Kernel의 설정과 Filesystem의 구성 및 설정에 부팅속도가 달라질 것이라고 본다.
  1. RamDisk를 사용하는 경우 (압축 및 설정부분)
  2. NAND기반의 Filesystem을 사용하는 경우 
  3. NOR 기반의 Filesystem을 사용하는 경우 (XIP 사용 할 경우)
  4. eMMC/SD Card 기반으로 사용하는 경우 
  5. USB 기반으로 기반으로 사용하는 경우 

  • 리눅스 Boot Sequence 그림 
1.1 일반적인 Boot 속도 최적화 

일반적으로 Linux Boot 속도의 최적화 하는 방법은 다음과 같다.
  1. Bootloader 및 Kernel에서 불필요한 설정기능을 제거
  2. 가능하다면 Kernel의 Module을 Kernel로 설정 
  3. Ramdisk를 사용한다면 사이즈와 압축방법(미압축) 및 필요여부 
  4. Filesystem의 불필요한 Service 제거 
  5. Filesystem의 순서 및 모듈의 올리는 순서 변경

1.2 이외 세부적으로 점검 

아래의 기사를 읽고 다음과 같은 부분들을 더 점검해봐야 겠다.

  • Network를 사용할 경우 관련설정 확인 
  1. DHCP
  2. 네트워크 Hot Plug 기능 (uPnP, avahi )

  • Hotplug가 지원되는 기능이 불필요하다면 제거 및 점검  
  1. USB / HDMI / 각 Bus Interface 연결지체되는 부분 점검 
  2. WIFI / Bluetooth / RF Interface 
  3. Network Protocol (접속확인이 필요한 것들) 
  4. Hardware 연결 지체되는 부분 점검 
  5. 통신지연이 되는 부분들 점검 (상위와 동일) 

  • 좀 더 작은 용량의 배포판 사용 
  1. 가능하다면 busybox의 해결 
  2. Web Server 도 역시 작고 빠른 것으로 설정 

  • 그래픽 환경 설정 
임베디드에서는 많이 QT를 이용하기 때문에, 이 부분은 크게 걱정할 필요는 없을 것 같다.

  • Module에 관련된 사항 
Module로써 필요한  Kernel Driver들이 존재하며, 이들은 문제가 생기면, 다시 올려서 이를 해결해야한다.
Hotplug가 지원되는 Module들이 이와 같은 기능을 할 것 이라고 본다.
가능하다면, Module로써 필요가 없는 것들은 Kernel에 포함 시키자. 

아래의 기사는 일반적인 리눅스에서 빠른 Boot 속도를 위한 방법이지만 기존에 가지고 있던 나의 생각에서 다시 점검하게되어서 좋았다.

  https://www.techrepublic.com/blog/10-things/10-ways-to-make-linux-boot-faster/