qemu 跑内核和文件系统

qemu-system-arm选项:


qemu-system-arm -M vexpress-a9 -m 512M \
    -kernel /home/user/kernel_git/linux/arch/arm/boot/zImage \
    -nographic -append "console=ttyAMA0"
-M vexpress-a9 模拟vexpress-a9单板,你可以使用-M ?参数来获取该qemu版本支持的所有单板
-m 512M 单板运行物理内存512M
-kernel /home/user/kernel_git/linux/arch/arm/boot/zImage  告诉qemu单板运行内核镜像路径
-nographic 不使用图形化界面,只使用串口
-append "console=ttyAMA0" 内核启动参数,这里告诉内核vexpress单板运行,串口设备是哪个tty。




内核目录:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- vexpress_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4
qemu-system-arm  -M vexpress-a9 -m 512 -kernel arch/arm/boot/zImage -nographic -append "console=ttyAMA0"  -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb
可以单独跑内核了,但缺少根文件系统。




BusyBox目录:
busybox$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- defconfig
busybox$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- install
生成的根文件系统基础文件放在 _install 目录




创建独立的images目录
images目录下新建rootfs目录
mkdir rootfs
dd if=/dev/zero of=sdcard.ext3 bs=1M count=32
mkfs.ext3 sdcard.ext3
sudo mount -t ext3 -o loop sdcard.ext3  rootfs/




复制Busybox文件和库
cd rootfs;
sudo mkdir lib proc sys dev etc etc/init.d
sudo cp -r ../busybox-1.27.1/_install/* .
sudo cp -P /usr/arm-linux-gnueabi/lib/*  lib/




添加启动脚本和设备文件:
vi etc/init.d/rcS
#!/bin/sh
mount -t proc none /proc
mount -t sysfs none /sys
/sbin/mdev -s


sudo chmod +x etc/init.d/rcS


umount rootfs/


将内核和设备树文件复制到images目录。。。。


运行:
qemu-system-arm -M vexpress-a15 -m 512 \
-kernel zImage -dtb vexpress-v2p-ca15_a7.dtb \
-append "console=ttyAMA0 root=/dev/mmcblk0 init=/linuxrc rw rootwait" \
-sd sdcard.ext3 \
-nographic


====================================================
qemu 跑uboot : 
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
make  vexpress_ca9x4_defconfig
make
qemu-system-arm -M vexpress-a9 -m 512 -nographic  -kernel u-boot
#qemu-system-arm -M vexpress-a9 -m 512 -nographic  -net nic -net tap,ifname=tap0,script=no -kernel u-boot


猜你喜欢

转载自blog.csdn.net/konga/article/details/51780359