운영체제/리눅스

[리눅스 커널 디버깅] 1. 커널 빌드와 설치 (rpi4 6.6.x)

IT 기술자 2025. 4. 11. 11:00

"디버깅을 통해 배우는 리눅스 커널의 구조와 원리" 책과 유튜브 [오제이 튜브] 님의 한국에서 제일 쉬운 리눅스 커널 강의"를 참고하였다.

 

책의 예제 소스

https://github.com/wikibook/linux-kernel

 

GitHub - wikibook/linux-kernel: 리눅스 커널

리눅스 커널. Contribute to wikibook/linux-kernel development by creating an account on GitHub.

github.com

 

 

라즈베리파이 4에 "rpaspberry pi os lite (64-bit)"를 설치한다. (2025.4월)

 

su root 패스워드 설정

pi@raspberrypi:~ $ sudo passwd root
새 암호:
새 암호 재입력:
passwd: password updated successfully

 

root 로그인

pi@raspberrypi:~ $ su
암호:
root@raspberrypi:/home/pi # cd ~
root@raspberrypi:~ #

 

패키지 업데이트

root@raspberrypi:~ # apt-get update
root@raspberrypi:~ # apt-get upgrade

 

vim 설치와 root에 bash 환경 적용

root@raspberrypi:~ # apt-get install vim

root@raspberrypi:~ # cp /home/pi/.bashrc /root/
root@raspberrypi:~ # source .bashrc

 

Sop 정보를 확인한다.

root@raspberrypi:~ # lscpu
Architecture:                    aarch64
Byte Order:                      Little Endian
CPU(s):                          4
On-line CPU(s) list:             0-3
Thread(s) per core:              1
Core(s) per socket:              4
Socket(s):                       1
Vendor ID:                       ARM
Model:                           3
Model name:                      Cortex-A72
Stepping:                        r0p3
CPU max MHz:                     1800.0000
CPU min MHz:                     600.0000
BogoMIPS:                        108.00
L1d cache:                       128 KiB
L1i cache:                       192 KiB
L2 cache:                        1 MiB
Vulnerability Itlb multihit:     Not affected
Vulnerability L1tf:              Not affected
Vulnerability Mds:               Not affected
Vulnerability Meltdown:          Not affected
Vulnerability Mmio stale data:   Not affected
Vulnerability Retbleed:          Not affected
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1:        Mitigation; __user pointer sanitization
Vulnerability Spectre v2:        Vulnerable
Vulnerability Srbds:             Not affected
Vulnerability Tsx async abort:   Not affected
Flags:                           fp asimd evtstrm crc32 cpuid

 

칩셋 정보를 확인한다.

root@raspberrypi:~ # lspci
00:00.0 PCI bridge: Broadcom Inc. and subsidiaries BCM2711 PCIe Bridge (rev 20)
01:00.0 USB controller: VIA Technologies, Inc. VL805 USB 3.0 Host Controller (rev 01)

 

커널 버전을 확인한다.

root@raspberrypi:~ # uname -a
Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr  3 17:24:16 BST 2023 aarch64 GNU/Linux

 

패키지 설치

root@raspberrypi:~ # apt-get install git bc bison flex libssl-dev

 

작업 디렉터리 생성

root@raspberrypi:~ # mkdir -p /project/linuxSrc && cd $_

 

커널 소스 받기

root@raspberrypi:/project/linuxSrc # git clone --depth=1 https://github.com/raspberrypi/linux

안정된 버전을 받아도 된다.

"git clone -b stable --depth=1 https://github.com/raspberrypi/linux"

 

빌드 스크립트 생성

root@raspberrypi:/project/linuxSrc # vi build_rpi_kernel.sh

#!/bin/bash

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_build_log.txt"

echo "move kernel source"
cd linux

echo "make defconfig"
make O=$OUTPUT bcm2711_defconfig

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

 

빌드 스크립트에 실행권한 주고 실행하기

root@raspberrypi:/project/linuxSrc # chmod 755 build_rpi_kernel.sh
root@raspberrypi:/project/linuxSrc # ./build_rpi_kernel.sh

몇 시간 걸림 (few hours later....)

 

설치 스크립트 생성

root@raspberrypi:/project/linuxSrc # vi install_rpi_kernel.sh

#!/bin/bash

cd  /project/linuxSrc/out
make modules_install
make dtbs_install
cp arch/arm64/boot/Image /boot/firmware/kernel8.img
reboot

 

설치 스크립트에 실행권한 주고 실행하기

root@raspberrypi:/project/linuxSrc # chmod 755 install_rpi_kernel.sh

root@raspberrypi:/project/linuxSrc # ./install_rpi_kernel.sh

 

설치 후 버전 확인

root@raspberrypi:/project/linuxSrc # cat /proc/version
Linux version 6.6.78-v8+ (root@raspberrypi) (gcc (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT Sat Mar 29 13:25:51 GMT 2025