커널 설정

EEEFFEE·2024년 1월 5일
0

임베디드 리눅스

목록 보기
2/14

24.01.05 최초 작성

1. 커널 설정

  • 커널이 가지는 디바이스 드라이버, 파일시스템, 네트워크 프로토콜 등을 설정함
  • 커널 용량의 문제로 선택적으로 디바이스 드라이버를 포함
  • make menuconfig를 통해 설정 가능

1.1 커널 빌드 시 환경변수 설정

  • buildroot/output/build/linux-custom에서 빌드
  • ARCH : 타겟 SOC 설정 (Default : host SOC)
  • CROSS_COMPILE : 컴파일러 설정 (리눅스는 $(CROSS_COMPILE)gcc를 통해 컴파일 수행)
    (arm64 : ../../host/bin/aarch64-buildroot-linux-gnu-로 설정)
  • make ARCH=arm64 CROSS_COMPILE=../../host/bin/aarch64-buildroot-linux-gnu-에 사용

1.2 빌드 이후 Initial configuration

  • 데스크탑의 경우 /boot/config-'uname -r'.config에 설정파일 존재
  • 임베디드 시스템의 경우 arch/<arch>/configs/에 설정 파일 리스트 존재 (bcm2711_defconfig..)
  • 해당 파일에서 설정을 완료한 뒤 buildroot/output/build/linux-custom에서 make ARCH=arm64 bcm2711_defconfig입력 시 적용 완료
  • make menuconfig로 설정한 내용 .config에 저장, make savedefconfigdefconfig 생성
  • 생성된 defconfig파일 arch/<arch>/configs/에 이름 다르게 해 저장

menuconfig

  • 커널 소스 : make menuconfig ARCH=arm64
  • 빌드루트 : make linux-menuconfig

2. 커널 컴파일 및 설치

  • 빌드
    • make ARCH=arm64 CROSS_COMPILE=../../host/bin/aarch64-buildroot-linux-gnu-
    • 재 빌드 시 export CROSSCOMPILE="ccache ../../host/bin/aarch64-buildroot-linux-gnu-를 통해 빠르게 실행 가능

2.1 모듈 설치

  • 데스크탑, 서버의 경우 make modules_install을 통해 모듈 설치
  • 임베디드 시스템의 경우 INSTALL_MOD_PATH 환경변수를 이용해 설치
    • make INSTALL_MOD_PATH=<dir>/ modules_install
  • 빌드루트나 욕토는 빌드 시스템이 알아서 설치

2.2 clean

  • make clean : 오브젝트 파일 삭제
  • make mrproper : 자동 생성 파일 (config, backup file)삭제
  • make distclean : 완전 초기화

3. 빌드 결과물 확인

  • arch/<arch>/boot/Image : 압축되지 않은 이미지
  • arch/<arch>/boot/zImage, arch/<arch>/boot/bzImage : 압축된 이미지
  • arch/<arch>/boot/dts/*.dtb : DTB (Device Tree Blobs)
  • vmlinux : 디버깅 정보를 포함한 ELF 파일

4. 실제 이미지파일 빌드 과정

  • /buildroot에서 작업
  1. make <config파일 이름>에서 타겟 보드에 맞는 설정 등록

  2. make linux-menuconfig에서 관련 설정 진행

  3. make menuconfig에서 관련 설정 진행

  4. make로 빌드 진행, /buildroot/output/images에 이미지 파일 생성됨

0개의 댓글

관련 채용 정보