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

        

        这篇主要记录一下如何下载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/bin
2、打开 kernel 目录下的 MakeFile 文件,修改
      # ARCH ?= (SUBARCH)
      # CROSS_COMPILE?= 
      ARCH ?= arm 
      CROSS_COMPILE     ?= arm-eabi-
此处注意 tab 键喔,最好是直接复制那两行,拷贝再修改。
3、安卓4.0之后编译命令为:
make goldfish_armv7_defconfig
make
4.0之前的编译命令:
make goldfish_defconfig
make

        编译完后会在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 镜像,成功开机:

        



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值