博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用云服务器安装QEMU搭建嵌入式开发环境
阅读量:4337 次
发布时间:2019-06-07

本文共 2491 字,大约阅读时间需要 8 分钟。

早之前就知道有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

 

 
 

转载于:https://www.cnblogs.com/roguetype/p/7365774.html

你可能感兴趣的文章
小D课堂 - 新版本微服务springcloud+Docker教程_2_01传统架构演进到分布式架构
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_2_02 微服务核心基础讲解
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_2_04微服务下电商项目基础模块设计...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-01 什么是微服务的注册中心
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-03CAP原理、常见面试题
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-05 服务注册和发现Eureka Server搭建实战...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-06 服务注册和发现之Eureka Client搭建商品服务实战...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-07 Eureka服务注册中心配置控制台问题处理...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_4-03 高级篇幅之Ribbon负载均衡源码分析实战...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_4-05 微服务调用方式之feign 实战 订单调用商品服务...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_5-02 Netflix开源组件断路器
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_5-04 feign结合hystrix断路器开发实战下...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_5-03 feign结合hystrix断路器开发实战上...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_6-01 微服务网关介绍和使用场景
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_6-03 高级篇幅之zuul常用问题分析
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_5-08 断路器监控仪表参数
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-3.热部署在Eclipse和IDE里面的使用...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-3.在线教育站点需求分析和架构设计...
查看>>
UI基础--烟花动画
查看>>