728x90

커널 이미지 구현

- 개발 도구 설치 : 툴체인 설치, 빌드 자동화 도구 이용

- 커널 포팅 준비 : 커널 소스 설치, 커널 패치

- 리눅스 커널 수정 및 구현 : 빌드 환경파일, cpu 아키텍처 소스, 커널 초기화 코드, 디바이스 드라이버, 커널 컴파일 코드 수정 혹은 구현

 

 

 

개발 환경

- 임베디드 시스템은 개발 환경과 타겟 시스템이 다름

- 호스트 시스템 : 개발 환경과 운용환경이 다를 경우 개발을 위한 환경. 여기서 루트파일 시스템, 어플리케이션 개발 -> 호스트 컴퓨터

- 크로스 컴파일 환경 : 임베디드 시스템을 위한 소프트웨어 개발하기 위해 호스트 시스템 구축하는 개발 환경

- 빌드 루트 : 툴체인과 RFS(root file system)를 보다 쉽게 구축할수 있도록 만든 것

 

 

 

커널 개발 방식

1. 커널을 타겟 보드에서 다운로드하여 직접 수정 사용

2. pc에서 크로스 컴파일러로 커널 이미지 생성 후 타겟에 이식

 

 

크로스 컴파일러 선택

- 타겟 프로세서에 맞는 것을 찾아 사용해야힘

- arm 프로세서를 대상으로 크로스 컴파일러 설치

 

 

 

라즈베리파이 3의 툴체인

- git clone https://github.com/raspberrypi/tools ~/tools

 

 

 

툴체인을 다운받으면 바로 사용할수있는가

- 경로 설정을 하면 어느 디렉토리에서나 사용 가능

1. $path 라는 환경변수에 크로스컴파일러의 경로 추가.

2. bashrc에 적용

 

 

 

커널 소스 컴파일 과정

- ncursesdv, build-essential 패키지 설치 apt 명령어

- 커널 소스 다운

 - kernel.org에서 표준 커널 소스 다운 후 타겟에 맞게 수정,

 * 패치 파일- 하드웨어 제조사에 해당 보드에 맞게 수정 없으면, 개발자가 직접 수정해야함

 

 

라즈베리파이의 리눅스 커널 소스

- git clone --depth=1 https://github.com/raspberrypi/linux.git 

 

 

라즈베리파이3을 위한 기본 설정

- cd linux

- KERNEL=kernel7(64비트 리눅스 커널 생성)

- make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

- bcm2709_defconfig

- make ARCH=arm menuconfig 추가 수정 시

- make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs -j4

- arch/arm/boot에 zImage 커널 파일 생성완료

 

 

 

zImage 분석

- readelf -S zImage

- 14개 색션의 헤더들이 있음

 - 시작 주소 0x3d922c

- bss : 커널에서 전역변수를 사용할때 사용하는 메모리

- stack : 지역변수나 함수들을 호출할때 사용하는 메모리

 

 

 

 

 

 

라즈베리파이 커널 부팅 로고 바꾸기

 

1. 라즈베리파이 커널 다운

- 툴체인 다운

 

- bashrc에 경로 추가

- soruce ~/.bashrc로 적용

 - ncurse-dev, build-essential

 

 

2. 라즈비안 커널 소스 다운

 

 

3. 라즈비안 부팅시 로고 변경

- find 명령어로 logo 파일 검색

- 로고 디렉토리로 사진 옮기기

 

-jpg파일을 ppm 파일로 변경

- ppm 이미지 색상을 변경

- 이미지 색상변경

 

4. 커널 이미지 생성

- KERNEL=kernel7

- 나머지는 디폴트로 커널 설정

- make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2789_defconfig

zImage 생성

- make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs -j4

 

zImage 파일을 kernel7.img로 변경

- mv zImage kernel7.img

-> 이후 sd 카드에 옮기기

 

 

부팅 결과

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

300x250

+ Recent posts