qemu arm ubuntu?ubuntu安装kvm

大家好,感谢邀请,今天来为大家分享一下qemu arm ubuntu的问题,以及和ubuntu安装kvm的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

qemu怎样为选择arm linux内核镜像选择运行arm平台

下载Linux内核

下载内核有两种方法,一种是用git直接下载内核代码树,方便后面的内核开发。另一种是直接到内核社区下载对应版本的源码包。我采用第一种方法,但后面发现主线上3.18版本和后面版本的代码,使用这种搭建方法运行不起来。目前未查明问题的根因。如果读者想快速搭建成功,建议选用3.16版本的内核进行搭建。

安装arm的交叉编译工具链

想必做嵌入式开发的朋友,对交叉编译工具链不陌生。如果你订制一个交叉编译工具链,建议你使用crosstool-ng开源软件来构建。但在这里建议直接安装arm的交叉编译工具链:

sudoapt-getinstallgcc-arm-linux-gnueabi

编译Linux内核

生成vexpress开发板子的config文件:

makeCROSS_COMPILE=arm-linux-gnueabi-ARCH=armvexpress_defconfig

编译:

makeCROSS_COMPILE=arm-linux-gnueabi-ARCH=arm

生成的内核镱像位于arch/arm/boot/zImage,后续qemu启动时需要使用该镜像。

下载和安装qemu模拟器

其实Ubuntu12.04有qemu的安装包,但由于版本较低,对vexpress开发板支持不友好,建议下载高版本的qemu:

wget

配置qemu前,需要安装几个软件包:

sudoapt-getinstallzlib1g-dev

sudoapt-getinstalllibglib2.0-0

sudoapt-getinstalllibglib2.0-dev

配置qemu,支持模拟arm架构下的所有单板:

./configure--target-list=arm-softmmu--audio-drv-list=

编译和安装:

make

makeinstall

测试qemu和内核能否运行成功

qemu已经安装好了,内核也编译成功了,到这里最好是测试一下,编译出来的内核是否OK,或者qemu对vexpress单板支持是否够友好。

运行命令很简单:

qemu-system-arm-Mvexpress-a9-m512M-kernel/home/ivan/kernel_git/linux/arch/arm/boot/zImage-nographic-append"console=ttyAMA0"

如果看到内核启动过程中的打印,说明前的搭建是成功的。

这里简单介绍下qemu命令的参数:

-Mvexpress-a9模拟vexpress-a9单板,你可以使用-M?参数来获取该qemu版本支持的所有单板

-m512M单板运行物理内存512M

-kernel/home/ivan/kernel_git/linux/arch/arm/boot/zImage告诉qemu单板运行内核镜像路径

-nographic不使用图形化界面,只使用串口

-append"console=ttyAMA0"内核启动参数,这里告诉内核vexpress单板运行,串口设备是哪个tty。

注意:

我每次搭建,都忘了内核启动参数中的console=参数应该填上哪个tty,因为不同单板串口驱动类型不尽相同,创建的tty设备名当然也是不相同的。那vexpress单板的tty设备名是哪个呢?其实这个值可以从生成的.config文件CONFIG_CONSOLE宏找到。

如果搭建其它单板,需要注意内核启动参数的console=参数值,同样地,可从生成的.config文件中找到。

制作根文件系统

到这里是否大功告成了呢?其实在上面的测试中,你会发现内核报panic,因为内核找不到根文件系统,无法启init进程。

根文件系统要考虑两个方面:

1.根文件系统的内容

如果你看过《LinuxFromScratch》,相信你会对这一步产生恐惧感,但如果一直从事嵌入式开发,就可以放下心来。根文件系统就是简单得不能再简单的几个命令集和态动态而已。为什么LinuxFromScratch会有那么复杂,是因为它要制作出一个Linux发生版。但在嵌入式领域,几乎所有的东西,都是mini版本,根文件系统也不例外。

本文制本的根文件系统=busybox(包含基础的Linux命令)+运行库+几个字符设备

2.根文件系统放在哪里

其实依赖于每个开发板支持的存储设备,可以放到NorFlash上,也可以放到SD卡,甚至外部磁盘上。最关键的一点是你要清楚知道开发板有什么存储设备。

本文直接使用SD卡做为存储空间,文件格式为ext3格式

