[Dev Tutorial] Kernel compiling for PrimoC/U

Search This thread
S

simonsimons34

Guest
Hello everyone. Today I decided I wanted to give back to the One V community with a tutorial on building a kernel. This is not specific to the Primoc/u and contains the directions for both. The source even includes both! So lets hit the ground running.

Note: for the most up to date instructions visit here

Now youll need to have access to sudo to get the packages needed. here are the commands to get packages

Ubuntu 10.04-11.10:
Code:
sudo apt-get update; sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc gcc

Ubuntu 12.04
Code:
sudo apt-get update; sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 gcc

Now, to get the source run these commands
Code:
cd ~/
mkdir kernel
cd kernel
git clone git://github.com/teamblueridge/MSM7X30_KERNEL.git onev_kernel
cd onev_kernel

first you are changing to your home directory. Next your making a folder for kernels, and then pulling the source from github. This source is modified and maintained by me, so I know it stays working. Finally your changing into the kernels directory. Now how do we build this thing you ask. Well we have to do some more prep work. Lets start that prep work

run these commands
Code:
cd ~/
mkdir toolchains
cd toolchains
#this takes some time
git clone https://android.googlesource.com/platform/prebuilt android_prebuilt
cd ~/kernel/onev_kernel

Now we select our branch

for ics run
Code:
git checkout ics

For jb
Code:
git checkout jb-hack

Now were ready to build. Basically your grabbing the android prebuilts which includes the needed toolchain in the steps before.

Now heres the fun codes

Okay below, i have a -jX in the command. This is the number of parallell builds. This will be the number of your CPU's plus one. If you have no clue how many cpus you have run this code below and add one
Code:
grep -c processor /proc/cpuinfo

To make CDMA
Code:
make ARCH=arm primoc_defconfig
make -jX ARCH=arm CROSS_COMPILE="~/toolchains/android_prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-"

To make GSM
Code:
make ARCH=arm primou_defconfig
make -jX ARCH=arm CROSS_COMPILE="~/toolchains/android_prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-"

So whats going on here you ask now? your using gnu make to build a kernel! arm is the architecture, CROSS_COMPILE is the toolchain we downloaded and -j`grep -c processor /proc/cpuinfo` will find the number of cpu cores you have and adjust the speed for your system!

So now your kernel is created and you want the kernel image to stick in your boot.img. Well its always located at ~/kernel/onev_kernel/arch/arm/boot/zImage any modules you selected are listed at the end of the build

If you were wondering, you can also modify the .config with this command

Primoc
Code:
make mrproper"
make ARCH=arm primoc_defconfig
make menuconfig

Primou
Code:
make mrproper
make ARCH=arm primou_defconfig
make menuconfig

Want the easy way out? Try this script
https://github.com/simonsimons34/kernel-building-script
 
Last edited:

kalaker

Senior Member
Feb 23, 2012
490
290
Perfect!! Now I can remember how to do it when I don't want to waste Jenkins!
 

kalaker

Senior Member
Feb 23, 2012
490
290
To make CDMA
Code:
make -j`grep -c processor /proc/cpuinfo` ARCH="arm" CROSS_COMPILE="~/toolchains/android_prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-" primoc_defconfig
make -j`grep -c processor /proc/cpuinfo` ARCH="arm" CROSS_COMPILE="~/toolchains/android_prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-"

To make GSM
Code:
make -j`grep -c processor /proc/cpuinfo` ARCH="arm" CROSS_COMPILE="~/toolchains/android_prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-" primou_defconfig
make -j`grep -c processor /proc/cpuinfo` ARCH="arm" CROSS_COMPILE="~/toolchains/android_prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-"

Primoc
Code:
make mrproper CROSS_COMPILE="~/toolchains/android_prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-"
make CROSS_COMPILE="~/toolchains/android_prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-" primoc_defconfig
make CROSS_COMPILE="~/toolchains/android_prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-" menuconfig

Primou
Code:
make mrproper CROSS_COMPILE="~/toolchains/android_prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-"
make CROSS_COMPILE="~/toolchains/android_prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-" primou_defconfig
make CROSS_COMPILE="~/toolchains/android_prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-" menu_config

At the beginning, why not just have them export "~/toolchains/android_prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-" as CROSS_COMPILE? I am sure there is a legit reason why, so I am not being a stink head. I suppose that unless the user added it to .bash_profile, they'd forget to do the "export" command each time...
 
