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虚拟机使用。未来可优化自动化挂载宿主机文件夹,简化应用程序执行流程。希望本总结能帮助到您。