ubuntu直接运行arm环境qemu-arm-static

qemu-arm-static
嵌入式开发有时会在ARM设备上使用ubuntu文件系统。开发者常常会面临这样一个问题,想预先交叉编译并安装一些应用程序,但是交叉编译的环境配置以及依赖包的安装十分繁琐,并且容易出错。想直接在目标板上进行编译和安装,但是ARM的资源和处理能力有限,会非常耗费时间。在这里给大家推荐一个ubuntu下好用的工具qemu-arm-static,这是QEMU用户模式下的ARM仿真器。

通过qemu-arm-static,我们在x86的ubuntu PC机上,可以模拟ARM处理器,就像运行在ARM上一样进行各种操作。这样既实现了ARM环境,又利用了x86 PC的处理能力。

安装使用
首先要确保在x86 ubuntu上使用root权限。

安装

apt install qemu-user-static
1
下载ubuntu arm文件系统并解压

wget http://cdimage.ubuntu.com/ubuntu-base/releases/xenial/release/ubuntu-base-16.04.6-base-armhf.tar.gz
mkdir rootfs
tar zxvf ubuntu-base-16.04.6-base-armhf.tar.gz -C rootfs/
1
2
3
配置

cp /usr/bin/qemu-arm-static rootfs/usr/bin/
cp /etc/resolv.conf rootfs/etc/resolv.conf (确保网络可用)
mount -t proc /proc rootfs/proc
mount -t sysfs /sys rootfs/sys
mount -o bind /dev rootfs/dev
1
2
3
4
5
chroot
切换root路径,进入ARM环境。此时你就可以当成OS和ubuntu真的运行在ARM处理器上了,做你想做的事情。

chroot rootfs
uname

### 使用 QEMU User StaticARM64 上运行 X86 容器 为了实现在 ARM64 平台上使用 `qemu-user-static` 来创建和支持 x86 架构的容器,需要遵循特定的过程。这涉及到安装必要的工具并配置 Docker 以便能够识别和执行不同架构下的二进制文件。 #### 准备工作 确保目标系统已经安装了最新版本的 Docker 和 `binfmt_misc` 支持模块已加载到内核中。对于大多数现代 Linux 发行版,默认情况下会启用此功能[^1]。 #### 获取适用于 x86 的 QEMU 用户模式仿真程序 下载适合 x86 (i386 或 amd64) 架构的静态链接 QEMU 版本: ```bash docker run --rm --privileged multiarch/qemu-user-static:register --reset ``` 上述命令将会自动获取最新的多架构支持包,并将其注册至当前主机上的 binfmt_misc 中,使得后续启动的不同架构容器可以直接调用对应的 QEMU 实例完成指令集转换操作[^2]。 注意这里使用的镜像是 `multiarch/qemu-user-static:register` 而不是带有具体标签如 v5.1.0-5 的版本号,因为前者总是指向官方维护的一个稳定版本集合,能更好地兼容新旧系统的差异性需求[^3]。 #### 测试 x86 应用程序或构建镜像 一旦完成了前面提到的操作之后,就可以尝试拉取一个基于 x86_64 的基础镜像来验证设置是否成功: ```bash docker pull ubuntu:xenial docker run --rm -it ubuntu:xenial uname -m ``` 如果一切正常的话,应该可以看到输出显示为 "x86_64" 表明正在通过 QEMU 模拟的方式运行该容器内的进程[^4]。 #### 创建自定义 x86 镜像 当确认基本环境搭建无误后,则可以根据实际应用场景定制专属的 x86 构建脚本或者 Dockerfile 文件用于生成最终所需的镜像资源。 例如下面是一个简单的例子展示如何编写一个多阶段构建形式的 Dockerfile ,它允许在一个步骤里先交叉编译源码再打包成果品发布出去: ```dockerfile FROM i386/ubuntu:bionic AS builder WORKDIR /app COPY . . RUN apt-y build-essential && \ make all FROM i386/alpine:latest COPY --from=builder /app/output / CMD ["./your_executable"] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值