Install CyanogenMod on the device
First, you will need to get a working install on the device: Installing CyanogenMod on the device.
Install development support packages
Install the following packages using your favorite package manager:
Debian based Linux distributions
32bit and 64bit systems:
git-core gnupg sun-java6-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
64bit only:
ia32-libs lib32z1-dev lib32ncurses5-dev gcc-multilib g++-multilib
Red Hat based Linux distributions
32bit and 64bit systems:
git gnupg java-1.6.0-openjdk-devel flex bison gperf SDL-devel esound-devel wxGTK-devel zip curl ncurses-devel zlib-devel gcc-c++
64bit only:
glibc-devel.i686 libstdc++.i686 zlib-devel.i686 ncurses-devel.i686
Setup Repo
Make sure you have a ~/bin directory, and setup repo.
mkdir -p ~/bin
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a+x ~/bin/repo
echo $PATH|grep ~/bin>/dev/null||export PATH="${PATH}":~/bin
To validate the repo command is in your path, type 'which repo'.
To add ~/bin to your $PATH edit ~/.bashrc and add:
export PATH = ~/bin:$PATH
Download ROM Source Code
mkdir -p ~/android/system
cd ~/android/system
repo init -u git://github.com/CyanogenMod/android.git -b gingerbread
repo sync -j8
This may take 1.5 hours, more or less, depending on your connection.
Create an environment variable denoting the location of the android toolchain as follows:
export CCOMPILER=${HOME}/android/system/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-
Download ARM EABI Toolchain (Optional)
If you're just building the kernel and don't need the whole ROM source try using the Code Sourcery ARM EABI Toolchain.
Download and extract then, create an environment variable denoting the location of the toolchain as follows:
export CCOMPILER=[extraction directory]/bin/arm-eabi-
Download Kernel Source Code
mkdir -p ~/android/kernel
cd ~/android/kernel
git clone git://github.com/CyanogenMod/cm-kernel.git
cd cm-kernel
Configure the Build
Retrieve a working kernel config from the device, and unzip it:
adb pull /proc/config.gz /home/user_name/android/kernel/cm-kernel/config.gz
cat config.gz | gunzip > .config
Alternatively, you can pull the .config from the newest boot.img
scripts/extract-ikconfig boot.img > .config
Configure the build. Just enter to accept defaults, or customize as needed:
make ARCH=arm CROSS_COMPILE=$CCOMPILER oldconfig
make ARCH=arm CROSS_COMPILE=$CCOMPILER menuconfig
Make the build
make ARCH=arm CROSS_COMPILE=$CCOMPILER -j`grep 'processor' /proc/cpuinfo | wc -l`
This step may take a while, depending on your computer.
At this point you should have a kernel stored in ~/android/kernel/cm-kernel/arch/arm/boot/zImage and kernel modules, if any were built, in the module sub-directories.
Merge the build
You will need to merge this file with a working cyanogen ramdisk in order to create a boot image suitable for flashing. Follow these instructions here.
If all goes well, you should now be running your own custom CyanogenMod kernel on the device.
Note: If you are building for Nexus One, you should use --base 0x20000000 when running mkbootimg.
An alternate method is to use an existing kernel update zip for your device. Unzip the update, replace the kernel zImage and kernel modules with your new ones, rezip, and flash on your device.
Compiling wifi kernel module
After installing a custom kernel, the wifi module may be unstable or unusable. The solution is to recompile the module, linking it to the new kernel build.
cd ~/android/system/system/wlan/ti/sta_dk_4_0_4_32
KERNEL_DIR=~/android/kernel/cm-kernel CROSS_COMPILE=$CCOMPILER ARCH=arm make -j`grep 'processor' /proc/cpuinfo | wc -l`
A file named wlan.ko will be produced in the current directory. You must install the new module to the device.
adb shell mount -o remount,rw /system
adb shell cp /system/lib/modules/wlan.ko /system/lib/modules/wlan.ko.backup
adb push wlan.ko /system/lib/modules/wlan.ko
Reboot the device. If all goes well, you should be using the newly compiled 'wlan.ko'.
For devices which may be utilizing wifi module from vendors other than TI, you may choose other appropriate drivers.
Installing kernel modules for debian chroot installation
If you have a debian chroot install on the device, you will want to add to it the loadable modules that were built along with the kernel. This is necessary to use things like fuse, cifs, etc.
First tar up and transfer over the modules
cd ~/android/kernel
tar -czf modules.tgz `find . | grep ko$`
adb push modules.tgz /sdcard/
Then, Copy the modules to your debian install (Replace <debian_root> with the root of your debian installation)
adb shell
mkdir <debian_root>/lib/modules/`uname -r`
cd <debian_root/lib/modules/`uname -r`
tar -zxf /sdcard/modules.tgz
Last, Install the modules from debian (must be done as root). Log in to your debian installation using your method of choice, then:
depmod -a
If all goes well, depmod should produce no output. At this point you may load a kernel module from within debian by typing (as root):
modprobe <module_name>
where <module_name> is the name of the kernel module without the .ko extension.
You may remove a module by typing:
modprobe -r <module_name>
Sources
More information can be found at android.git.kernel.org and source.android.com.
Category: Build from Source
原网址:
http://wiki.cyanogenmod.com/wiki/Building_Kernel_from_source
由于内核下载网址太不给力了,所以建议直接下载tar包
https://github.com/CyanogenMod/cm-kernel
分享到:
相关推荐
标题中的“Samsung Galaxy S: Compile CyanogenMod (Linux)”指的是在Linux操作系统上为Samsung Galaxy S手机编译CyanogenMod的过程。CyanogenMod是一种基于Android开源项目的第三方操作系统,它提供更多的自定义...
CyanogenMod编译环境的搭建和可刷机文件的编译及打包
CyanogenMod 入门 要开始使用 Android/CyanogenMod,您需要熟悉 。 要使用 CyanogenMod 树初始化本地存储库,请使用如下命令: repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0 然后将 local_...
IT168_NOVA微博请务必关注,特别感谢CyanogenMod的源码 如需转载或者修改请复制本帖说明前两段,如果做到此处说明,IT168_NOVA开发组欢迎你 更新说明 1、此ROM是移植CyanogenMod7.1而来, Android版本为2.3.7, 内核...
本代码使 Android 系统能够自动挂载 NTFS 与 exFAT...使用的是 CyanogenMod 10.1 的源代码,并在 Samsung GT-I9100 上测试通过。 具体编译说明请参考 http://http://blog.csdn.net/hackpascal/article/details/8850688
《Android的代码来源——Form source code深度解析》 在当今的移动操作系统领域,Android以其开源、灵活的特性占据了举足轻重的地位。Android系统的核心在于其源代码,它不仅是整个平台的基础,也是开发者进行定制...
是Material Design Cyanogenmod 12 / 12.1 / 13主题,旨在改善您现有应用程序的设计,并使它们与材料设计尽可能接近。 它包括图标,插图和生动的启动动画以及精美的主题应用程序。 该主题在Play商店中的下载量已经...
CyanogenMod文件管理器AOSP的文件管理器,专注于植根设备,是专门为CyanogenMod项目设计的。 此源是根据许可条款发行的。 访问和以获取源代码和补丁。 版权所有:copyright:2012 The CyanogenMod Project
纯CyanogenMod 13
类别 图形相关 版本2.0...《Cyanogenmod相机》让你拍照,录制视频以及一键拍出全景照片。用快速控制栏来计划你的完美照片。在你拍好照片之后,全新的图库应用将会通过组织拍照地点和时间来帮你记住你生活中的美好瞬间。
CyanogenMod android平台 android 4.0 launcher 2 源码 eclipse可以编译. 经过大量修改: 它支持android 4.0 系统, 它支持android 4.1 系统. 均通过真机测试. 联系我获得技术支持.
CyanogenMod 是一个基于 Android 开源项目的第三方操作系统,它提供了更多的自定义选项和优化,深受许多高级 Android 用户的喜爱。这个压缩包文件看起来包含了 CyanogenMod 驱动程序和包装器的 C++ 代码,这通常是...
由 [AirScript][5] 提供的中文 CyanogenMod 社区支持。...CyanogenMod 是一个基于 AOSP(Android 开源项目 Android Open Source Project)与 Android 社区里许多人维护的项目。所有的 CyanogenMod 代码
不幸的是,几乎没有移动设备制造商充分支持ad-hoc模式,因此到目前为止,我们仅设法使该应用程序在运行CyanogenMod的Samsung Nexus S上运行。 我们目前正在寻找解决方法,以将该应用程序引入所有现代Android设备。...
最后,开源促进了各种定制化ROM的出现,如CyanogenMod,满足了不同用户的个性化需求。 在分析"Android-App-master"这个项目时,开发者可以研究如何组织项目结构、使用Android SDK的各种API,以及遵循最佳实践。通过...
Linux是一套免费使用和自由传播的类Unix操作系统,由林纳斯·托瓦兹于1991年首次发布。 Linux不仅是一个强大的操作系统,也是一个庞大的技术生态系统,涵盖了从服务器到个人电脑的各种应用场景。...
本代码使 Android 系统能够自动挂载 NTFS 与 exFAT...使用的是 CyanogenMod 10.1 的源代码,并在 Samsung GT-I9100 上测试通过。 具体编译说明请参考 http://http://blog.csdn.net/hackpascal/article/details/8850688
【标题】"cyanogenmod-android_packages_java_android_" 指向的是一个开源项目,这个项目是针对Android系统的一个定制化音乐播放器应用的源代码。CyanogenMod是一个知名的Android第三方ROM开发团队,他们通常会为...
IT168_NOVA微博请务必关注,特别感谢CyanogenMod的源码 如需转载或者修改请复制本帖说明前两段,如果做到此处说明,IT168_NOVA开发组欢迎你 =====================================================================...