$ mkdir kernel
$ cd kernel
$ wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.6.11.tar.xz
$ tar xvf linux-6.6.11.tar.xz
$ cd linux-6.6.11
export PATH=$PATH:$HOME/x-tools/arm-hello-linux-uclibcgnueabihf/bin
$ arm-linux- <-- 여기서 탭치면
arm-linux-addr2line arm-linux-gcc arm-linux-gcov ... 생략
툴체인 바로 실행할 수 있는 환경이어야한다.
$ make ARCH=arm CROSS_COMPILE=arm-linux- vexpress_defconfig
arch/arm/configs/
에 있는 vexpress_defconfig
가 기본적인 .config
를 생성한다.$ make ARCH=arm CROSS_COMPILE=arm-linux-
arch/arm/boot/dts/arm
에 vexpress-v2p-ca9.dtb
가 존재한다.$ qemu-system-arm -M vexpress-a9 -kernel arch/arm/boot/zImage -dtb arch/arm/boot/dts/arm/vexpress-v2p-ca9.dtb -nographic
rootfs
가 없기 때문에 실패한다.$ mkdir initramfs
$ cd initramfs
init.c
#include <stdio.h>
int main(){
printf("hello world\n");
while(1);
return 0;
}
export PATH=$PATH:$HOME/x-tools/arm-hello-linux-uclibcgnueabihf/bin
$ arm-linux- <-- 여기서 탭치면
arm-linux-addr2line arm-linux-gcc arm-linux-gcov ... 생략
툴체인 바로 실행할 수 있는 환경이어야한다.
$ arm-linux-gcc --static init.c -o init
$ file init
cpio
$ echo init|cpio -o --format=newc > initramfs
$ qemu-system-arm -M vexpress-a9 -kernel <kernel> \
-dtb <dtb> \
-append "console=ttyAMA0,115200" -nographic \
-initrd <initramfs>
-append
: 커널 커맨드 추가