qemu-trustzone编译&运行(包含linux内核的编译方法)
由于之前都是用的mtk6797开发板,回到实验室之后想要做实验的话需要弄一个支持trustzone的qemu,在这里记录一下我的编译和调试过程。本来最近一直忙着看论文和写论文,但是忽然发现自己在实验部分还有好多欠缺,对一些关键问题的理解存在一部分想象(没有经过实践验证),这让我有些难以接受,虽然去搞源码、调试和分析一定会很耗时间,但是奈何水平不高,我觉得这些事情都是我无法回避的,引用大学时高数老师的一句话,“欠了帐总是要还的”,还是踏踏实实从头做起吧!
首先去github上找一份源码,这里我找的是qemu-trustzone+linux kernel,读者可按照这个名字进行搜索即可(也可以搜索neuzm,我自己分别fork了一份)。
compile qemu
首先对qemu进行配置,这里的arm-softmmu是选择system mode,qemu在system mode能模拟整个计算机,类似于VMware。
./configure --target-list=arm-softmmu --audio-drv-list=
执行上面这句话会告诉你缺一些库,缺什么安装什么就行了,我这里提示我安装glib2.0和pixman。首先用apt-cache search找一下相关的包,然后安装,很简单就不介绍了。然后执行下面这句话就ok了。
make & make install
注意,这里面的make install需要在root模式下才能执行。
compile linux kernel
想要编译Linux,第一步肯定先要进行配置,看了一下网络上的介绍,有以下几条配置命令:
make config #遍历选择编译内核功能
make allyesconfig #启用内核全部功能
make allnoconfig #内核功能选项全部为否
make menuconfig #开启文本菜单选项,对窗口有限制,尽量调大窗口,否则会出错
#使用此命令需安装gcc和ncurses-devel
make gconfig #依赖GNome桌面环境及GNome的图形开发环境,gtk2
make kconfig #依赖KDE桌面环境及KDE的图形开发环境,qt
选择其中哪一条都可以,对我来说,我一般都是选择有图的,所以我准备执行make menuconfig,发现不行,给我报错,错误如下:

其实这种错误,我估计也是缺某个库,于是到网络找一下,果然是,只要执行下面这句话就OK:
sudo apt-get install libncurses5-dev
到这里图形界面终于可以run起来了。

可问题似乎还远远没有解决。打开配置文件你会发现,what??这么多,这都是啥?哎,其实我也想知道。参看上图读者可以发现,左上角明确标明是配置x86架构的,这再次证明了一个真理,就是图形化的东西往往功能不全,我们只能回到文字时代去解决,首先去Makefile里找到ARCH,把ARCH改成arm,再执行make menuconfig就变得合理多了。

