호타리
2025. 6. 20. 09:41
2025.06.19
개발 환경 구축
리눅스에서 사용하는 컴파일러는 GCC를 주로 사용하며 디버거로 는 GDB를 사용하고 있다. 타깃 보드가 ARM 계열 프로세서를 사용하고 있으면 ARM용 GCC 컴파일러를 설치하고, 타깃 보드가 x86 계열 프로세서를 사용하고 있으면 x86용 GCC 컴파일러를 설치하여 사용하면 된다.
브이엠웨어(VMWare), 버추얼 박스(VirtualBox), Xen 하이버 바이저
크로스 개발환경 구축
개발 시스템 구축
Download Linux ISO Image - 로그인 필요 없음.
https://ubuntu.com/download/desktop
Window + VM + Linux 개발 시스템 구축
VM - memory 4GB이상, HD 30GB 이상
Download VMPlayer - 로그인 필요
https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion
VMWare Tools 설치
설치중 사용자 생성
크로스 툴 체인 설치
sudo apt update
sudo apt upgrade -y
sudo apt install git
sudo apt install crossbuild-essential-arm64 <= 64bit
sudo apt install crossbuild-essential-armhf <= 32bit
RaspberryPi 커널 컴파일
https://www.raspberrypi.com/documentation/computers/linux_kernel.html
cd project/
git clone --depth=1 --branch rpi-6.12.y https://github.com/raspberrypi/linux
sudo apt install bc bison flex libssl-dev make libc6-dev libncurses5-dev
sudo apt install crossbuild-essential-arm64
cd linux
# .bashrc에 등록
vim .bashrc
KERNEL=kernel8
#확인
echo $KERNEL
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig
#
vim .config
CONFIG_LOCALVERSION="-v8-MY_CUSTOM_KERNEL"
make -j12 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image modules dtbs
#sudo env PATH=$PATH make -j12 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=/home/ubuntu/rpi_modules modules_install
#scp -r /home/andrew/rpi_modules/lib/modules/6.12.33-v8-MY_CUSTOM_KERNEL+ pi@192.168.55.40:/lib/modules/
# rpi에 /home/kernel폴더 생성 -> 밑에 modules, root, boot폴더 생성
#오래 걸림 => tar로 압축해서 복사하는거는?
#scp -r /home/andrew/rpi_modules/lib/modules/6.12.33-v8-MY_CUSTOM_KERNEL+ pi@192.168.55.40:/home/kernel/modules/
sudo make -j12 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=/home/ubuntu/kernel/modules modules_install
sudo tar cf rpi_modules.tar rpi_module/
scp -r /home/andrew/rpi_modules.tar pi@192.168.55.40:/home/pi/kernel/modules/
#sudo cp mnt/boot/$KERNEL.img mnt/boot/$KERNEL-backup.img
#sudo cp arch/arm64/boot/Image mnt/boot/$KERNEL.img
#sudo cp arch/arm64/boot/dts/broadcom/*.dtb mnt/boot/
#sudo cp arch/arm64/boot/dts/overlays/*.dtb* mnt/boot/overlays/
#sudo cp arch/arm64/boot/dts/overlays/README mnt/boot/overlays/
#linux 폴더에서
scp -r /home/ubuntu/project/linux/arch/arm64/boot/Image pi@10.10.16.221:/home/pi/kernel/boot/$KERNEL.img
scp -r /home/ubuntu/project/linux/arch/arm64/boot/dts/broadcom/*.dtb pi@10.10.16.221:/home/pi/kernel/boot/
scp -r /home/ubuntu/project/linux/arch/arm64/boot/dts/overlays/*.dtb* pi@10.10.16.221:/home/pi/kernel/boot/overlays/
scp -r /home/ubuntu/project/linux/arch/arm64/boot/dts/overlays/README pi@10.10.16.221:/home/pi/kernel/boot/overlays/
#라즈베리파이 /home/pi/kernel/modules에서
sudo mv 6.12.33-v8-MY_CUSTOM_KERNEL+/ /lib/modules/
#라즈베리파이
sudo cp /home/pi/kernel/boot/kernel8.img /boot/firmware/6.12.33-v8-MY_CUSTOM_KERNEL+.img
sudo cp /home/pi/kernel/boot/* /boot/
sudo cp /home/pi/kernel/boot/overlays/* /boot/overlays
# 라즈베리파이 에서 부팅시 이미지 참조위치 변경
#config.txt => /boot/firmware in the boot partition to select your kernel:
sudo vim /boot/firmware/config.txt
[all]
kernel=6.12.33-v8-MY_CUSTOM_KERNEL+.img
sudo reboot