使用云服务器安装QEMU搭建嵌入式开发环境

早之前就知道有QEMU,但是那会没能搭建起来。现在手头正好有个阿里云服务器,正好拿来试试手。

用的是Ubuntu的操作系统。先把qemu装了

apt-get install qemu

交叉编译工具

apt-get gcc-arm-linux-gnueabi

然后tftp需要配置一下。参考网络教程。目录设置为/home/tftpboot

下载linux内核,www.kernel.org。

在makefile中修改ARCH和CROSS_COMPILE

选择配置文件 make vexpress_defconfig

make zImage

make modules

make dtbs

这时候照例是可以跑的了

 qemu-system-arm -M vexpress-a9 -m 512M -kernel arch/arm/boot/zImage -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic -append "console=ttyAMA0"

当然,这还没完。

 

下载busybox制作根文件系统

http://www.busybox.net/download

配置makefile
修改ARCH和CROSS_COMPILE
make defconfig
在图形界面中,把busybox选择为静态编译
make menuconfig
make 
make install
这时候_install里就有需要的东西了
复制到/home/rootfs里面
然后复制一些必须的动态库到rootfs里
库在/usr/arm-linux-gnueabi/lib
创建设备节点
在/home/rootfs/dev中
mknode -m 666 tty1 c 4 1
mknode -m 666 tty2 c 4 2
mknode -m 666 tty3 c 4 3
mknode -m 666 tty4 c 4 4
mknode -m 666 console c 5 1
mknode -m 666 null c 1 3
制作sd卡镜像
dd if=/dev/zero of=rootfs.ext3 bs=1M count=32
格式化
mkfs.ext3 rootfs.ext3
可以挂载了看下
 mount -t ext3 rootfs.ext3 /mnt/ -o loop
运行一下
 qemu-system-arm -M vexpress-a9
-m 512M
-kernel /root/linux-4.4.80/arch/arm/boot/zImage
-dtb /root/linux-4.4.80/arch/arm/boot/dts/vexpress-v2p-ca9.dtb
-nographic
-append "root=/dev/mmcblk0 rw console=ttyAMA0"
-sd /home/rootfs.ext3
 
没问题的话下面进行u-boot
ftp://ftp.denx.de/pub/u-boot
ftp>open ftp.denx.de
输入
passive
binary
get ********
修改ARCH和CROSS_COMPILE
vi Makefile
vi config.mk
make vexpress_ca9x4_defconfig
make
得到u-boot,拷贝到tftproot中(tftproot注意权限,设置为777)
qemu-system-arm -M vexpress-a9 -m 512M -nographic -kernel ./u-boot
测试一下是否成功
 
把 vexpress-v2p-ca9.dtb文件和uImage文件拷贝到tftproot中
如果没有uImage
make LOADADDR=0x60003000  uImage
 
配置网桥
编辑interfaces文件
 把eth1设置为manual
开启混杂模式
其他注释或者去掉
增加br0的部分
使用原先eth1的ip和静态路由设置

auto eth1
iface eth1 inet manual
#up route add -net 0.0.0.0 netmask 0.0.0.0 gw 120.24.227.247 dev eth1
up ip link set $IFACE promisc on


auto br0
iface br0 inet static
address 120.24.224.224
netmask 255.255.252.0
up route add -net 0.0.0.0 netmask 0.0.0.0 gw 120.24.227.247
bridge_ports eth1
bridge_stp off
bridge_fd 0
bridge_maxwait 0

重启一下
开启tap
tunctl -t tap0 -u root
ip link set tap0promisc on
ifconfig tap0 0.0.0.0 up
brctl addif br0 tap0
brctl show
这样网桥就搭建好了
在vexpress_common.h中
配置

同时设置

#define CONFIG_IPADDR 同一网段的ip
#define CONFIG_NETMAKE 
#define CONFIG_SERVERIP 网桥ip
然后重新编译一下。
运行测试,应该就可以了。

qemu-system-arm \
-M vexpress-a9 \
-kernel u-boot \
-nographic \
-net nic,vlan=0 -net tap,vlan=0,ifname=tap0 \
-sd /home/rootfs.ext3


 

 
 

posted on 2017-08-15 16:23  Rogueman  阅读(827)  评论(0编辑  收藏  举报

导航