Embedded Linux Kernel 빌드 환경 구축하기
Embedded 시스템에서 Linux Kernel을 빌드하고 포팅하는 것은 복잡한 작업일 수 있지만, 올바른 방법을 따르면 비교적 쉽게 설정할 수 있습니다. 이번 포스팅에서는 Rockchip RK3399을 기준으로 Kernel 소스 코드 다운로드부터 빌드 환경 구성까지의 과정을 다룹니다.
1. Linux Kernel 빌드 환경 구축
Linux Kernel을 빌드하려면 적절한 개발 환경이 필요합니다. 아래는 Ubuntu를 사용하는 경우의 환경 설정 과정입니다.
1.1 필수 패키지 설치
sudo apt update
sudo apt install -y build-essential libncurses-dev bison flex libssl-dev libelf-dev
위 명령어를 실행하여 Linux Kernel 빌드에 필요한 패키지를 설치합니다.
1.2 Kernel 소스 코드 다운로드
Linux Kernel의 공식 소스 코드는 kernel.org에서 다운로드할 수 있습니다. 아래는 소스 코드를 다운로드하는 방법입니다.
mkdir ~/linux-kernel
cd ~/linux-kernel
wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.5.tar.xz
tar -xvf linux-6.5.tar.xz
cd linux-6.5
1.3 Cross-compiler 설치 및 설정
Embedded 시스템에서는 Cross-compiler를 사용하여 호스트 시스템에서 타겟 시스템용 바이너리를 빌드합니다. RK3399의 경우 aarch64-linux-gnu-gcc
를 사용합니다.
sudo apt install -y gcc-aarch64-linux-gnu
Cross-compiler가 제대로 설치되었는지 확인하려면 다음 명령어를 실행하세요:
aarch64-linux-gnu-gcc --version
1.4 Kernel 빌드 환경 구성
RK3399과 같은 Embedded 시스템에서는 특정 하드웨어 설정에 맞춘 Kernel 설정이 필요합니다. RK3399의 기본 설정 파일은 Kernel 소스 코드의 arch/arm64/configs
디렉토리에 있습니다.
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- rockchip_defconfig
위 명령어는 Rockchip RK3399에 적합한 기본 설정을 로드합니다.
2. Kernel 소스 코드 다운로드 방법
2.1 Git을 이용한 다운로드
Kernel 소스 코드는 Git을 통해 최신 버전을 가져올 수도 있습니다.
git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
cd linux-stable
git checkout v6.5
Git을 사용하면 특정 버전의 소스 코드를 가져오거나 패치를 쉽게 적용할 수 있습니다.
3. Cross-compiler 설치 및 설정
3.1 Cross-compiler 다운로드
Cross-compiler는 Linaro 또는 GNU 프로젝트에서 제공됩니다. Ubuntu에서는 패키지 관리자를 통해 설치할 수 있습니다.
sudo apt install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
3.2 환경 변수 설정
빌드 작업을 단순화하려면 환경 변수를 설정할 수 있습니다.
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
환경 변수를 설정하면 매번 명령어에 ARCH
와 CROSS_COMPILE
옵션을 추가할 필요가 없습니다.
4. Embedded 시스템에 맞는 빌드 환경 구성
4.1 Kernel 설정 수정
기본 설정을 로드한 후 menuconfig
를 사용하여 설정을 수정할 수 있습니다.
make menuconfig
menuconfig
를 사용하면 필요한 드라이버를 활성화하거나 특정 옵션을 설정할 수 있습니다.
4.2 Kernel 빌드
설정을 완료한 후 Kernel을 빌드합니다.
make -j$(nproc)
빌드가 완료되면 생성된 이미지는 arch/arm64/boot/Image
에 있습니다.
4.3 DTB 파일 빌드
Embedded 시스템에서는 Device Tree Blob(DTB) 파일이 필요합니다. DTB 파일은 하드웨어를 설명하는 파일입니다.
make dtbs
DTB 파일은 arch/arm64/boot/dts/rockchip/
디렉토리에 생성됩니다.
4.4 Kernel 및 DTB 파일 설치
빌드한 Kernel과 DTB 파일을 타겟 시스템으로 복사합니다. 이를 위해 TFTP 또는 USB를 사용할 수 있습니다.
sudo cp arch/arm64/boot/Image /tftpboot
sudo cp arch/arm64/boot/dts/rockchip/*.dtb /tftpboot
5. 요약
이번 포스팅에서는 Linux Kernel 빌드 환경을 설정하고 RK3399에 맞는 Kernel을 빌드하는 과정을 다루었습니다. 요약하면 다음과 같습니다:
- Linux Kernel 빌드에 필요한 패키지 설치
- Kernel 소스 코드 다운로드 및 설정
- Cross-compiler 설치 및 환경 변수 설정
- Embedded 시스템에 맞는 빌드 환경 구성
이 과정을 통해 RK3399과 같은 Embedded 시스템에서 Kernel을 빌드할 수 있습니다.
'Linux > Kernel Driver' 카테고리의 다른 글
Board Support Package (BSP) 이해 (0) | 2025.03.12 |
---|---|
Embedded Linux Kernel 포팅 기본 (0) | 2025.03.11 |
Device Tree의 이해 (0) | 2025.03.10 |
Embedded Linux 부트 프로세스 이해하기 (0) | 2025.03.09 |
Embedded Linux Kernel의 개요 (0) | 2025.03.07 |