Android源码之使用linux内核源代码

来源:互联网 发布:阿里云ued 编辑:程序博客网 时间:2024/06/05 03:47

        

        这篇主要记录一下如何下载linux内核源码,并编译使用。

        首先下载源码:在安卓源码目录下新建kernel目录:

mkdir kernel
        然后运行git clone命令:
git clone http://android.googlesource.com/kernel/goldfish.git
        这里goldfish为模拟器用的内核。但是如果之前下载过安卓源码,并使用身份认证(即在~/目录下新建.netrc,并将用户名密码信息保存其中),运行这条命令后可能会出现如下error:
fatal: remote error: SSL is required
        那这个主要就是因为:之前使用了Authentication方式,而这里使用了HTTP方式,在Authentication方式下,必须使用https方式,那么将上面那个命令稍作修改:
git clone https://android.googlesource.com/kernel/goldfish.git

        加个s就好啦。OK,拉的时间比较长,先记录到此~~。

        当然拉完后要记得 git branch -b 切换分支喔,这里选用的是 android-goldfish-2.6.29内核。

        OK,拉的时间比较长,不过我后来找了个朋友直接在这个网站上下载下来了:

https://android.googlesource.com/kernel/goldfish/+archive/android-goldfish-2.6.29.tar.gz
        他那儿是特殊环境,虽然是 Google 服务器,下载速度也是一流,我自己把代码都打包放在我的CSDN资源里,有需要的同学可以去我的资源里面下载,有2.6,3.4和3.10的版本,各取所需即可~~

        下载完成后,就要开始编译内核了,编译的步骤比较简单:

1、首先将 gcc 加入环境变量,这里的 gcc 可不是系统自带的 gcc,而是专门编译安卓系统用的,目录在 prebuild 目录下,不过android5.0的跟之前有点差别:他的目录是:prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin,之前的都是prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin2、打开 kernel 目录下的 MakeFile 文件,修改      # ARCH ?= (SUBARCH)      # CROSS_COMPILE?=       ARCH ?= arm       CROSS_COMPILE     ?= arm-eabi-此处注意 tab 键喔,最好是直接复制那两行,拷贝再修改。3、安卓4.0之后编译命令为:make goldfish_armv7_defconfigmake4.0之前的编译命令:make goldfish_defconfigmake

        编译完后会在arch/arm/boot目录下生成 zImage 文件,这样内核就编译完成了。

        编译完成后,根据之前的那篇文章,我在虚拟机中运行 emulator 比较卡,就使用 mac 下的sdk 的 ADT 代替,那我们这边就把生成的 zImage 文件也替换到 sdk 的 system-image 目录下,注意的是,在这个目录下,它的内核镜像文件名是:kernel-qemu,所以我们也要把 zImage 重命名为 kernel-qemu 即可。

        但是,这里遇到一个问题,上面我拉的 kernel 源码是2.6.29的 goldfish 源码,生成这个 zImage 镜像替换后,重新打开 ADT 启动模拟器时一直黑屏,连开机的动画都没有,在网上查了查资料,发现也有人遇到这样的问题,说是换用新版本的 kernel 源码就可以了,所以我就又直接拉了最新的3.10的源码,编译完成,替换后发现,还是不行,后面又上网查,发现原来,这个是 kernel 3.10的一个 BUG。。。似乎还没有修复,没办法,我只好用了中间的那个版本:3.4,编译完成后,替换 zImage 镜像,成功开机:

        



0 0
原创粉丝点击