由于这个配置太复杂,我决定不改了,就按默认的来,出问题再说。但是这里需要有一处额外修改,如下所示:
CROSS_COMPILE ?= ~/microkernel/tools/arm-2011.03/bin/arm-none-linux-gnueabi-
这个就是交叉编译链的路径,我在x86架构下编译arm平台的指令肯定需要改这个,你也可以不改,那就需要每次make的时候把这个路径作为参数制定,我当然不喜欢每次都要打额外的命令,所以改了。但是后来我发现,这样做不行,因为它们内部脚本关系很复杂,我这样简单的改了一处编译时会出现错误。于是我自己写了个脚本envsetup.sh把它设置成环境变量就行了,脚本里最重要的是下面两句:
export PATH=~/microkernel/tools/arm-2011.03/bin:$PATH
export CROSS_COMPILE=~/microkernel/tools/arm-2011.03/bin/arm-none-linux-gnueabi-
(本文未完,我有时间继续写)
qemu-trustzone编译&运行(包含linux内核的编译方法)的更多相关文章
- 在qemu环境中用gdb调试Linux内核
简介 对用户态进程,利用gdb调试代码是很方便的手段.而对于内核态的问题,可以利用crash等工具基于coredump文件进行调试.其实我们也可以利用一些手段对Linux内核代码进行gdb调试,qem ...
- Linux内核配置编译及基本调试方法
一.Linux内核配置编译 1. 交叉编译设置:make ARCH=arm CROSS_COMPILE=arm-linux- 注:也可以直接修改顶层Makefile ARCH ?= arm CROSS ...
- 【Linux内核】编译与配置内核(x86)
[Linux内核]编译与配置内核(x86) https://www.cnblogs.com/jamesharden/p/6414736.html
- Linux内核源代码分析方法
Linux内核源代码分析方法 一.内核源代码之我见 Linux内核代码的庞大令不少人"望而生畏",也正由于如此,使得人们对Linux的了解仅处于泛泛的层次.假设想透析Linux ...
- Linux内核多线程实现方法 —— kthread_create函数【转】
转自:http://blog.csdn.net/sharecode/article/details/40076951 Linux内核多线程实现方法 —— kthread_create函数 内核经常需要 ...
- 基于QEMU的ARM Cortex-A9开发板Vexpress-ca9的Linux内核的编译和运行
宿主机:Ubuntu16.04 x64(Linux内核4.4.0) 交叉编译工具链:gcc-arm-linux-gnueabiarm-linux-gcc:4.4.3QEMU:2.5.0Linux ke ...
- Linux内核的编译安装
前言 Linux内核是Linux操作2347系统的核心,也是整个Linux功能体现的核心,就如同发动机在汽车中的重要性.内核主要功能包括进程管理.内存管理.文件管理.设备管理.网络管理等.Linux内 ...
- arm-linux-gcc4.4.3编译s3c2410平台linux内核
写在前面:2.6.14版本的内核用arm-linux-gcc4.4.3没有编译成功,下载2.6.37版本的内核用arm-linux-gcc4.4.3编译通过. 一.首先下载linux内核: linux ...
- 在linux环境下编译运行OpenCV程序的两种方法
原来以为在Ubuntu下安装好了OpenCV之后,自己写个简单的程序应该很容易吧,但是呢,就是为了编译一个简单的显示图片的程序我都快被弄崩溃了. 在谷歌和上StackOverFlow查看相关问题解答之 ...
随机推荐
- Django之modelform组件
一.简介与基本使用 简介:django中的modelform组件同时具有model和form作用,但是耦合度比较高,当项目需要拆分时候就比较困难了,所以在使用modelform时候需要先考虑项目的扩展 ...
- intellij-添加文档注释模板
file-->setting-->Editor-->File and Code Templates-->FileHeader
- confirm显示数组中的内容时,总是带一个逗号分隔的解决方法
问题的关键 就是在给confirm显示之前,将数组转换成字符串,并以每个数组的元素为一个字符串,加上一个换行回车符即可: 代码中的背景色 为关键的点 <script type="tex ...
- scrapy-redis功能简介
connection:连接redis最基本文件 default:默认值设置文件 dupefiler_key 保存指纹 dupefilter:替换scrapy默认的url去重器 piklecompat: ...
- 一步一步从原理跟我学邮件收取及发送 8.EHLO 命令详解
我们在上一篇中解决了接收一行命令的问题后,就可以来具体的分析邮件发送过程中涉及到的 SMTP 协议内容了. 首先来看通讯过程中的第一个内容:服务器在客户端连接上来后会主动发送一个问好的信息,所以这第一 ...
- 02_HTML5+CSS3详解第五、六天(实战篇之HTML5制作企业网站)
[废话连篇 - 实战篇,没什么好说的,最后一章兼容性问题懒得看了,over] Details 一.Xmind部分 xmind教程:http://www.jianshu.com/p/7c488d5e4b ...
- sizeof和strlen的使用
sizeof和strlen的使用 1. sizeof 其值在编译时就计算好了,所以不能用来返回动态分配的内存空姐的大小. 当参数为下面内容是,所表达的含义: 数组——编译时分配的数组空间大小: 指针— ...
- jquery实现上传图片本地预览效果
html: <img id="pic" src="" ><input id="upload" name="fil ...
- 分享我自己的一个最小化安装CentOS6的初始化脚本
在自己的虚拟机上使用的基于CentOS6的系统初始化脚本 #!/bin/bash # #Filename:system_init.sh #Description:系统安装完成后,对系统进行一些配置,以 ...
- ABP官方文档翻译 6.7 CSRF/XSRF保护
CSRF/XSRF保护 介绍 HTTP动词 非浏览器客户端 ASP.NET MVC 特征 集成 布局视图 配置 ASP.NET Web API 特征 集成 集成到ASP.NET MVC客户端 集成到其 ...