首页 > 分享 > arm 开发环境搭建

arm 开发环境搭建

又花了半天的时间终于搞完了,实现了半自动化搭建环境.废话少说,开始了!!

主要思路:在Docker容器中交叉编译linux-3.16,busybox-1.20.2.在主机中制作根目录并搭建QEMU模拟硬件运行环境.

Docker镜像制作脚本Dockerfile如下:

FROM ubuntu:16.04 WORKDIR /root/ RUN apt-get update && apt-get install bc xz-utils bzip2 wget make gcc gcc-4.9-arm-linux-gnueabi vim -y ADD busybox-1.20.2.tar.bz2 ./ ADD linux-3.16.tar.xz ./ COPY compile.sh mkvm.sh ./

plain

由脚本可知需要在buid content(Dockerfile文件所在的目录)中准备四个文件(下载连接 busybox,linux):

## 源文件 busybox-1.20.2.tar.bz2 linux-3.16.tar.xz ## shell 脚本 compile.sh // 编译源文件 mkvm.sh // 从编译完成的文件中收集QEMU运行所需要的文件,并打包成vm.tar.bz2

plain

#!/bin/bash # fileName: compile.sh # Date: Sun 17 Jun 2018 05:12:05 PM CST # Author: light # link arm-gcc [ ! -f /usr/bin/arm-linux-gnueabi-gcc ] && ln -s /usr/bin/arm-linux-gnueabi-gcc-4.9 /usr/bin/arm-linux-gnueabi-gcc # compile busybox cd /root/busybox-1.20.2/ [ ! -f include/.libbb.h ] && cp include/libbb.h include/.libbb.h sed '43i #include<sys/resource.h>' include/.libbb.h > include/libbb.h # why? 请参考我的文章 交叉编译busybox make defconfig make CROSS_COMPILE=arm-linux-gnueabi- make install CROSS_COMPILE=arm-linux-gnueabi- # compile kernel cd /root/linux-3.16/ make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm vexpress_defconfig make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm

plain

#!/bin/bash # fileName: mkvm.sh # Date: Sun 17 Jun 2018 05:13:40 PM CST # Author: light # collect files to rootfs/ cd /root/ mkdir -p vm/rootfs/{proc,etc/init.d,sys,tmp,root,var,mnt,lib,dev} cp busybox-1.20.2/_install/* vm/rootfs/ -r cp busybox-1.20.2/examples/bootfloppy/etc/* vm/rootfs/etc/ -r cp /usr/arm-linux-gnueabi/lib/* vm/rootfs/lib/ -Pr dd if=/dev/zero of=a9rootfs.ext3 bs=1M count=32 mkfs.ext3 a9rootfs.ext3 mv a9rootfs.ext3 vm/a9rootfs.ext3 cp linux-3.16/arch/arm/boot/dts/vexpress-v2p-ca9.dtb vm/ cp linux-3.16/arch/arm/boot/zImage vm/ # generate boot.sh mkrootfs.sh cat > vm/boot.sh << EOF qemu-system-arm -M vexpress-a9 -m 512M -kernel ./zImage -dtb ./vexpress-v2p-ca9.dtb -nographic -append "root=/dev/mmcblk0 console=ttyAMA0" -sd a9rootfs.ext3 EOF cat > vm/mkrootfs.sh << EOF 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 mkdir tmpfs sudo mount -t ext3 a9rootfs.ext3 tmpfs/ -o loop sudo cp rootfs/* tmpfs/ -r sudo umount tmpfs/ EOF # tar tar cjf vm.tar.bz2 vm/ rm -fr vm

plain

此时build content中有五个文件:

light@light-Inspiron-3559 ~/Docker/arm $ ls busybox-1.20.2.tar.bz2 compile.sh Dockerfile linux-3.16.tar.xz mkvm.sh

plain

build一下,"镜子"就做好了:

light@light-Inspiron-3559 ~/Docker/arm $ docker build -t arm-compil ./ light@light-Inspiron-3559 ~/Docker/arm $ docker images | grep arm arm-compile latest 1bb5ddf21eca About an hour ago 929MB

plain

足足有1G....^.^```

构建容器:

light@light-Inspiron-3559 ~/Docker/arm $ docker run --name arm -ti arm-compil /bin/bash

plain

编译源文件:

root@5845a78f3cc9:~# bash compile.sh

plain

从编译完成的文件中收集QEMU运行所需要的文件,并打包成vm.tar.bz2:

root@5845a78f3cc9:~# bash mkvm.sh 32+0 records in 32+0 records out 33554432 bytes (34 MB, 32 MiB) copied, 0.020181 s, 1.7 GB/s mke2fs 1.42.13 (17-May-2015) Discarding device blocks: done Creating filesystem with 32768 1k blocks and 8192 inodes Filesystem UUID: 821b2aaf-7ce0-498b-b5f4-8d47824d68ec Superblock backups stored on blocks:8193, 24577 Allocating group tables: done Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done root@5845a78f3cc9:~# ls vm.tar.bz2 vm.tar.bz2

plain

从容器中导出文件至host:

light@light-Inspiron-3559 ~/Docker/arm $ docker cp arm:/root/vm.tar.bz2 ./ light@light-Inspiron-3559 ~/Docker/arm $ ls vm.tar.bz2 vm.tar.bz2

plain

解包,切换文件,构建根文件:

light@light-Inspiron-3559 ~/Docker/arm $ tar xjf vm.tar.bz2 ; cd vm light@light-Inspiron-3559 ~/Docker/arm/vm $ bash mkrootfs.sh [sudo] password for light:

plain

启动:

light@light-Inspiron-3559 ~/Docker/arm/vm $ bash boot.sh

plain

/ # cat /proc/cpuinfo processor: 0 model name: ARMv7 Processor rev 0 (v7l) Features: swp half thumb fastmult vfp edsp neon vfpv3 tls vfpd32 CPU implementer: 0x41 CPU architecture: 7 CPU variant: 0x0 CPU part: 0xc09 CPU revision: 0 Hardware: ARM-Versatile Express Revision: 0000 Serial: 0000000000000000 / #

plain

相关文件已上传至github.

参考文章:

从零使用qemu模拟器搭建arm运行环境

================================================ 

修改排版问题 Sun Jun 17 19:22:32 CST 2018

================================================ 

添加相关文件github连接 Sun Jun 17 19:52:55 CST 2018

相关知识

嵌入式linux安装docker的条件 嵌入式linux开发环境搭建
完整的ESP32环境搭建总结,别再因为开发环境被劝退了
搭建 本地高效Shopify开发环境完美解决方案
Windows系统下Java后端开发环境搭建
如何搭建web后端开发
Linux PC和ARM版的QT环境设置及到ARM移植&常见错误解决方法
前端开发环境搭建之docker篇
ubuntu linux C/C++环境搭建
网站开发网页
Kotlin——最详细的环境搭建

网址: arm 开发环境搭建 https://m.huajiangbk.com/newsview2523662.html

所属分类:花卉
上一篇: 兰草怕热,更怕闷热
下一篇: 在CNB云原生构建ComfyUI