본문 바로가기
Kernel/环境

라즈베리파이4 arm64 빌드 및 설치스크립트

by 暻煥 2024. 2. 2.

만약 처음으로 빌드 하는 경우에는

의존성이 있는 패키지들 설치해 주어야 한다

 

다음 명령어를 실행한다

sudo apt install git bc bison flex libssl-dev make

 


 

빌드 스크립트 (version 정보에 현재 시간 및 날짜를 추가)

#
# file name : build_rpi_kernel.sh
#

#!/bin/bash

# should run with sudo
# should run at directory like below
# 
# $ ls
# linux     build_rpi_kernel.sh     install_rpi_kernel.sh

KERNEL_TOP_PATH="$( cd "$(dirname "$0")"; pwd -P )"
OUTPUT="$KERNEL_TOP_PATH/out"

KERNEL=kernel8
BUILD_LOG="$KERNEL_TOP_PATH/rpi_build_log.txt"

cd linux

# add current time to local version
# use this : sed -i "s/string_to_find/string_to_change/g" target_file
NOW_TIME=`date +%y%m%d-%H%M`
ORG_VERSION="CONFIG_LOCALVERSION=\"-v8\""
CHG_VERSION="CONFIG_LOCALVERSION=\"-v8-$NOW_TIME\""
sed -i "s/$ORG_VERSION/$CHG_VERSION/g" arch/arm64/configs/bcm2711_defconfig

echo "make defconfig"
make O=$OUTPUT bcm2711_defconfig

# change to original version
sed -i "s/$CHG_VERSION/$ORG_VERSION/g" arch/arm64/configs/bcm2711_defconfig

echo "kernel build"
make O=$OUTPUT -j4 Image.gz modules dtbs 2>&1 | tee $BUILD_LOG

 

설치 스크립트

#
# file name : install_rpi_kernel.sh
#

#!/bin/bash

# should run with sudo
# should run at directory like below
# 
# $ ls
# linux     build_rpi_kernel.sh     install_rpi_kernel.sh

KERNEL=kernel8

KERNEL_TOP_PATH="$( cd "$(dirname "$0")"; pwd -P )"
OUTPUT="$CURRENT_PATH/out"
echo "$OUTPUT"

cd linux
sudo make O=$OUTPUT modules_install

sudo cp $OUTPUT/arch/arm64/boot/dts/broadcom/*.dtb /boot/
sudo cp $OUTPUT/arch/arm64/boot/dts/overlays/*.dtb* /boot/overlays/
sudo cp $OUTPUT/arch/arm64/boot/dts/overlays/README /boot/overlays/
sudo cp $OUTPUT/arch/arm64/boot/Image.gz /boot/$KERNEL.img

 

전처리 스크립트 (version 정보에 현재 시간 및 날짜 추가)

#
# file name : build_preprocess_rpi_kernel.sh
#

#!/bin/bash

# how to use
# ./build_preprocess_rpi_kernel.sh init/main.i

echo "configure build output path"

KERNEL_TOP_PATH="$( cd "$(dirname "$0")" ; pwd -P )"
OUTPUT="$KERNEL_TOP_PATH/out"
echo "$OUTPUT"

KERNEL=kernel8
BUILD_LOG="$KERNEL_TOP_PATH/rpi_preproccess_build_log.txt"

PREPROCESS_FILE=$1
echo "build preprocessed file: $PREPROCESS_FILE"

echo "move kernel source"
cd linux

# add current time to local version
# use this : sed -i "s/string_to_find/string_to_change/g" target_file
NOW_TIME=`date +%y%m%d-%H%M`
ORG_VERSION="CONFIG_LOCALVERSION=\"-v8\""
CHG_VERSION="CONFIG_LOCALVERSION=\"-v8-$NOW_TIME\""
sed -i "s/$ORG_VERSION/$CHG_VERSION/g" arch/arm64/configs/bcm2711_defconfig

echo "make defconfig"
make O=$OUTPUT bcm2711_defconfig

# change to original version
sed -i "s/$CHG_VERSION/$ORG_VERSION/g" arch/arm64/configs/bcm2711_defconfig

echo "kernel build"
make $PREPROCESS_FILE O=$OUTPUT Image.gz modules dtbs -j4 2>&1 | tee $BUILD_LOG

출처:

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

http://www.yes24.com/Product/Goods/90085976

 

디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1 - YES24

신입 리눅스 시스템 개발자부터 5년차 개발자가 실무를 하기 위해 알아야 할 리눅스 커널의 주요 서브시스템!실전 개발에서 신입 사원 옆에 친절한 선배 개발자가 앉아서 리눅스 커널에 대해 꼼

www.yes24.com

.

'Kernel > 环境' 카테고리의 다른 글

module signing  (1) 2024.09.21
kernel - make cscope tags  (0) 2024.02.02
kernel arm64 用 ctags & cscope  (1) 2024.02.02