먼저 주의사항에 대해 말하겠다. 필자도 이게 어떻게 돌아가는건지 정확하게 모른다! 다만 돌아간다는 것만 알고 있다. 일단 돌아가긴 하니까... 기록에 의미로 적어두려 한다...
말 그대로 Raspberry Pi 4
보드에서 QEMU
와 buildroot
를 통해 Linux Kernel
이미지를 부팅할 예정이다.
보드: Raspberry Pi 4 8 GiB
운영체제: Raspberry Pi OS 64-bit
Version
- Linux Kernel 5.10v
Architecture
- arm64
Configuration
- defconfig
Raspberry Pi OS 64-bit
설치 우선 Raspberry Pi 4
보드에 Raspberry Pi OS 64-bit
를 설치해야 한다. 이는 필자가 예전에 작성한 글을 토대로 진행하면 된다. 다만 이미지 파일은 여기에서 받아야 한다. 다운받고 uSD 를 RPI-Imager
로 지져버리면 된다.
커널 빌드에 필요한 기본적인 패키지를 설치한다:
sudo apt-get install aptitude
sudo aptitude install git-all fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
sudo apt-get install qemu
make mrproper
make ARCH=arm64 O=../build-5.10 defconfig CROSS_COMPILE=aarch64-linux-gnu-
make ARCH=arm64 O=../build-5.10 -j$(nproc) CROSS_COMPILE=aarch64-linux-gnu-
buildroot
파일 시스템여기가 진짜 극악이다. 정말 정말 오래 걸리니 (필자는 대략 4 시간 정도 걸렸다) 그냥 마음을 비우고 딴 일을 하기 바란다. 잠깐 다른 일 하고 오면 다 됐을.... 거라 생각했다면 큰 착각이니까 기대조차 하지 말길 바란다.
git clone "https://github.com/buildroot/buildroot.git"
make qemu_aarch_virt_defconfig
make menuconfig
=> Filesystem images => cpio the root filesystem (select)
make -j$(nproc)
QEMU
를 통해 Guest OS
실행sudo qemu-system-aarch64 \
-M virt \
-cpu host \
-enable-kvm \
-nographic \
-smp 1 \
-kernel /home/pi/build-5.10/arch/arm64/boot/Image \
-append "rootwait root=/dev/vda console=ttyAMA0" \
-netdev user,id=eth0 \
-device virtio-net-device,netdev=eth0 \
-drive file=/home/pi/buildroot/output/images/rootfs.ext4,\
if=none,format=raw,id=hd0 \
-device virtio-blk-device,drive=hd0
어찌저찌 되기는 잘 되는데 문제는 GNU 프로그램이 전혀 없는 완전 생커널이다. 앞으로가 걱정이다.
sudo aptitude install git-all fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
에서 install이 빠졌어유