QEMU模拟vexpress-a9(arm架构) 搭建Linux kernel运行环境(qemu的安装;Linux内核的编译与运行;)

QEMU是一个支持跨平台虚拟化的虚拟机,有user mode和system mode两种配置模式。其中,QEMU在system mode配置模式下模拟出整个计算机,可以在QEMU上运行一个操作系统。QEMU的system mode与常见的VMware和vituralbox等虚拟机比较相似,但是,QEMU的优势是可以跨指令集。例如VMware和Virtualbox之类的工具通常只能在x86计算机上虚拟出一个x86计算机,QEMU支持在x86上虚拟出一个ARM计算机。QEMU在user mode配置下,可以运行跟当前平台指令集不同的平台可执行程序。例如可以用QEMU在x86计算机上运行ARM的可执行程序,但是两个平台必须是同一个操作系统,比如Linux。qemu还支持很多其他的平台。

QEMU中有两个重要的名词,host和target(guest),其中host表示QEMU程序本身运行的平台,target表示QEMU虚拟出的计算机平台(system mode)或支持的可执行程序的运行平台(user mode)

1、安装了相关的依赖包sudo apt-get install qemu-kvm libvirt-bin bridge-utils virt-manager kvm qemu virt-viewer

2、我的安装使用sudo apt install qemu命令。安装成功后,可以看到,类似于qemu-system-arm对应得就是system mode得虚拟机。qemu-arm对应的就是user mode的模拟器。

安装步骤:

sudo wget https://download.qemu.org/qemu-2.11.1.tar.xz

tar xvJf qemu-2.11.1.tar.xz

下载依赖的安装包:sudo apt install zlib1g-dev;sudo apt install libglib2.0-0libglib2.0-dev;sudo apt install libsdl1.2-dev;sudo apt install libpixman-1-dev libfdt-dev

配置:./configure --target-list=arm-softmmu --audio-drv-list=

编译:make -j 10

编译的时候遇到报错:memfd.c:40:12: error: static declaration of ‘memfd_create’ follows non-static declaration

解决办法:分别进入util/memfd.c文件和configure文件中,然后按照图片上每行代码前的“-”删除改行 “+”增加该行。

安装:

3、安装的目录在:/usr/bin/qemu-system-x84_64

/usr/loc/bin/qemu-img

4、安装了u-boot-tools

安装了交叉编译工具:gcc-arm-linux-gnueabi

5、安装完成后,在/usr/bin/qemu-system-x84_64目录下可以发现,可以有很多命令和工具供使用。有一个叫qemu-img的工具,可以用来生成虚拟盘。

为了使用QEMU来安装和使用额外的系统,首先需要创建一个虚拟硬盘

在上面创建的虚拟盘上安装系统。【这部分还没做,等待下载镜像文件完成了再来做】。参考的文章地址。https://blog.csdn.net/jiangwei0512/article/details/56495296。

6、安装完成后,进入qemu的安装目录/usr/bin目录下:输入命令 qemu-system-arm --version 可以查看安装的qemu版本号。

我的版本号是2.11.1

7、在我的电脑上,Linux内核的存放地址:/home/lzk/linux_4.4.185。

编译Linux内核:

进入上述目录,依次执行如下命令:

export ARCH=arm   #因为该Linux内核是要在arm架构的模拟芯片上运行,所以arch设置成arm

export CROSS_COMPILE=arm-linux-gnueabi-

#注:以上这两条命令用于修改linux_4.4.185目录下的Makefile文件中的相关参数。

make vexpress_defconfig

make zImage j2(zImage的地址在:Linux_4.4.185/arch/arm/boot)

make dtbs(dtbs的地址在Linux_4.4.185/arch/arm/boot/dts/vexpress-v2p-ca9.dtb)

最后将生成的内核镜像拷贝到单独的文件夹:/home/lzk/linux-kenel-iso下。

进行到这里,我们可以运行以下命令进行测试,看编译出的内核是否能成功运行,以及QEMU对vexpress-a9单板支持是否够友好:

qemu-system-arm -M vexpress-a9 -m 512M -kernel /home/lzk/linux_kernel_iso/zImage -dtb /home/lzk/linux_kernel_iso/vexpress-v2p-ca9.dtb -nographic -append "console=ttyAMA0"

为了方便测试和启动qemu,在目录/home/lzk/linux_kernel_iso下,复制以下代码创建启动脚本qemu_start.sh,需要赋予脚本运行权限 chmod +x qemu_start.sh。

注:

这里简单介绍一下QEMU命令的参数:
-M vexpress-a9 模拟vexpress-a9单板
-m 512M 单板运行物理内存512M
-kernel 指定内核镜像路径
-dtb 指定dtb文件路径
-nographic 不使用图形界面,只使用串口
-append “console=ttyAMA0” 内核启动参数,这里是告诉内核运行的串口设备是什么

也可以使用 qemu-system-arm --help 来查看其他参数的使用说明
 

运行上述命令后,可以看到启动成功了。说明目前搭建是成功的。

8、仿真开发板。开发板的设计方案是主板(母板)+子板的设计模式,提高复用性。子板里面放了cpu,vexpress a9就是说的子板。主板里面提供各种外围接口,包括USB 网卡 传感器 串口 调试接口等。主板与子板相连形成SOC(system on chip)。关于开发板的芯片手册,可以去相关官网上了解。

开发板上编程人员主要关注:内存地址0x6000-0x8000 DDR的地址,地址4000-5c00 母板的存储,设备地址的基址等。

仿真vexpress a9开发板:

 

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值