본문으로 건너뛰기
  1. Posts/

라즈베리파이용 Rocky Linux 이미지의 커널 버전 관련 문제 해결하기

·
Rpi
작성자
hw5e
page.hw5e.cc
목차

문제 상황
#

레드햇 계열 리눅스에서 커널 모듈이 빌드되는지 테스트해보려는 중 라즈베리파이에 Rocky가 깔려있으니 그걸로 해보려고 했는데, 빌드를 시도하니 커널 헤더를 찾을 수 없다는 오류가 뜨는 것이였다, 그래서 kernel-devel이 제대로 설치되었는지 확인해보았는데 kernel-devel 패키지는 5.14버전인데 뜬금없이 라즈베리파이에 설치된 커널의 버전이 6.1이였다.1

alt text
아무래도 RHEL과 같은 버전의 커널은 라즈베리파이 4 같은 하드웨어를 지원하지 않아서 더 높은 버전의 커널을 사용한 듯 하다.

저 버전의 커널에 맞는 패키지는 찾아봐도 없는것 같았고 낮은 버전의 커널 패키지를 설치해도 커널 버전이 바뀌지 않아서 문제를 해결할 수 없었다.

그래서 Rocky Linux 채팅에서 질문을 했는데 커널과 관련된 패키지의 소스가 어디에 있는지 알게 되었다. 그래서 커널과 관련된 패키지를 직접 빌드해서 문제를 해결할 수 있었다.

대충 보니 커널은 kernel.org에서 받은 커널에서 패치를 적용하는 식인 것 같다.

커널관련 패키지 빌드하기
#

rpm 패키지 빌드 처음 해보는거라 과정이 조금 이상할 수 있음.

공통 과정
#

git clone https://git.rockylinux.org/sig/altarch/src/raspberrypi2/
cd raspberrypi2

빌드에 필요한 도구 설치

sudo dnf install rpmdevtools rpmlint
sudo dnf builddep SPECS/raspberrypi2.spec

파일 준비

rpmlint SPECS/raspberrypi2.spec

이걸 하면 ~/ 에 rpmbuild 관련 파일이 생기는 것 같다.

spectool -g -R SPECS/raspberrypi2.spec
cp SOURCES/*.patch ~/rpmbuild/SOURCES/ 

라즈베리파이에서 네이티브로 빌드하는 경우
#

라즈베리파이 3B에서 3시간 넘게 걸렸다. 커널 컴파일은 둘째치고 패치를 적용하는데도 40분 가량 걸린 것 같은데 SD카드 저장하는 탓에 읽기/쓰기 속도가 느려서 그렇다.

rpmbuild -bb SPECS/raspberrypi2.spec

크로스 컴파일하는 경우
#

윈도우에서 빌드하려면 도커로 RHEL 계열 리눅스를 쓰거나 WSL로 alma같은 것을 쓰면 될 것이다.

aarch64 GCC 크로스 컴파일러 설치

sudo dnf install gcc-aarch64-linux-gnu
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu

빌드

rpmbuild -bb --target aarch64-linux-gnu SPECS/raspberrypi2.spec

설치
#

빌드에 성공했다면 ~/rpmbuild/RPMS 에 빌드된 패키지가 있을 것이다.

sudo dnf install rpmbuild/RPMS/*.rpm

설치하고 재부팅해서 커널 버전이 달라지면 성공!

기타
#

최신버전을 사용해서 커널헤더 뿐 아니라 커널까지 새로 설치했는데 커널 버전을 똑같이 맞추면 굳이 커널까지 빌드하고 설치할 필요는 없을 것 같다. 지금 글을 쓰는 시점에서 https://git.rockylinux.org/sig/altarch/src/raspberrypi2/-/commit/a306da8fe044b983dbf610e30de087f0ea05c1e3 이 커밋보다 이전으로 돌리면 이미지와 동일한 버전의 커널로 맞출 수 있을 것 같다.

https://www.redhat.com/en/blog/create-rpm-package

크로스 컴파일 방법 참고한 곳
https://jfearn.fedorapeople.org/en-US/RPM/4/html/RPM_Guide/ch19s04s02.html
소스 다운로드
https://stackoverflow.com/questions/33177450/how-do-i-get-rpmbuild-to-download-all-of-the-sources-for-a-particular-spec
빌드 종속성 자동으로 설치
https://stackoverflow.com/questions/13227162/automatically-install-build-dependencies-prior-to-building-an-rpm-package


  1. RHEL의 커널 버전이 궁금하다면 https://access.redhat.com/ko/articles/7065635 ↩︎

Reply by Email