目录
1. 下载qemu for mini2440 git clone git://repo.or.cz/qemu/mini2440.git qemu $ ./configure --target-list=arm-softmmu $ make -j4 $ make install 其中qemu/mini2440中有运行仿真环境的脚本mini2440_start.sh后面需要相应修改 注意这里有时会出现浮点操作异常退出,原因是qemu/sdl.c里的sdl_send_mouse_event() 函数没有判断当前width和height所致,这边有个补丁: 添加if (width == 1 && height == 1) return;在函数开始位置 2. 交叉工具链 可以使用buildroot, crosstools自己构建,也可以从codesourcy下载, 或者直接使用天嵌mini2440的4.3.3版本的工具链: http://soft.embedsky.net/files/linux_src/EABI-4.3.3_EmbedSky_20091210.rar 解压缩并将4.3.3/bin加入到PATH中 3. 下载u-boot for mini2440 git clone git://repo.or.cz/w/u-boot-openmoko/mini2440.git uboot 如果想在之后使用u-boot 的nfs下载文件功能,需要修改代码中的一部分,将net/nfs.c文件中的 NFS_TIMEOUT = 2UL 修改为 NFS_TIMEOUT = 20000UL 否则会造成nfs文件下载失败,如果不使用nfs下载功能,不改也可。 $ ARCH=arm CROSS_COMPILE=arm-linux- make mini2440_config $ ARCH=arm CROSS_COMPILE=arm-linux- make -j4 最终生成u-boot.bin复制到qemu/mini2440目录下和mini2440_start.sh同一目录下 4. 下载 linux kernel for mini2440 git clone git://repo.or.cz/linux-2.6/mini2440.git linux-2.6 进入源码目录 $ ARCH=arm CROSS_COMPILE=arm-linux- make mini2440_defconfig $ ARCH=arm CROSS_COMPILE=arm-linux- make -j4 uImage $ ARCH=arm CROSS_COMPILE=arm-linux- make -j4 modules 因为制作uImage需要使用uboot/tools下的工具,需要将uboot/tools放入PATH环境 变量里 复制生成的*.ko文件到root_qtopia/lib里面 之后会在arch/arm/boot/目录下生成uImage 文件,将此文件复制到qemu/mini2440文件夹下,并将mini2440文件夹中的mini2440_start.sh作如下修改 将 kernel 一行改为-kernel "$base/uImage" 5. 制作rootfs 可以使用buildroot自己构建,也可使用天嵌的qtopia的rootfs: http://soft.embedsky.net/files/qt_src/root_qtopia_2.2.0_2.6.30.4_20100601.rar 解压缩后面作为rootfs根目录通过NFS使用 注意root_qtopia/etc/init.d/rcS里对网卡进行了重新配置造成断网, 因此需要注释掉rcS里的自加载模块,和对网卡的配置。 6. 安装 nfs服务器 参看:https://wiki.archlinux.org/index.php/NFSv4 $ yaourt -S nfs-utils 之后修改/etc/exports文件,添加如下一行 /home/user/nfs *(rw,fsid=0,no_subtree_check,async,no_root_squash,nohide) ....................注意 /home/user/nfs 为你所要共享的目录 启动nfs server服务 $ sudo rc.d start rpcbind nfs-common nfs-server 可将其加入/etc/rc.conf自动启动 7. 安装bridge-utils和uml_utilities 想要使用qemu的网路必须安装这两个 $ yaourt -S bridge-utils uml_utilities $ sudo modprobe bridge $ sudo modprobe tun 可将其加入/etc/rc.conf自动加载 8. 将qemu/mini2440目录下的mini2440_start.sh修改为 #!/bin/sh cmd="qemu-system-arm \ -kernel ./uImage -M mini2440 $* \ -serial stdio \ -show-cursor \ -usb -usbdevice keyboard -usbdevice mouse \ -net nic,vlan=0 -net tap,vlan=0,ifname=tap0,script=./qemu-ifup,downscript=./qemu-ifdown \ -monitor telnet::5555,server,nowait" echo $cmd echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sudo $cmd 在建立两个脚本,分别为qemu-ifup, qemu-ifdown qemu-ifup 脚本 #!/bin/sh echo "Excuting qemu-ifup" ifconfig $1 10.0.0.1 qemu-ifdown脚本 #!/bin/sh echo "Close tap!" sudo ifconfig $1 10.0.0.1 down 9. 当这些都配置好后,我们即可使用nfs根文件系统了 这里我们的根文件系统为 /home/username/nfs 在qemu/mini2440的目录中输入 $ ./mini2440_start.sh u-boot启动成功后输入设置linux kernel的引导参数 set bootargs noinitrd root=/dev/nfs rw nfsroot=10.0.0.1:/home/user/nfs/root_qtopia ip=10.0.0.10:10.0.0.1::255.255.255.0 console=ttySAC0,115200 再输入命令 bootm OK ! kernel就开始加载了,文件系统挂在成功后,就可以进行各种仿真工作了