S

simonsimons34

Guest
You actually answered your own question there :) this is meant to be easy to follow and not go into too much depth where users unfamiliar to linux cant follow. Its trying to get people enjoying the ease of linux and not be too easily scared off. Also, forgetting to export was the exact reason I didn't have an export. This hurts nothing, afterall
 

sellers86

Senior Member
Jan 9, 2012
285
185
got an error. followed the guide step by step, Ill fix it myself im just letting you know.



/home/conner/kernel/onev_kernel/scripts/mksysmap: line 44: ~/toolchains/android_prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-nm: No such file or directory
make: *** [vmlinux] Error 1
 
question??????

You actually answered your own question there :) this is meant to be easy to follow and not go into too much depth where users unfamiliar to linux cant follow. Its trying to get people enjoying the ease of linux and not be too easily scared off. Also, forgetting to export was the exact reason I didn't have an export. This hurts nothing, afterall

ok first awsome of u to share it with us ok ive ran the commands with ubuntu and ive done the whole process and when it is finished and the kernel is done what do we have to do how to we convert it to a image file and get it on the device im sure this is a stupid question and a waist of ur time i appoligize for me being a noob
 

TeeJay3800

Retired Forum Moderator
Oct 31, 2009
5,261
1,579
Michigan
Mods/admins recently had a discussion on where guides/tutorials should go and it was decided that the General section is the place for them. Moved there. :)
 
S

simonsimons34

Guest
got an error. followed the guide step by step, Ill fix it myself im just letting you know.



/home/conner/kernel/onev_kernel/scripts/mksysmap: line 44: ~/toolchains/android_prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-nm: No such file or directory
make: *** [vmlinux] Error 1

Its you not me. I just double checked.





ok first awsome of u to share it with us ok ive ran the commands with ubuntu and ive done the whole process and when it is finished and the kernel is done what do we have to do how to we convert it to a image file and get it on the device im sure this is a stupid question and a waist of ur time i appoligize for me being a noob

No no this is a tutorial. Its meant to allow people interested to be able to learn and do it. The next big thing may come from someone that gave up. Everyone needs help along the way. Once you get the kernel compiled, you can download android kitchen from here. I don't have a link, Google will suffice. So take that open menu with ./menu now go yo 0>12>w>x>0>x and go to the boot extracted folder. Note you must set up kitchen from a sick kernel zip that I have released. Now once in this directory delete the zImage there and replace with the one you compiled. Now go to ./menu 0>12>b>x>0>x and in the Working directory your new kernel is ready to be sent to your phone! All you have to do after that is when the ROM is booted run
adb remount
adb push /path/to/bcmdhd.ko /system/lib/modules/bcmdhd.ko

Enjoy

Sent from my One V using Tapatalk 2
 
S

simonsimons34

Guest
Its probably your toolchain.. It is your toolchain. you could easily use the ndk/cmtoolchain/custom

Sent from my One V using Tapatalk 2
 

sellers86

Senior Member
Jan 9, 2012
285
185
Its probably your toolchain.. It is your toolchain. you could easily use the ndk/cmtoolchain/custom

Sent from my One V using Tapatalk 2

that makes a whole lot of sense... no it is not my toolchain, I followed your directions step by step and got the error. same toolchain, same locations, same commands.
 
S

simonsimons34

Guest
got an error. followed the guide step by step, Ill fix it myself im just letting you know.



/home/conner/kernel/onev_kernel/scripts/mksysmap: line 44: ~/toolchains/android_prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-nm: No such file or directory
make: *** [vmlinux] Error 1





that makes a whole lot of sense... no it is not my toolchain, I followed your directions step by step and got the error. same toolchain, same locations, same commands.

Since you knew how to fix it, obviously that is tool chain.

It's missing arm-eabi-nm

Sent from my One V using Tapatalk 2
 
S

simonsimons34

Guest
You think I didn't think of that? Smh dude I'm not an idiot. And I fixed it by running a different command pointing to the same tool chain.

Sent from my One V using Tapatalk 2

Lloir said it works fine so im sorry but i will side with him. Recognized dev > someone not
when it comes to development




what went wrong got this error.... any help would be greatfuly thanked.... any one with time to assist would be nicely thanked...($$$)

Your error seems to me like there would be a better alternative. Please try this
Code:
sudo apt-get install gcc
make menuconfig

Sent from my One V using Tapatalk 2
 

Top Liked Posts