Embedded Linux Kernel 설정: Kernel Configuration
Embedded Linux를 개발할 때 가장 중요한 작업 중 하나는 Kernel Configuration입니다. 이 과정은 시스템의 요구사항에 맞는 기능과 드라이버를 선택하여 Kernel 설정 파일(.config)을 작성하고 조정하는 작업을 포함합니다. 이번 포스팅에서는 Rockchip RK3399 플랫폼을 예제로, Embedded 환경에 적합한 Kernel 설정 과정을 설명합니다.
Kernel Configuration 기본 개념
Kernel Configuration은 Linux 커널이 특정 시스템에 최적화되도록 설정을 조정하는 단계입니다. .config
파일은 이러한 설정의 결과물로, 컴파일 시 커널이 어떤 기능을 포함할지를 정의합니다.
주요 설정 방법
menuconfig
: 터미널에서 TUI 기반으로 설정을 조정.xconfig
: GUI 기반으로 설정.savedefconfig
및defconfig
: 기본 설정을 저장하고 로드.
준비 작업
1. Cross-Toolchain 설치
Embedded Linux 개발에는 타겟 보드용 크로스 컴파일러가 필요합니다. RK3399용 툴체인은 gcc-linaro에서 다운로드할 수 있습니다.
# Ubuntu 기준 툴체인 설치 예시
tar -xvf gcc-linaro-*.tar.xz -C /opt
echo "export PATH=/opt/gcc-linaro/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
2. Kernel 소스코드 다운로드
Rockchip에서 제공하는 커널 소스를 클론합니다.
git clone https://github.com/rockchip-linux/kernel.git -b stable-4.4 rk3399_kernel
cd rk3399_kernel
3. 기본 설정 파일 가져오기
RK3399 보드의 기본 설정 파일을 가져옵니다.
make ARCH=arm64 rockchip_defconfig
Kernel Configuration 조정
1. menuconfig
실행
커널 설정을 조정하기 위해 menuconfig
를 실행합니다.
make ARCH=arm64 menuconfig
menuconfig
를 실행하면 터미널 기반의 인터페이스가 나타납니다. 여기에서 설정을 추가하거나 제거할 수 있습니다.
2. Embedded 환경에 필요한 설정
Embedded 환경에서는 아래와 같은 설정이 중요합니다:
(1) 프로세서 관련 설정
System Type > CPU
에서 ARM Cortex-A72 및 A53 아키텍처를 활성화.
(2) 전원 관리
Power management options
에서 Suspend 및 Hibernate 기능 활성화.
(3) 파일 시스템
- 크기가 작은 파일 시스템을 위해 SquashFS 및 Ext4 지원 추가.
File systems --->
<*> The Extended 4 (ext4) filesystem
<*> SquashFS 4.0 - Squashed file system support
(4) 네트워크
- IoT 및 네트워크 연결을 위해 IPv6, Ethernet, Wi-Fi 관련 드라이버 활성화.
Networking support --->
<*> Networking options --->
[*] IPv6 protocol
(5) 디바이스 드라이버
- RK3399의 GPU 및 기타 하드웨어 드라이버 활성화.
Device Drivers --->
<*> Graphics support --->
<*> DRM support for Rockchip devices
3. 설정 저장
설정을 완료한 후 저장합니다. menuconfig
에서 저장하면 .config
파일이 생성됩니다.
최적화된 설정 저장 및 로드
1. savedefconfig
로 기본 설정 저장
defconfig
파일을 생성하여 나중에 쉽게 설정을 복원할 수 있습니다.
make ARCH=arm64 savedefconfig
defconfig 파일은 현재 디렉토리에 `defconfig` 이름으로 저장됩니다.
2. 저장된 설정 로드
기존 설정을 로드하려면 다음 명령을 실행합니다.
make ARCH=arm64 defconfig
defconfig 파일을 기반으로 .config를 복원합니다.
Kernel 빌드
설정이 완료되면 커널을 빌드합니다.
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc)
생성된 커널 이미지는 아래 경로에 저장됩니다:
arch/arm64/boot/Image
커널을 타겟 보드에 배포
1. 커널 이미지 복사
RK3399 보드의 부팅 파티션으로 커널 이미지를 복사합니다.
sudo dd if=arch/arm64/boot/Image of=/dev/mmcblk0p1 bs=4M
2. 재부팅 및 확인
보드를 재부팅하고 새 커널이 올바르게 작동하는지 확인합니다.
dmesg | grep Linux
결론
이번 포스팅에서는 Embedded Linux Kernel 설정과 조정 과정을 설명했습니다. RK3399 플랫폼을 기준으로 하여 실제로 적용 가능한 설정 예제와 빌드 방법을 소개했으니, 이를 참고하여 여러분의 Embedded Linux 개발에 활용해 보세요.
'Linux > Kernel Driver' 카테고리의 다른 글
Linux Kernel 모듈 기본 (0) | 2025.03.16 |
---|---|
Embedded Linux에서 Root Filesystem 생성하기 (0) | 2025.03.15 |
Embedded Linux Kernel: Bootloader 설정 및 커스터마이징 (0) | 2025.03.13 |
Board Support Package (BSP) 이해 (0) | 2025.03.12 |
Embedded Linux Kernel 포팅 기본 (0) | 2025.03.11 |