Building Kernel from source


Contents

[hide]

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
For CyanogenMod 7 (Gingerbread):
repo init -u git://github.com/CyanogenMod/android.git -b gingerbread
For CyanogenMod 9 (Ice Cream Sandwich):
repo init -u git://github.com/CyanogenMod/android.git -b ics
repo sync -j16
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 ~/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/zImageand 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>
Leap Motion是一种领先的手势控制技术和硬件设备。在使用Leap Motion时,如果遇到了一些困难,例如安装和运行Leap Motion的插件时出现问题,可以尝试手动从源代码构建插件来解决这些问题。 手动从源代码构建插件意味着我们要下载Leap Motion插件的源代码,并通过一系列步骤来自己编译和构建它们。下面是一些步骤: 1. 首先,我们需要到Leap Motion的官方网站上下载插件的源代码。在下载完成后,解压缩源代码文件。 2. 接下来,我们需要确保在计算机上安装了所需的编译工具和依赖项。这可能包括C++编译器和开发环境等。请确保按照Leap Motion提供的文档或说明来正确安装这些工具。 3. 一旦准备就绪,我们需要打开命令行界面,并导航到源代码的目录。这可以通过使用命令"cd"(change directory)来实现。 4. 一旦我们位于源代码目录中,我们需要运行适当的命令来构建插件。这些命令可能会因不同的操作系统而有所不同。请查阅Leap Motion提供的文档或说明来了解正确的构建命令。 5. 等待一段时间,编译和构建过程将完成。如果一切顺利,我们将获得构建好的插件文件。 6. 最后,我们可以将构建好的插件文件复制到我们希望使用Leap Motion的应用程序中,并按照应用程序的要求进行配置和设置。 总之,手动从源代码构建Leap Motion插件是一个解决问题的方法。尽管这可能需要一些技术知识和操作步骤,但它可以帮助我们解决一些在插件安装和运行过程中遇到的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值