製作 initramfs image
find . | cpio -H newc -o | gzip -9 > /boot/initrd.img
或是
find . | cpio -H newc -o > rootfs
解壓縮 initramfs image
gunzip -c /boot/initrd.img-2.6.24-19-generic | cpio -i
修改 initrd image
mount -t ext2 -o loop initrd.img temp/
編譯 arm 核心,arm-linux-gnueabi-請換成你用 cross_compiler
make ARCH=arm versatile_defconfigmake ARCH=arm menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- all
編譯完後,核心路徑在 arch/arm/boot
qemu-system-arm -M versatilepb -m 128M -kernel zImage -no-reboot
#include <stdio.h>
int
main() {
printf
(
"Hello World!\n"
);
while
(1);
}
編譯第一支程式
arm-linux-gnueabi-gcc -static test.c -o test製作 rootfs
echo test | cpio -o --format=newc > rootfs執行第一支程式
qemu-system-arm -M versatilepb -m 128M -kernel zImage -initrd rootfs -append "root=/dev/ram rdinit=/test" -no-reboot啟動核心後,核心會執行你的程式。
其他:如果你要測試編譯出來的程式,也可以直接用下面指令。
qemu-arm -L /usr/arm-linux-gnueabi/ a.out
參考資料
http://backreference.org/2010/07/04/modifying-initrdinitramfs-files/
http://balau82.wordpress.com/2010/03/22/compiling-linux-kernel-for-qemu-arm-emulator/
沒有留言:
張貼留言