Raspberry Pi 3를 위해 커널 크로스 컴파일하기
Raspberry Pi 3를 위해 커널을 크로스 컴파일하는 방법을 설명합니다.
1. ARM용 크로스 컴파일러 설치
2. 커널 소스 다운로드
3. 커널 소스 설정
4. 커널 및 모듈 컴파일
5. 라즈베리파이로 복사
1. ARM용 크로스 컴파일러 설치
다음 명령으로 ARM용 컴파일러를 설치합니다.
$ sudo apt-get install gcc-arm-linux-gnueabihf |
본 포스팅을 진행하기 위해서는 추가로 다음 패키지도 필요합니다.
$ sudo apt-get install make ncurses-dev build-essential |
2. 커널 소스 다운로드
git 패키지를 설치 한 후,
$ sudo apt-get install git |
커널 소스를 다운로드 받습니다.
$ git clone --depth=1 https://github.com/raspberrypi/linux.git |
3. 커널 소스 설정
Raspberry PI 3를 위한 기본 설정을 사용합니다.
$ cd linux $ KERNEL=kernel7 $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig |
추가적으로 고칠 옵션이 있다면 아래 명령을 사용합니다.
$ make ARCH=arm menuconfig |
4. 커널 및 모듈 컴파일
-j4 옵션을 사용하여 커널과 모듈을 컴파일합니다.
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs -j4 |
컴파일된 모듈을 /home/pi/modules에 복사해둡니다.
$ sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=~/modules modules_install |
5. 라즈베리파이로 복사
PC에서 커널 이미지와 모듈 디렉토리를 scp를 이용하여 전송합니다.
$ scp arch/arm/boot/zImage pi@192.168.43.142:/home/pi |
4.9.60-v7+커널 모듈 디렉토리 이름은 글 작성 시점과 다를 수 있습니다.
$ sudo rm ~/modules/lib/modules/4.9.60-v7+/build $ sudo rm ~/modules/lib/modules/4.9.60-v7+/source $ scp -r /home/webnautes/modules/lib/modules/4.9.60-v7+/ pi@192.168.43.142:/home/pi |
라즈베리파이의 적절한 위치로 커널 이미지와 모듈 디렉토리를 복사해줍니다.
$ sudo cp zImage /boot/kernel7.img |
Device Tree blob를 라즈베리파이로 복사합니다.
라즈베리파이로 파일들을 복사 한 후,
$ scp arch/arm/boot/dts/*.dtb pi@192.168.43.142:/home/pi |
라즈베리파이에서 /boot 위치로 복사해줍니다.
pi@raspberrypi:~ $ sudo cp *.dtb /boot |
라즈베리파이로 파일들을 복사 한 후,
$ scp arch/arm/boot/dts/overlays/*.dtb* pi@192.168.43.142:/home/pi |
라즈베리파이에서 /boot/overlays 위치로 복사해줍니다.
pi@raspberrypi:~ $ sudo cp *.dtb* /boot/overlays/ |
이제 라즈베리파이를 재부팅하여 커널 버전을 확인해봅니다.
참고
https://www.raspberrypi.org/documentation/linux/kernel/building.md