首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

用Qemu模拟vexpress-a9 (一) --- 搭建Linux kernel调试环境(2)

用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
  • 继承事业,薪火相传
    返回列表