커널 포팅 (1. 개요 및 준비 / 1.3 실습 환경 구축)

2025. 3. 6. 19:34프로그래밍/시스템

1.3 실습 환경 구축

커널 포팅을 학습하고 실습하기 위해서는 적절한 개발 환경을 구축해야 합니다.
리눅스 커널은 다양한 아키텍처에서 동작하기 때문에 호환성과 개발 편의성을 고려하여 환경을 설정해야 합니다.

이 섹션에서는 개발 환경 선택, 필수 도구 설치, 실습용 개발 보드 선택을 포함하여 커널 포팅 실습을 위한 환경을 구축하는 방법을 설명합니다.


🔹 개발 환경 선택

커널 포팅 작업은 Linux 기반 환경에서 수행하는 것이 가장 효율적입니다.
추천하는 운영체제:

  • Ubuntu 20.04 / 22.04 (LTS 버전 추천)
  • Debian 10 / 11
  • CentOS 7 / 8 (단, 최신 CentOS는 Stream 버전으로 변경되었으므로 RHEL 계열을 고려할 수도 있음)
  • Fedora (개발자 친화적이지만 안정성을 고려하면 LTS 기반이 더 적합)

Linux 환경이 필요한 이유:

  • 리눅스 커널 빌드는 Linux 환경에서 가장 원활하게 동작
  • 크로스 컴파일러, U-Boot, QEMU 등의 개발 도구가 Linux에서 잘 지원됨
  • 패키지 관리자(apt, dnf, yum)를 통해 필요한 라이브러리와 도구를 쉽게 설치 가능

💡 Windows에서 개발하고 싶다면?

  • WSL(Windows Subsystem for Linux) 2를 사용하면 가능하지만, 실제 보드에 배포하는 과정에서 문제가 발생할 수 있음
  • 가능하면 리눅스 네이티브 환경에서 작업하는 것이 가장 바람직함

🔹 필요한 도구 설치

커널 포팅을 진행하려면 크로스 컴파일러, 부트로더, 에뮬레이션 도구(QEMU) 등의 필수 도구를 설치해야 합니다.

📌 1️⃣ 크로스 컴파일러 (Cross Compiler) 설치

크로스 컴파일러는 타겟 아키텍처(ARM, RISC-V 등)에서 실행할 수 있도록 소스를 빌드하는 도구입니다.

설치 방법 (Ubuntu/Debian 계열)

# ARM 크로스 컴파일러 설치
sudo apt update
sudo apt install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi -y

# AArch64 (ARM64) 크로스 컴파일러 설치
sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu -y

# RISC-V 크로스 컴파일러 설치
sudo apt install gcc-riscv64-unknown-elf g++-riscv64-unknown-elf -y

설치 확인

arm-linux-gnueabi-gcc --version
aarch64-linux-gnu-gcc --version
riscv64-unknown-elf-gcc --version
  • 정상적으로 버전 정보가 출력되면 설치 완료

수동 설치 (최신 버전 다운로드)
만약 최신 크로스 컴파일러가 필요하다면, ARM 공식 사이트 또는 RISC-V 공식 사이트에서 다운로드할 수도 있음.


📌 2️⃣ 부트로더 (Bootloader) - U-Boot 설치

부트로더는 커널을 메모리에 로드하고 실행하는 역할을 하므로, U-Boot를 설치하여 실습할 필요가 있음.

U-Boot 설치 방법

# 필수 패키지 설치
sudo apt install git build-essential flex bison libssl-dev -y

# U-Boot 소스 코드 다운로드
git clone https://source.denx.de/u-boot/u-boot.git
cd u-boot

# U-Boot 빌드를 위한 환경 설정
make distclean
make <타겟보드>_defconfig  # 예: make rpi_4_defconfig (라즈베리파이 4)

# 크로스 컴파일 빌드 실행
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j$(nproc)

빌드 완료 후 U-Boot 실행 테스트

  • u-boot.bin 또는 u-boot.img 파일이 생성됨
  • 개발 보드에서 실행하거나 QEMU에서 실행 가능

📌 3️⃣ QEMU (에뮬레이션 환경) 설치

QEMU는 가상 머신을 통해 실제 하드웨어 없이 커널을 실행하고 디버깅할 수 있도록 도와주는 도구입니다.

설치 방법 (Ubuntu/Debian 계열)

sudo apt install qemu-system-arm qemu-system-aarch64 qemu-system-riscv -y

설치 확인

qemu-system-arm --version
qemu-system-aarch64 --version
qemu-system-riscv64 --version
  • 정상적으로 버전 정보가 출력되면 설치 완료

QEMU로 커널 부팅 테스트 (ARM 32비트 예제)

qemu-system-arm -M versatilepb -kernel zImage -append "console=ttyAMA0" -nographic

📌 4️⃣ 리눅스 커널 소스 코드 다운로드

커널 포팅을 위해 공식 리눅스 커널 소스를 다운로드해야 합니다.

커널 소스 코드 다운로드

git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
cd linux

또는 특정 버전 다운로드:

wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.113.tar.xz
tar -xvf linux-5.15.113.tar.xz
cd linux-5.15.113

커널 소스 디렉토리 구조

ls -l
  • arch/ → 아키텍처별 코드 (ARM, x86, RISC-V 등)
  • drivers/ → 디바이스 드라이버 코드
  • fs/ → 파일 시스템 관련 코드
  • kernel/ → 커널 핵심 코드
  • mm/ → 메모리 관리 코드

🔹 실습용 개발 보드 선택

커널 포팅을 학습하고 실습하기 위해 실제 보드를 사용할 수도 있고, QEMU를 이용할 수도 있습니다.

추천하는 개발 보드

개발 보드 CPU 아키텍처 주요 특징
라즈베리파이 4 ARM Cortex-A72 널리 사용되며 다양한 자료 및 커뮤니티 지원
BeagleBone Black ARM Cortex-A8 산업용 및 임베디드 프로젝트에서 많이 활용됨
FriendlyARM NanoPi ARM Cortex-A53 저렴한 가격으로 활용 가능
Odroid C4 ARM Cortex-A55 고성능 보드로 활용 가능
Orange Pi ARM Cortex-A7 저가형 싱글 보드 컴퓨터

보드가 없다면?

  • QEMU를 활용하여 가상 환경에서 커널 포팅 실습 가능
  • ARM 기반의 보드 없이도 qemu-system-arm을 이용하여 기본적인 실습 가능

✅ 정리

이제 크로스 컴파일러, U-Boot, QEMU, 커널 소스 코드 다운로드까지 완료되었습니다.