- 博客(82)
- 资源 (9)
- 收藏
- 关注
转载 QEMU 设备模拟
设备模拟目的我们好像不会干一件事而毫无目的,就算不停刷微信朋友圈也是为了打发你无聊的时间。其实最装B的回答是:设备模拟的目的就是模拟设备。这话是屁话,不过也能说明些什么,确实是模拟设备,用软件的方式提供硬件设备具备的功能。对于和PC机交互的硬件设备,主要要干两件事,一是提供IRQ中断,二是响应IO输入输出。IO包括PIO/MMIO/DMA等(DMA算不算IO?)以i8254.c
2015-11-19 17:24:51 6915
转载 KVM CPU虚拟化
3.1 基本原理CPU虚拟化是VMM中最核心的部分,由于内存和IO访问的指令都是敏感指令,所以内存和IO虚拟化都依赖于CPU虚拟化的实现。CPU虚拟化的目标是让虚拟机中执行的所有敏感指令都能产生异常而“陷入”,并由VMM进行模拟。VMM的陷入是通过CPU的保护机制、中断或异常来完成的。通常,VMM的陷入方式有如下3种:1、 由CPU的保护机制触发。CPU在执行敏感指令之前,会检查
2015-11-19 17:21:00 1757
转载 ernel 3.10内核源码分析--KVM相关--虚拟机运行
1、基本原理KVM虚拟机通过字符设备/dev/kvm的ioctl接口创建和运行,相关原理见之前的文章说明。虚拟机的运行通过/dev/kvm设备ioctl VCPU接口的KVM_RUN指令实现,在VM和VCPU创建好并完成初始化后,就可以调度该虚拟机运行了,通常,一个VCPU对应于一个线程,虚拟机运行的本质为调度该虚拟机相关的VCPU所在线程运行。虚拟机(VCPU)的运行主要任务是要进行上下
2015-11-19 17:17:47 1816
转载 kernel 3.10代码分析--KVM-KVM_SET_USER_MEMORY_REGION流程
1、基本原理如之前分析,kvm虚拟机实际运行于qemu-kvm的进程上下文中,因此,需要建立虚拟机的物理内存空间(GPA)与qemu-kvm进程的虚拟地址空间(HVA)的映射关系。虚拟机的物理地址空间实际也是不连续的,分成不同的内存区域(slot),因为物理地址空间中通常还包括BIOS、MMIO、显存、ISA保留等部分。qemu-kvm通过ioctl vm指令KVM_SET_USE
2015-11-19 17:16:40 2487
转载 KVM vCPU创建过程
1、基本原理如之前的文章分析,在KVM虚拟化环境中,硬件虚拟化使用VCPU(Virtual CPU)描述符来描述虚拟CPU,VCPU描述符与OS中进程描述符类似,本质是一个结构体kvm_vcpu,其中包含如下信息:VCPU标识信息,如VCPU的ID号,VCPU属于哪个Guest等。虚拟寄存器信息,在VT-x的环境中,这些信息包含在VMCS中。VCPU状态信息,标识白
2015-11-19 17:15:01 4082
转载 kernel 3.10代码分析--KVM相关--虚拟机创建
1、基本原理如之前分析,kvm虚拟机通过对/dev/kvm字符设备的ioctl的System指令KVM_CREATE_VM进行创建。对虚拟机(VM)来说,kvm结构体是关键,一个虚拟机对应一个kvm结构体,虚拟机的创建过程实质为kvm结构体的创建和初始化过程。本文简单解释及分析在3.10版本内核代码中的相关流程,用户态qemu-kvm部分暂不包括。2、大致流程如下:用户态i
2015-11-19 17:13:33 1449
转载 SystemTap工具能调试新增的内核模块
1、问题 SystemTap工具能调试新增的内核模块吗?比如自己编写的helloworld模块。 答案:是可以的。2、关键点: 1)使用SystemTap调试内核模块,探测点的编写格式示例为: module("ext3").function("ext3_*") 2)需要将新增的helloworld模块cp到/lib/modules/`uname
2015-11-19 17:11:07 1514
原创 Mac OS Create case-sensitive build environment
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/android.dmghdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/androidcd /Volumes/android
2015-07-20 13:59:13 1715
原创 使用git clone error: RPC failed
git clone时,出现这个错误.remote: Counting objects: 4592517, done.remote: Compressing objects: 100% (1140430/1140430), done.error: RPC failed; result=56, HTTP code = 2008.82 MiB | 4.72 MiB/s f
2015-07-18 17:51:59 22337 2
转载 KVM Snapshot使用qemu-img, libvirt命令
实例一 使用qemu-img命令使用快照 kvm环境下qcow2的镜像支持快照1 确认镜像的格式 [root@nc1 boss]# qemu-img info test.qcow2 image: test.qcow2 file format: qcow2 virtual size: 10G (10737418240 bytes) disk size: 1
2015-07-17 19:21:50 2680
转载 Xen, KVM Compare
Xen the most established of the two, is a type-one bare metal hypervisor that is also the foundation of several commercial offerings, including Citrix Systems XenServer and Oracle VM. Proponents argue
2015-07-17 18:11:02 1004
转载 Versatile Express support in QEMU
This page briefly summarises the status of QEMU's Versatile Express model and explains how to get a Linaro snapshot running on it.目录Versatile Express support in QEMUStatus of Versatile Expre
2015-01-14 11:46:39 1886
转载 Running Android L Developer Preview on 64-bit ARM QEMU
Did you know the Android emulator is based on QEMU?When the Android SDK was first made available to the world, Google used QEMU as the basis for their Android emulator. They copied the source code t
2015-01-14 11:43:59 1916
转载 Android Porting and Qemu
1 Introduction Google explains that Android is a software stack for mobiledevices that includes an operating system, middleware and keyapplications. This document explains the Android architecture
2015-01-09 18:26:55 2093
转载 配置下载Android源代码的过程及问题解决
最近在学习Android底层框架,今天打算研究一下Android源代码,源码的下载过程可没有想像的顺利。主要原因是网上的很多资料都是多年以前的,而一些网站都发生了变更,所以域名也会失效。OK,废话少说,我把遇到的各种问题和大家分享一下,希望大家能对号入座,避免浪费不必要的时间~ 以下是我按照正常下载过程总结出的步骤,遇到的问题将在后面讲述。 第
2014-12-05 23:03:36 3506 1
转载 LINUX netlink机制介绍
Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在最新的 Linux 内核(2.6.14)中使用netlink 进行应用与内核通信的应用很多,包括:路由 daemon(NETLINK_ROUTE),1-wire 子系统(NETLINK_W1),用户态 socket 协议(NETLINK_USERSOCK),防火
2014-08-08 12:19:53 799
原创 Android Branch and master source code merge(patch)
Android Branch and master source code merge(patch)
2014-07-30 17:22:34 1708
原创 SELinux、SEAndroid、MAC、Andorid(AOSP) seplicy 相关资料
SELinux、SEAndroid、MAC、Andorid(AOSP) seplicy 相关资料
2014-07-24 12:32:19 2241
原创 Linux Kernel(Android) 加密算法总结(四)-应用程序调用OpenSSL加密算法
本节主要是介绍如何Android C/C++应用程序调用Openssl的AES加密算法。
2014-07-23 13:48:19 2557 1
原创 Linux Kernel(Android) 加密算法总结(三)-应用程序调用内核加密算法接口
Linux Kernel(Android) 加密算法总结(三)-应用程序调用内核加密算法接口(hash)该方法经过在内核层实现与CPU加密模块,或者硬件加密卡对接,并为上层应用程序提供接口的方式,可以实现硬件加密。
2014-07-22 17:24:33 3789
原创 Linux Kernel(Android) 加密算法总结(二)- A netlink-based user-space crypto API
A netlink-based user-space crypto APIBy Jake EdgeOctober 20, 2010 User-space access to the kernel cryptography subsystem has reared its headseveral times of late. Welookedat one proposal back
2014-07-22 10:17:11 4075
原创 APK扩展文件介绍、功能及使用方法
APK扩展文件介绍 Android Market (Google Play Store)中每个APK文件的最大限制是50MB。如果您的程序中包含大量的数据文件,以前您只能把这些数据文件放到自己的服务器上,当用户启动程序的时候让用户去下载。现在这些数据文件可以直接上传到Android Market了。在新的Market控制台上传App的时候,可以添加扩展文件了。如何
2014-07-16 11:43:42 1623
原创 Andriod APK 文件结构详解
APK文件结构 APK文件实际是一个zip压缩包,可以通过解压缩工具解开。 下面是用解压缩工具解开的APK包的结构:|-- AndroidManifest.xml|-- META-INF| |-- CERT.RSA| |-- CERT.SF| `-- MANIFEST.MF|-- classes.dex|-- res| |-- dr
2014-07-16 11:42:52 2283
转载 Android Build 系统详解
前言Android Build 系统是 Android 源码的一部分。关于如何获取 Android 源码,请参照 Android Source 官方网站:http://source.android.com/source/downloading.html。Android Build 系统用来编译 Android 系统,Android SDK 以及相关文档。该系统主要由 Make 文件,S
2014-07-15 14:16:53 2460
转载 Android应用程序安装过程源代码分析
Android系统在启动的过程中,会启动一个应用程序管理服务PackageManagerService,这个服务负责扫描系统中特定的目录,找到里面的应用程序文件,即以Apk为后缀的文件,然后对这些文件进解析,得到应用程序的相关信息,完成应用程序的安装过程,本文将详细分析这个过程。 应用程序管理服务PackageManagerService安装应用程序的过程,其实就是解析析应用程序
2014-07-15 11:10:08 787
转载 Android 渠道包的打包及管理
如果能直接修改apk的渠道号,而不需要再重新签名能节省不少打包的时间。幸运的是我们找到了这种方法。直接解压apk,解压后的根目录会有一个META-INF目录,如下图所示:如果在META-INF目录内添加空文件,可以不用重新签名应用。因此,通过为不同渠道的应用添加不同的空文件,可以唯一标识一个渠道。下面的python代码用来给apk添加空的渠道文件,渠道名的前缀为mtchannel_:
2014-07-14 18:43:53 2477
转载 Android Dex vs ART 虚拟机运行效率提升
Android 4.4提供了一种与Dalvik截然不同的运行环境ART(Android runtime)支持,ART源于google收购的Flexycore的公司。ART模式与Dalvik模式最大的不同在于,启用ART模式后,系统在安装应用的时候会进行一次预编译,将字节码转换为机器语言存储在本地,这样在运行程序时就不会每次都进行一次编译了,执行效率也大大提升。虚拟机切换设置Settings
2014-07-14 18:35:02 2615
转载 Dex文件头及解析机制分析
Dex文件头主要包括校验和以及其他结构的偏移地址和长度信息。字段名称偏移值长度描述magic0x08'Magic'值,即魔数字段,格式如”dex/n035/0”,其中的035表示结构的版本。checksum0x84校验码。signature0xC
2014-07-14 18:29:11 1639
原创 Android 内部存储相关的函数(getCacheDir,getDir, getFileStreamPath,getFilesDir,openFileInput, ...)
为了保证应用程序存储数据的安全性,开发者在开发应用程序的过程中需要注意使用Android 应用程序的内部存储空间。根据不同的要求,将对应的数据文件、缓存文件、临时文件等分别存储在相应的位置。注意:存储在SDCard 上的文件,将对任何Android 应用程序可见,并具有存取权限。因此,仅仅是应用程序自己使用,的临时文件也不要存储到SDCard上。
2014-07-14 11:43:33 7241 2
原创 Ubuntu 开发服务器配置(SSH server,登陆到远程服务器进行文件共享)
1. sudo apt-get install openssh-server2.
2014-07-09 17:50:14 1550
原创 Linux Kernel(Android) 加密算法总结(一)(cipher、compress、digest)
1. Linux内核支持哪些加密算法 ? 内核支持的加密算法很多,包括: 对称加密算法,如AES; 摘要算法,如sha1,md5; 压缩算法,如deflate。 不过内核好像不支持非对称加密算法。2. 加密算法源文件位置 这些算法作为加密函数框架的最底层,提供加密和解密的实际操作。这些函数可以在内核crypto文件夹下,相
2014-07-08 17:45:10 7466
原创 Ubuntu 12.04 x64 手动安装sun jdk 6
从官网下载下来的安装文件(如:jdk-6u24-linux-i586.bin)默认都是没有执行权限的,可以通过$ls -l 命令查询到相关信息,所以首先第一步是要将安装文件赋予可执行权限,可以通过命令 $ sudo chmod u+x/usr/lib/java/jdk-6u20-linux-i586.bin 来实现。 成功修改安装文件权限后,通过命令 $ cd /usr/lib
2014-07-07 09:52:46 1394
转载 Android应用程序从源码到安装包的整个过程
接着上一篇的内容,继续从全局了解Android。在清楚了Android的平台架构(可以看作是静态原理)后,还需要掌握其动态原理。动态原理包含两部分,一部分是编译原理,另一部分是运行原理。有人会说,搭建一个基于Eclipse的Android开发环境,编译和运行只要点击按钮即可完成。但是,如果只是“知其然而不知其所以然”的话,在后面的开发中一旦遇到奇怪的问题后可能就束手无措啦。所以,即使是作为初学者,
2014-07-02 18:31:17 1462
原创 Android Java 与 C++ 调用过程中的常量,路径名、文件名、后缀名最大长度
/**************************************************************************** **************************************************************************** *** *** This header was automatically
2014-07-02 16:13:33 1386
转载 Android APK反编译详解(附图)
这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程。在此郑重声明,贴出来的目的不是为了去破解人家的软件,完全是一种学习的态度,不过好像通过这种方式也可以去汉化一些外国软件。本文Android反编译教程,测试环境:Win7 Ultimate x64Ubun
2014-06-23 11:42:28 816
原创 手动为Android 4.x 手机添加自己的根证书(CA 证书)
首先看Android 4.x 系统的证书存放位置:AOSP Android系统中CA证书文件的位置在:/ system/etc/security/cacerts/一系列的以数字命名的.0文件方法一:Android 4.0 已经支持用户安装根证书了,只需要将根证书放到sdcard根目录,然后到设置(Settings) – 安全(Security) – 从存储设备安装(In
2014-06-18 15:57:51 24378 1
原创 tar 压缩打包时排除或忽略某个子目录或文件
例子: 通过 tar zcvf test.tar.ga --exclude=/test/aaa --exclude=test/bbb /test 将test目录下的文件和子目录压缩打包, 但是排除/test/aaa 和 /test/bbbtest目录结构如下/test/aaa 目录/test/bbb 目录/test/ccc 目录
2014-06-09 18:10:31 15964
原创 如何使用Eclipse PDT调试PHP程序
本文主要介绍的是如何用eclipse pdt调试PHP 代码。1. 下载eclipse,从官网上找就可以了,并确认当前系统中有java环境,即jdk和jre。2. 安装pdt了,采用的是在线安装,更新地址在默认中已经包含了。只是更新起来比较麻烦。(如果直接下载 携带PDT的 Eclipse版本,可省略)3. 下载调试器,调试器有两种,一种时xdebug,另一种时zenddebug,本文
2014-06-09 12:05:44 1514
Wince 6 startup processes
2009-03-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人