Linux

라즈비안 커널 소스 다운 & 빌드(raspbian kernel source download & build)

총알 2022. 1. 12. 07:38

오늘은 라즈비안 커널 소스 내려받는 걸 해보려고 하는데

그전에 우선 root 권한이라는 걸 알고 넘어가야 할 것 같다.

 

root계정은 모든 권한을 가진 계정을 말하는데 어떤 명령을 수행할 때는 루트 권한이 필요하다.

그래서 종종 특정 명령이나 시스템 파일에 영향을 주는 명령인 경우에는 명령 수행이 불가능하다.

그래서 필요하다면 root 권한을 이용해 명령을 수행해야 한다.

 

예를 들어 apt-get update라는 명령을 수행해 운영체제의 패키지와 버전들을 업데이트하고자 한다면

apt-get update가 아닌 sudo-get update라고 입력해야 한다.

아래 사진을 보면 apt-get update만 입력했을 땐 거부를 당했지만

root 권한을 이용해서 명령을 수행했을 땐 정상적으로 update가 된 것을 확인할 수 있다.

 

그리고 sudo su를 입력하게 되면 사진과 같이 root 계정으로 일시적으로 변경이 가능한데

이때부터는 명령어를 입력할 때 sudo를 입력하지 않아도 수행이 가능하다.

 

apt-get upgrade는 설치한 패키지를 최신 버전으로 업그레이드하는 명령인데 이미 업그레이드가 되어있어 위와 같이 나오게 된 것이다.

 

이젠 본격적으로 라즈비안 리눅스 커널 소스를 내려받아보자

우선 리눅스 커널 소스를 받기 전에 리눅스 유틸리티 프로그램을 설치해야 하고

명령어는 apt-get install git bc bison flex libssl-dev이다.

중간에 계속할 거냐고 물어보는 질문이 나오는데 y를 입력 후 엔터를 치면 된다.

 

이어서 git clone --depth=1 https://github.com/raspberrypi/linux 를 입력해서 라즈비안 최신 커널 소스를 내려받을 수 있다.

 

우리는 home/pi 디렉토리에서 설치했기 때문에 사진과 같은 경로에 설치가 linux 폴더가 생긴 것을 확인할 수 있다.

 

cd linux를 이용해 디렉토리를 이동하고 git branch를 입력해서 현재 설치된 버전을 확인할 수 있다.

 

지금 내가 공부하고 있는 책은 리눅스 커널 버전 4.19.60 버전을 기준으로 설명을 해주기 때문에 다시 4.19.60 버전으로 설치를 하고자 하는데 명령어는 아래와 같이 입력해서 다운로드 가능하다.

git clone --depth=1 --branch rpi-4.19.y https://github.com/raspberrypi/linux 

 

하지만 다시 설치하기 위해서는 해당 파일을 제거하고 설치를 하던가 새로운 디렉토리에서 설치해야 한다.

 

디렉토리 삭제는 rm -r directory를 이용해 삭제 가능하다.

5.10버전이 삭제되고 4.19 버전으로 설치된 걸 확인할 수 있다.

 

이제 설치된 kernel을 build 해보자!

아래 링크에 가면 어떻게 build 하는지 나와있다.

https://www.raspberrypi.com/documentation/computers/linux_kernel.html

 

Raspberry Pi Documentation - The Linux kernel

The official documentation for Raspberry Pi computers and microcontrollers

www.raspberrypi.com

 

위와 같이 되어있는데 우리는 파란색으로 표시한 부분은 했으니 빨간색 부분을 다시 해줘야 한다.
난 64비트의 환경이기 때문에 아래 것을 설치해줬다.(virtual box를 이용한 나와 같은 사람들은 해당 방법으로 크로스 컴파일을 해야 한다.)

 

그리고 아래의 명령어를 입력해 build 한다.

cd linux
KERNEL=kernel8
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcmrpi3_defconfig

 

그리고 다시 한번 더 아래 명령어를 입력해서 build 한다.

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image modules dtbs

 

그럼 build가 진행되고 상당히 오래 걸린다...

 

지금까지 간단하게 커널 설치까지 해봤는데

기초가 없이 해서 그런지 사실 중간중간 구글링을 하면서 꾸역꾸역 진행을 했지만 막히는 부분이 너무 많았다. 지금 이걸 계속 진행한다기보다는 기초부터 차근차근 잘 다지는 게 맞는 것 같아서 다음 포스팅부터는 기초부터 차근차근 공부하는 과정을 포스팅하고자 한다.