下载、编译和安装busybox

wget

makedefconfig

makeCROSS_COMPILE=arm-linux-gnueabi-

makeinstallCROSS_COMPILE=arm-linux-gnueabi-

安装完成后,会在busybox目录下生成_install目录,该目录下的程序就是单板运行所需要的命令。

形成根目录结构

先在Ubuntu主机环境下,形成目录结构,里面存放的文件和目录与单板上运行所需要的目录结构完全一样,然后再打包成镜像(在开发板看来就是SD卡),这个临时的目录结构称为根目录

1.创建rootfs目录(根目录),根文件系统内的文件全部放到这里

sudomkdirrootfs

2.拷贝busybox命令到根目录下

sudocpbusybox-1.20.2/_install/*-rrootfs/

3.从工具链中拷贝运行库到lib目录下

sudocp-P/usr/arm-linux-gnueabi/lib/*rootfs/lib/

4.创建4个tty端终设备

sudomknodrootfs/dev/tty1c41

sudomknodrootfs/dev/tty2c42

sudomknodrootfs/dev/tty3c43

sudomknodrootfs/dev/tty4c44

制作根文件系统镜像

1.生成32M大小的镜像

ddif=/dev/zeroof=a9rootfs.ext3bs=1Mcount=32

2.格式化成ext3文件系统

mkfs.ext3a9rootfs.ext3

3.将文件拷贝到镜像中

sudomkdirtmpfs

sudomount-text3a9rootfs.ext3tmpfs/-oloop

cp-rrootfs/*tmpfs/

sudoumounttmpfs

系统启动运行

完成上述所有步骤之后,就可以启动qemu来模拟vexpress开发板了,命令参数如下:

qemu-system-arm-Mvexpress-a9-m512M-kernel/home/ivan/qemu/linux/arch/arm/boot/zImage-nographic-append"root=/dev/mmcblk0console=ttyAMA0"-sda9rootfs.ext3

从内核启动打印,到命令行提示符出现,激动人心的时刻出现了……

写在后面的话

通过上面的步骤,搭建出来一个最小的qemu+arm开发环境,你可以上面的基础上修改内核,或者增加一些测试程序在单板上运行,甚至使用单板的flash设备。

在此,你可以做纯arm架构的内核开发,或者与架构无关的内核开发,也可以做单板相关的驱动开发。

QEMU搭建arm64 Linux调试环境

本文详细记录了如何在Ubuntu 20.04上搭建arm64 Linux调试环境,使用QEMU实现gdbserver+主机gdb远程调试,适合用于学习Linux内核源码和ARM64内核驱动开发调试。文中列出了所用的版本信息,包括平台、内核版本、QEMU版本、QEMU模拟环境及gcc版本等。

QEMU是一套广泛用于GNU/Linux平台的处理器模拟器,本文搭建了用于gdbserver的环境。选择模拟ARM cortex-a53平台,通过QEMU参数"-machine help"和"-device help"查看支持的CPU和设备。

提供两种安装QEMU的方式:源码安装和命令行安装。Ubuntu 20.04内提供了较高版本的QEMU,推荐使用命令行安装。对于较旧的发行版,建议选择源码安装。安装完成后,通过Tab键补全检查安装好的qemu工具。

安装aarch64交叉编译工具,通过命令"apt-cache search aarch64"查找可用包,本文选择"gcc-10-aarch64-linux-gnu"进行安装。

内核编译使用Linux 5.10源码,下载并配置编译过程,生成非压缩版和压缩内核,包含自解压程序。

制作根文件系统,选择适合的学习或调试需求,本文使用"menu"制作一个极简的rootfs镜像。

启动QEMU环境,通过gdb remote功能链接QEMU并调试内核。注意,调试ARM64模拟环境需使用"gdb-multiarch"。QEMU工具参数丰富,本文仅列举基础参数,读者可根据需求和环境情况组合。

启动测试成功后,即可使用gdb对内核进行单步调试。此过程确保了在Ubuntu 20.04上搭建的arm64 Linux调试环境的可用性,提供了一种经典内核开发调试工具组合,不同发行版可能存在差异,但总体流程相同。希望本文对您有所帮助。

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环境,简化实验过程。

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

阅读剩余
THE END