728x90

출처

리눅스 버전 확인

orangepi@orangepi5plus:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.5 LTS
Release:        22.04
Codename:       jammy
orangepi@orangepi5plus:~$ free -h
               total        used        free      shared  buff/cache   available
Mem:           7.7Gi       522Mi       6.4Gi        13Mi       907Mi       7.1Gi
Swap:          3.9Gi          0B       3.9Gi

rknpu2 드라이버 버전 확인

orangepi@orangepi5plus:~$ sudo cat /sys/kernel/debug/rknpu/version
RKNPU driver: v0.9.6

github에서 orangepi-build 다운로드

orangepi@orangepi5plus:~$ cd ~
orangepi@orangepi5plus:~$ git clone https://github.com/orangepi-xunlong/orangepi-build.git -b next

리눅스 5.10 커널 소스 코드 다운로드

orangepi@orangepi5plus:~$ cd orangepi-build
orangepi@orangepi5plus:~/orangepi-build$ mkdir kernel && cd kernel
orangepi@orangepi5plus:~/orangepi-build/kernel$ git clone https://github.com/orangepi-xunlong/linux-orangepi.git -b orange-pi-6.1-rk35xx
orangepi@orangepi5plus:~/orangepi-build/kernel$ mv linux-orangepi/ orange-pi-6.1-rk35xx

RKNPU 드라이버 무시함

orangepi@orangepi5plus:~/orangepi-build/kernel$ cd ~/orangepi-build
orangepi@orangepi5plus:~/orangepi-build$ git clone https://github.com/airockchip/rknn-llm.git
orangepi@orangepi5plus:~/orangepi-build$ tar -xvf rknn-llm/rknpu-driver/rknpu_driver_0.9.8_20241009.tar.bz2 
orangepi@orangepi5plus:~/orangepi-build$ cp -r drivers/ kernel/orange-pi-6.1-rk35xx/

컴파일 오류를 피하기 위해 몇 가지 파일을 수정

kernel/include/linux/mm.h 코드 추가

orangepi@orangepi5plus:~/orangepi-build$ vi kernel/orange-pi-6.1-rk35xx/include/linux/mm.h
static inline void vm_flags_set(struct vm_area_struct *vma, vm_flags_t flags) {
  vma->vm_flags |= flags;
}

static inline void vm_flags_clear(struct vm_area_struct *vma, vm_flags_t flags) {
  vma->vm_flags &= ~flags;
}

rknpu_devfreq.c 코드 수정

orangepi@orangepi5plus:~/orangepi-build$ vi kernel/orange-pi-6.1-rk35xx/drivers/rknpu/rknpu_devfreq.c

237행 주석 처리 : set_soc_info = rockchip_opp_set_low_length,

소스 코드 동기화 비활성화

kernel/orange-pi-5.10-rk35xx 디렉터리에 드라이버를 수동으로 덮어썼기 때문에, 컴파일을 직접 실행하면 스크립트가 클라우드 내 소스 코드와 불일치를 검사해 코드를 다시 풀어서 덮어쓰기 문제가 발생합니다. 따라서 설정 파일에서 소스 코드 동기화 기능을 비활성화해야 합니다.

빌드 스크립트를 실행하여 초기화 실행

orangepi@orangepi5plus:~/orangepi-build$ sudo ./build.sh

config-default.conf 수정

orangepi@orangepi5plus:~/orangepi-build$ sudo vi userpatches/config-default.conf
IGNORE_UPDATES="yes"

build.sh 실행 리눅스 커널 컴파일 시작

orangepi@orangepi5plus:~/orangepi-build$ sudo ./build.sh

orangepi@orangepi5plus:~/orangepi-build$ sudo ./build.sh
 
dpkg-deb: building package 'linux-headers-current-rockchip-rk3588' in '../linux-headers-current-rockchip-rk3588_1.2.0_arm64.deb'.
dpkg-deb: building package 'linux-dtb-current-rockchip-rk3588' in '../linux-dtb-current-rockchip-rk3588_1.2.0_arm64.deb'.
dpkg-deb: building package 'linux-image-current-rockchip-rk3588' in '../linux-image-current-rockchip-rk3588_1.2.0_arm64.deb'.
dpkg-deb: building package 'linux-image-current-rockchip-rk3588-dbg' in '../linux-image-current-rockchip-rk3588-dbg_1.2.0_arm64.deb'.
dpkg-genchanges: info: binary-only upload (no source code included)
dpkg-buildpackage: info: binary-only upload (no source included)
[ o.k. ] Kernel build done [ @host ]
[ o.k. ] Target directory [ /home/orangepi/orangepi-build/output/debs/ ]
[ o.k. ] File name [ linux-image-current-rockchip-rk3588_1.2.0_arm64.deb ]
[ o.k. ] Runtime [ 35 min ]
[ o.k. ] Repeat Build Options [ sudo ./build.sh  BOARD=orangepi5plus BRANCH=current BUILD_OPT=kernel KERNEL_CONFIGURE=no  ]

deb 패키지 설치

orangepi@orangepi5plus:~/orangepi-build$ ls output/debs/linux-*
output/debs/linux-dtb-current-rockchip-rk3588_1.2.0_arm64.deb       커널에서 사용하는 dtb 파일 포함
output/debs/linux-headers-current-rockchip-rk3588_1.2.0_arm64.deb   커널 헤더 포함
output/debs/linux-image-current-rockchip-rk3588_1.2.0_arm64.deb     커널 미러링 및 커널 모듈 포함
output/debs/linux-image-current-rockchip-rk3588-dbg_1.2.0_arm64.deb

linux-image-legacy-rockchip-rk3588_1.1.8_arm64.deb 설치

orangepi@orangepi5plus:~/orangepi-build$ sudo apt purge -y linux-image-current-rockchip-rk3588
orangepi@orangepi5plus:~/orangepi-build$ sudo dpkg -i output/debs/linux-image-current-rockchip-rk3588_1.2.0_arm64.deb
Selecting previously unselected package linux-image-current-rockchip-rk3588.
(Reading database ... 168054 files and directories currently installed.)
Preparing to unpack .../linux-image-current-rockchip-rk3588_1.2.0_arm64.deb ...
Unpacking linux-image-current-rockchip-rk3588 (1.2.0) ...
Setting up linux-image-current-rockchip-rk3588 (1.2.0) ...
 * dkms: running auto installation service for kernel 6.1.43-rockchip-rk3588
   ...done.
update-initramfs: Generating /boot/initrd.img-6.1.43-rockchip-rk3588
update-initramfs: Converting to u-boot format
Free space after deleting the package linux-image-current-rockchip-rk3588 in /boot: 936.9M

재부팅

orangepi@orangepi5plus:~/orangepi-build$ sudo reboot

rknpu2 드라이버 버전확인

orangepi@orangepi5plus:~$ sudo cat /sys/kernel/debug/rknpu/version
RKNPU driver: v0.9.8
728x90

+ Recent posts