用Qemu模拟vexpress-a9 (一) --- 搭建Linux kernel调试环境(2)
- UID
- 1029342
- 性别
- 男
|
用Qemu模拟vexpress-a9 (一) --- 搭建Linux kernel调试环境(2)
2. 根文件系统放在哪里
其实依赖于每个开发板支持的存储设备,可以放到Nor Flash上,也可以放到SD卡,甚至外部磁盘上。最关键的一点是你要清楚知道开发板有什么存储设备。
本文直接使用SD卡做为存储空间,文件格式为ext3格式
下载、编译和安装busybox
我用的busybox版本是1_24,下载地址:https://busybox.net/downloads/
配置:
在busybox下执行 make menuconfig
做如下配置:
Busybox Settings --->
Build Options --->
Build BusyBox as a static binary (no shared libs)
(arm-linux-gnueabi-) Cross Compiler prefix
然后执行
make
make install
安装完成后,会在busybox目录下生成_install目录,该目录下的程序就是单板运行所需要的命令。
形成根目录结构
先在Ubuntu主机环境下,形成目录结构,里面存放的文件和目录与单板上运行所需要的目录结构完全一样,然后再打包成镜像(在开发板看来就是SD卡),这个临时的目录结构称为根目录.
我写了一个脚本来 mkrootfs.sh 完成这个任务:
复制代码
#!/bin/bash
sudo rm -rf rootfs
sudo rm -rf tmpfs
sudo rm -f a9rootfs.ext3
sudo mkdir rootfs
sudo cp busybox/_install/* rootfs/ -raf
sudo mkdir -p rootfs/proc/
sudo mkdir -p rootfs/sys/
sudo mkdir -p rootfs/tmp/
sudo mkdir -p rootfs/root/
sudo mkdir -p rootfs/var/
sudo mkdir -p rootfs/mnt/
sudo cp etc rootfs/ -arf
sudo cp -arf /usr/arm-linux-gnueabi/lib rootfs/
sudo rm rootfs/lib/*.a
sudo arm-linux-gnueabi-strip rootfs/lib/*
sudo mkdir -p rootfs/dev/
sudo mknod rootfs/dev/tty1 c 4 1
sudo mknod rootfs/dev/tty2 c 4 2
sudo mknod rootfs/dev/tty3 c 4 3
sudo mknod rootfs/dev/tty4 c 4 4
sudo mknod rootfs/dev/console c 5 1
sudo mknod rootfs/dev/null c 1 3
sudo dd if=/dev/zero of=a9rootfs.ext3 bs=1M count=32
sudo mkfs.ext3 a9rootfs.ext3
sudo mkdir -p tmpfs
sudo mount -t ext3 a9rootfs.ext3 tmpfs/ -o loop
sudo cp -r rootfs/* tmpfs/
sudo umount tmpfs
复制代码
其中,etc下是启动配置文件,可以的到这里下载:
http://files.cnblogs.com/files/pengdonglin137/etc.tar.gz
回到顶部(go to top)
系统启动运行
完成上述所有步骤之后,就可以启动qemu来模拟vexpress开发板了,命令参数如下:
复制代码
qemu-system-arm \
-M vexpress-a9 \
-m 512M \
-kernel /root/tq2440_work/kernel/linux-stable/out_vexpress_3_16/arch/arm/boot/zImage \
-nographic \
-append "root=/dev/mmcblk0 console=ttyAMA0" \
-sd /root/tq2440_work/busybox_study/a9rootfs.ext3
复制代码
上面是不太图形界面的,下面的命令可以产生一个图形界面:
复制代码
qemu-system-arm \
-M vexpress-a9 \
-serial stdio \
-m 512M \
-kernel /root/tq2440_work/kernel/linux-stable/out_vexpress_3_16/arch/arm/boot/zImage \
-append "root=/dev/mmcblk0 console=ttyAMA0 console=tty0" \
-sd /root/tq2440_work/busybox_study/a9rootfs.ext3 |
|
|
|
|
|