ubuntu qemu arm,ubuntu移植到arm步骤

qemu搭建arm64 linux kernel环境

搭建ARM64 Linux内核环境,包含详细步骤如下:

一、环境准备:

使用Ubuntu 22.04系统,并下载最新版Linux内核源码(Linux Kernel Archives)。

安装交叉编译工具链,通过命令行使用`sudo apt-get install gcc-12-aarch64-linux-gnu`或自行下载(开发者网站:developer.arm.com/downloads)。

安装QEMU版本(最新版为`sudo apt-get install qemu-system-arm`)。

二、编译内核:

解压内核源码后,设置`config`文件,使用命令`make ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu- defconfig`进行编译配置。确保`CROSS_COMPILE`前缀与自定义编译工具链名称一致。

执行`make ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu- Image-j8`编译内核,生成kernel image`Image`和用于gdb调试的`vmlinux`文件。

可选步骤:编译内核模块(ko),使用命令`make ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu- modules-j8`。

三、制作根文件系统:

选择便捷的busybox作为根文件系统,下载最新版本(busybox-1.36.1.tar.bz2)。进行编译配置并安装,根文件系统位于`busybox-1.36.1.tar.bz2/install/`。

构建ext4 image,合并busybox到img中,为后续实验提供方便。

四、使用QEMU启动内核:

创建启动脚本,包含内核`Image`和根文件系统`rootfs.img`的加载,确保脚本具有执行权限。启动脚本用于QEMU环境,简化实验过程。

完成步骤后,系统搭建完成。此过程记录于操作手册中,方便后续查看与避免重复错误。

qemu-system-arm安装和基本使用

安装OpenBMC维护的qemu:

使用git clone从github.com/openbmc/qemu克隆代码。

切换目录至qemu文件夹。

执行git submodule update--init dtc更新依赖。

创建build目录并切换至该目录。

执行../configure--target-list=arm-softmmu配置arm-softmmu目标。

根据可能遇到的错误提示删除qemu文件夹并重复步骤1-6,安装所需依赖库。

执行make编译qemu-system-arm。

编译后的qemu-system-arm位于arm-softmmu目录下,查看支持的机器。

使用sudo ln-s/home/master/qemu/build/arm-softmmu/qemu-system-arm/usr/bin创建全局软链接,方便调用。

本地启动romulus镜像,使用命令sudo qemu-system-arm-m 256-M romulus-bmc-nographic-drive file=path,format=raw,if=mtd-net nic-net user,hostfwd=:127.0.0.1:2222-:22,hostfwd=:127.0.0.1:2443-:443,hostname=qemu。

解释镜像参数:256为内存大小,romulus-bmc为机型,nographic为无窗口运行,path为镜像文件路径,raw为格式,mtd为执行文件类型,-net nic添加虚拟网卡。

具体操作指南见:ubuntu下qemu使用:图文详解_ubuntu qemu_MasterHu88的博客-CSDN博客。

遇到网络后端报错,原因可能是使用了旧版qemu,slirp被移除。

解决方法为:安装slirp库,删除build目录,重新配置qemu时加入--enable-slirp参数。

如果出现与ninja有关的错误,安装ninja-build库。

成功后,使用qemu-system-arm命令即可启动romulus镜像,无需指定路径。

登录系统,以root用户身份进入OpenBMC界面,访问127.0.0.1:2443/redfish/...,通过ssh-p 2222 root@127.0.0.1连接。

一步步教你:如何用Qemu来模拟ARM系统

为什么需要ARM模拟系统

在嵌入式开发中,ARM平台的应用程序开发与系统开发(内核、文件系统、驱动程序)有着不同的需求与生命周期。应用程序开发灵活性大,需求变动频繁;系统开发需求稳定,代码使用周期长。对于系统开发而言,每次构建bootloader或kernel都需要上ARM板验证,效率低下。使用ARM模拟系统可在x86平台模拟运行,显著提高开发效率。

Qemu是什么?

Qemu是一款开源虚拟机,通过纯软件模拟实现,支持模拟CPU、内存、IO设备等,运行ARM虚拟机时,虚拟机认为与硬件交互,但实际上所有交互都是由Qemu模拟实现的。Qemu主要适用于不涉及外部具体硬件设备的场景,如定制bootloader、文件系统裁剪、Linux内核配置、设备树学习等。

在Ubuntu16.04中搭建ARM虚拟机

在Ubuntu16.04中使用Qemu搭建ARM虚拟机有多种选择,包括手动编译内核与根文件系统或使用buildroot工具。手动编译适合深度学习系统构建过程,而buildroot则提供一键编译完整系统的便利。

安装与编译过程

为Qemu虚拟机运行ARM系统,首先需要安装交叉编译器,然后进行内核编译与配置,根据需求定制内核,并生成映像文件。接着制作根文件系统,包括创建磁盘镜像、格式化为ext4文件系统,将根目录文件复制到镜像中。最后,使用Qemu启动ARM虚拟机,验证环境并测试应用程序。

操作步骤详解

1.安装交叉编译器。

2.编译内核,配置vexpress_defconfig。

3.对内核进行裁剪定制,如配置网络与NFS。

4.编译得到arch/arm/boot/zImage映像文件。

5.制作512M大小的磁盘镜像,格式化为ext4,并复制根目录文件。

6.使用Qemu启动虚拟机,测试应用程序。

总结

通过手动操作,对ARM系统构建过程有了更深刻的理解,包括交叉编译、内核定制、根文件系统制作及Qemu虚拟机使用。未来可优化自动化挂载宿主机文件夹,简化应用程序执行流程。希望本总结能帮助到您。

阅读剩余
THE END