如何在ubuntu下下载姜饼(Gingerbread)源代码并编译(4)

10、在模拟器上运行编译好的镜像文件
最后,同步这些变化:(注意,我的~是/root,我是以root用户登录的)

# source ~/.bashrc
# cd ~/Android/out/target/product/crespo
# emulator -system system.img -data userdata.img -ramdisk ramdisk.img
最后进入android桌面,就说明成功了。 但是上面的只是系统应用源码编译完成后,用google自带的模拟器来运行测试的,而我需要用google nexus s
的三星的内核编译,所以还需要其他的动作要进行

11、下载Nexus s 的kernel source

#cd /root/bin
(你的项目创建的源代码,就是大多人用的~/mydroid这个目录)

#git clone git://android.git.kernel.org/kernel/samsung.git
下载完成后,会在bin目录下面出现一个samsung的文件夹,这个就是你刚才下载的内核源码所在的位置,现在开始编译

#export PATH=$PATH:/root/bin/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/
#make ARCH=arm clean
#make ARCH=arm herring _defconfig
#make -j4 ARCH=arm CROSS_COMPILE=arm-eabi-
说明:上面四条语句要正确,尤其是路径要正确,否则后面执行make的时候会出现各种各样的错误
第一条:设置交叉编译链,这样内核编译环境就设置好了
第二条:为内核结构准备源目录树
第三条:内核参数设置
第四条:j4表示4核CPU

差不多一个小时左右,你会发现,在samsung目录下有
/root/bin/samsung/arch/arm/boot/zImage镜像文件
/root/bin/samsung/drivers/net/wireless/bcm4329/bcm4329.ko

12、将你的手机取得root权限
接下来,要将编译好的镜像文件放入到真机里进行测试,首先需要做的工作是先将你的手机root,
只有有了root权限以后才能够进行下一步操作。详细的Nexus S的root步骤参考wiki上的root教程,
因为只有手机root以后,才能够将自己编译好的内核在Nexus S上测试

13、在手机上运行编译好的samsung内核 
现在的工作是将编译好的内核在Nexus S上测试,下载下面的附件,解压后将fastboot文件存放到你的SDK/tools目录下,
将unpack-booting.pl脚本文件和mkbootimg 二进制文件放入到你的roo目录下的NS-bootwork文件夹下,另外,
将你编译好的zImage镜像文件也好拷贝到此文件夹下(如果没有该文件夹,自己创建)

进入你的SDK/tools目录下,执行adb shell
$adb shell
此时,你的手机上显示“授权请求”,默认是10秒以后就过时了,所以需要在10秒之内,点击允许。点击允许以后,
$符号将会变成#,表示已经取得了root权限。(注意:手机必须root以后才能够使用)

将boot.img下载到本地,你可以用adb命令,也可以用终端程序

#adb shell
$su
#cat /dev/mtd/mtd2 > /sdcard/boot.img
退出adb到终端的tools目录下

#adb pull /sdcard/boot.img /root/NS-bootwork
#cd NS-bootwork
#./unpack-booting.pl boot.img
#cd boot.img-ramdisk/
#find . | cpio -o -H newc | gzip > /root/NS-bootwork/boot.img-ramdisk/ramdisk-repack.cpio.gz
#cd ..      
#./mkbootimg --kernel zImage --ramdisk /root/NS-bootwork/boot.img-ramdisk/ramdisk-repack.cpio.gz
 --base 0x30000000 --pagesize 4096 -o newtestboot.img
这样,就在该目录下生成了一个newtestboot.img镜像文件

进入到SDK/tools文件夹下,关闭你的手机。然后长按电源键和音量上键进入bootloader界面
Ubuntu的终端上执行

#cd /home/loulijun/android/android-sdk-linux_86/tools
#./fastboot boot newtestboot.img(必须是root权限)

如果boot成功,说明你的内核是对的,点击“设置”--“关于手机”--“内核版本“
显示
2.6.35.7-ge382d80
root@ubuntu#1
说明成功了,但这只是测试,从新启动后,就会回复到之前的样子,可以再次执行上面的操作,可以看到
2.6.35.7-ge382d80
android-build@apa28

内核版本好都是一样的,说明下载的内核源代码跟手机用的是一样的

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwjgsf.html