Expected Sizes of Custom Kernel zImage - Galaxy S I9000 Android Development

Dear Developers,
I've downloaded the Galaxy S Kernel sources (2.6.29) as provided by Samsung. I compiled them using the included build_kernel.sh script. As toolchain I use CodeSourcery 2009q3 as suggested in the Readme of the kernel. The final zImage of the kernel in arch/arm/boot is about 2.6MB.
To my surprise this is a lot smaller than the kernel image that can be found in official ROM images. It is also considerable smaller than the kernel posted here that includes the EXT3/4 filesystem.
I therefore wanted to ask all those of you who already built a custom kernel: Did you use some oder kernel sources? Another toolchain? Or most likely a different kernel .config (I'm using the default config as specified in build_kernel.sh)?
Thank you,
Tom

Sorry, i can't help you, however, TheLuckys appears to be having a similar issue.
http://forum.xda-developers.com/showthread.php?t=727357

Related

Extracting kernel config from I9000XXJP3

Dear all,
Did anyone succeed extracting kernel configuration from I9000XXJP3? Kernel version is 2.6.32.9, the vermagic is "2.6.32.9 mod_unload ARMv7"
extract-ikconfig doesn't work on it.
I succeeded extracting a zImage gzipped payload, but it seems not to contain any configuration in it (see attached).
/proc/config.gz doesn't exist, Samsung open source package (downloaded from Samsung open source site) contains only Android 2.1 Eclair or previous versions.
My target is to build tun.ko and, eventually, ext3/ext4 modules to make them working in Samsung Galaxy S I9000 with rooted I9000XXJP3.
Any idea?
Without froyo source code or a good Samsung Kernel (es. for himem capable) I think is impossible to play good with theses beta roms.
Ciao
Any news? I need tun.ko for jp3 too..
I have tried to compile the 2.6.32.9 kernel editing the .config in 2.6.9, the module tun.ko is accepted by the device, but I get a kernel panic!
redsh said:
I have tried to compile the 2.6.32.9 kernel editing the .config in 2.6.9, the module tun.ko is accepted by the device, but I get a kernel panic!
Click to expand...
Click to collapse
Did you use the stock linux kernel? Or the common from android.kernel.org?
I'm trying the same thing actually. Isn't there any default config for the processor that might work? I tried with the config from .29 but when loading the module it says wrong format.
try to build 2.6.32 with the 2.6.29 config ("yes" all missing stuff)
turn on your galaxy, adb push the tun.ko
try to load it, it will say "missing symbols" blabla
find the config options that match those symbols, enable them, recompile, try again
Great to see some people who are hacking the kernel! Keep it up!
But I'm afraid it is not going to be as easy as dropping aries_rev03_defconfig as .config in a 2.6.32 kernel tree and doing 'make oldconfig'. That's because many of Samsung's changes have not been included in the newer mainline kernel versions yet.
Samsung added quite a lot of low-level board support for their dev boards (and for the SGS, of course), did some customization and added a few drivers which you will need to forward-port to the newer kernel.
Please have a look at this thread, in which I've started a breakdown of the Samsung patches against Android Eclair's 2.6.29 kernel.
The best course of action I think is to git clone Android's kernel from AOSP, checkout the android-2.6.29 branch, apply Samsung's patches to that, then attempt to rebase your tree to a newer kernel version. (Note, you may want to start with small steps, to get a feel for what you're up against )
Note that there probably will be lots of merge conflicts which you need to resolve, and after dealing with all those, you also have to make sure that everything else that's merged still works as expected, but at least that will show you the amount of work involved. You will basically be doing all the work that Samsung is doing right now for their kernel for FroYo. It will be interesting to follow their progress on the mailing lists and on IRC.
bilboa1 said:
try to build 2.6.32 with the 2.6.29 config ("yes" all missing stuff)
turn on your galaxy, adb push the tun.ko
try to load it, it will say "missing symbols" blabla
find the config options that match those symbols, enable them, recompile, try again
Click to expand...
Click to collapse
Thats exactly what I did, but I got wrong module format... which is a fatal error. I need to invest further in the used config... maybe i did not pick up the right one properly..
miki4242 said:
Great to see some people who are hacking the kernel! Keep it up!
But I'm afraid it is not going to be as easy as dropping aries_rev03_defconfig as .config in a 2.6.32 kernel tree and doing 'make oldconfig'. That's because many of Samsung's changes have not been included in the newer mainline kernel versions yet.
Samsung added quite a lot of low-level board support for their dev boards (and for the SGS, of course), did some customization and added a few drivers which you will need to forward-port to the newer kernel.
Please have a look at this thread, in which I've started a breakdown of the Samsung patches against Android Eclair's 2.6.29 kernel.
The best course of action I think is to git clone Android's kernel from AOSP, checkout the android-2.6.29 branch, apply Samsung's patches to that, then attempt to rebase your tree to a newer kernel version. (Note, you may want to start with small steps, to get a feel for what you're up against )
Note that there probably will be lots of merge conflicts which you need to resolve, and after dealing with all those, you also have to make sure that everything else that's merged still works as expected, but at least that will show you the amount of work involved. You will basically be doing all the work that Samsung is doing right now for their kernel for FroYo. It will be interesting to follow their progress on the mailing lists and on IRC.
Click to expand...
Click to collapse
Yes that would be a lot of work. Maybe its better to just wait until they release the kernel from froyo. I read that they release their opensource stuff rather fast. But just for adding a module like ext4 I don't think you need those patches, because imho they didn't touch the fs of the kernel. We just need an adaquate kernel config and adding modules should be possible.
Phlogiston said:
Thats exactly what I did, but I got wrong module format... which is a fatal error. I need to invest further in the used config... maybe i did not pick up the right one properly..
Click to expand...
Click to collapse
Make sure you're using the same kernel version number and build number, because samsung kernels do not have the option to load incorrect module versions
Yes i've set the subversion as well but without the patches from samsung its impossible it seems. We need to wait and hope that they release the froyo kernel sources soon....
bilboa1 said:
Make sure you're using the same kernel version number and build number, because samsung kernels do not have the option to load incorrect module versions
Click to expand...
Click to collapse
Are you sure they set CONFIG_MODVERSIONS? It's off in the downloadable sources.
Just compare the output of `modinfo -F vermagic <yourmodule>` to `modinfo -F vermagic <modulewhichloads>` or to /proc/version .
did this get solved yet? I google'd for the tun.ko file for my i9000 using jp3 but nothing yet... if you have a proper one for the MoDaCo version here please attach it! ~
I think I saw someone's post with tun.ko for FroYo beta somewhere in these forums, I mean i9000 Android Dev. One of the guys here has found a way to compile kernel for jp* here. I am sure.
I actually found it attached somewhere in the forum and it was 1,5447 mb big I think it was... but it still didn't work for me so I presumed the kernel or something must have been wrong.

[Q] Can we compile a working firmware with the Samsung source?

Pretty much as the title suggests. If not, where do I find a kitchen that works?
Nobody? How about kitchens?
Pretty much
But if you would set everything up and run the build_kernel.sh script, you would end up with a 2.5 MB zImage, which is almost half the size of original zImage. This is beacuse initramfs is not available. I am not sure about the consequence of flashing this.
You can initramfs for i9000 from LeshaK's github. Though you'll have to modify the script not to replace the downloaded .config with the defconfig for aries_rev03.
Wow, finally another DEVELOPMENT question!
Keep it up!
Now for my answer: I'm working on a kitchen, have the extract / mod part mostly done, now working on initramfs extract / mod / repack (without the need to compile the kernel!) and repacking everything for flashing.
I hope to come up with something where you can start with any existing rom (different from some kitchens which are based on a particular version), mix and match apps and features compatible with that rom, then cook it for flashing either straight from Odin or installing from an update.zip.
Search in Google for
SamdroidMod Kitchen All in One for Samsung Galaxy S i9000
Does the Samsung source distribution include all the drivers or are some binary only?
snaff said:
Does the Samsung source distribution include all the drivers or are some binary only?
Click to expand...
Click to collapse
Sources included
ykk_five said:
Sources included
Click to expand...
Click to collapse
Just be sure to get the most recent sources. An older zip I had still had only binary blobs for the graphics kernel module, but they have now been GPL'ed. Joy!

[Q] problem compiling custom kernel module on EVO

What I have done so far:
1) setup cross compiling
2) downloaded the HTC-provided kernel source
3) wrote my own lkm & Makefile
4) grabbed .config from /proc/config.gz off the phone
The problem though is that the distributed HTC kernel is only the source and it doesn't have the compiled files used in the kernel module building processing. It also doesn't have the autoconf files are shown here in the make error:
" ERROR: Kernel configuration is invalid.
include/linux/autoconf.h or include/config/auto.conf are missing.
Run 'make oldconfig && make prepare' on kernel src to fix it."
So I am wondering, do I have to compile my own kernel in order to be able to compile modules or is there someway to make it work with the stock HTC kernel? Loadable modules are enabled in the stock kernel, but unless I am missing something I don't see how you can actually compile modules for it.
Thanks for any help, and I am very experienced with kernel development (on Intel) so feel free to provide any technical details.

[kernel][For CM7 only][LAZY,TUN,CIFS,ondemand tweaks]Adam's kernel[02/10/2012]

Hi guys.
I'm a newbie about compiling kernel,and this is my personal compiled kernel based on Hashcode's git source( stock branch),also with some tweaks which I think can improve the responsiveness without bringing extra power consumption( or as little as possible).
This kernel will also be my testing platform to do some MOD porting from Ezekeel's GLaDOS kernel.
Thanks to all great developers in XDA , especially:
-Hashcode & intersectRaven : for their git repo alone with a working .config. alone
-Ezekeel : for his so many great MODs on Nexus S(my phone) and Galaxy Nexus(will be my next phone)
-whistlestop : For his improvement on CM7 (I'm completely unfamiliar with the user land things about android, without him I'll be still using the stock ROM)
Features:
-LAZY cpufreq governor ported from GLaDOS(http://forum.xda-developers.com/showthread.php?t=1276092) with some tweaks.
-TUN compiled into kernel (especially important for people living in regions with strict network censorship like CHINA! F*ck the GreatFireWall)
-CIFS compiled into kernel along with NLS-utf8 for non-ASCII characters.( Now who cares the size of the internal flash?)
-Minor tweaks on ondemand governor to improve responsiveness.
ToDo:
-BLX porting from GLaDOS(http://forum.xda-developers.com/showthread.php?t=1257497)
-TouchWake porting from GLaDOS(http://forum.xda-developers.com/showthread.php?t=1239240)
Because I'm a newbie on kernel development and the MODs above both have some code in hardware drivers, so it will be a long time before accomplish.
The kernel source code seems to work on both CM9 and stock ROM.
So later I'll upload the flashable kernel zip for CM9 and stock ROM after some test.
Download:
CM7:http://www.mediafire.com/?2nsm9lb7ylm3gnl
In next post,I'll post the procedure for compiling the kernel and the wifi driver.
In this post I'll post the detailed procedure of compile the kernel.
1.Get the kernel source and wifi driver:
If you want to compile the kernel based on my tweak,
you can use my repo (fork from hashcode's source):https://github.com/adam900710/kernel_omap(branch stock)
Or you can just start from scratch without my tweak:https://github.com/KFire-Android/kernel_omap(only branch stock is tested)
If you are unfamiliar with git,you can learn it on the GitHub's help page:
http://help.github.com/
Tiwlan drivers from neither omapzoom nor CM7 works due the lack of given functions.
ONLY the wifi driver from Amazon seems work. So you need to download the whole zip from Amazon:
http://www.amazon.com/gp/help/customer/display.html?nodeId=200203720
The wifi driver locates in mydroid/hardware/ti/wlan/wl1283
2.Get the cross compile toolchain:
Yes,you can build from scratch according to CLFS(http://trac.cross-lfs.org/),but a newbie like me is glad to use the pre-compiled toolchain like sourcery G++. Omappedia recommanded 2010q1-202(https://sourcery.mentor.com/sgpp/lite/arm/portal/release1293), so I use it as the toolchain and it works well.
The self-extrated installation program will install the toolchian without any problem.
Also other toolchain is available like linaro , but according to the post by Ezekeel (http://rootzwiki.com/topic/10855-researchmythbuster-optimized-compiler-toolchains/) , there seems no obvious difference. So the out-of-box sourcery G++ is a good choice.
3.Compile the kernel.
Code:
cd kernel_omap #cd into your kernel
make mrproper #clean the source tree( normally you can skip)
make otter_android_defconfig #get the default .config (also you can copy it manually)
make ARCH=arm menuconfig #if you want,you can tweak the config of the kernel.This needs headers of ncurse
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi -j4 #you should make sure that the toolchain is in you PATH
After some CPU time, the kernel is built, in arch/arm/boot/zImage. Also the modules is built in other places.
Since I built all TUN/CIFS and so on into kernel,so there is no need to install the modules.
4.Compile the wifi driver:
Code:
cd mydroid/hardware/ti/wlan/wl1283/platforms/os/linux/ #cd into the building folder
make ARCH=arm KERNEL_DIR=/home/adam/kernel_omap CROSS_COMPILE=arm-none-linux-gnueabi- TNETW=1273 -j4 #you need to change the path of KERNEL_DIR
CAUTION: DO NOT add DEBUG=n OR DELETE TNETW=1273....
I don't know why,but if you do so,the wifi driver won't work properly.
5. Package the kernel into boot.img with ramdisk.
Thanks to DooMLord , in his git repo , you can download the tools needed.
https://github.com/DooMLoRD/Kindle-Fire-Kernel/tree/master/final_files
Only minor changes are needed for the path ,every thing elso works fine.
You can use the ramdisk extracted from any CM7 boot.img using the perl script.
Then just ./make_bootimg will do everythin for you.
Great i will test it
Sent from my GT-P1000 using xda premium
Best kernel.
I'm running on CM7 with this kernel and get super-perfomance and perfect power consump (Using Lazy governor).
It's not support OC??
Sent from my GT-P1000 using xda premium
acax456 said:
It's not support OC??
Sent from my GT-P1000 using xda premium
Click to expand...
Click to collapse
Sorry, not support yet.
Maybe I'll add OC in next release.But I don't recommend OC because the power consumption...
can you able otg usb support ???
is this possible
Please add .zip for CM9!
Can I flash this from the recovery? or do I have to use adb??
please.update your kernel.since its been two months from last.update
Sent from my GT-P1000 using xda premium

XDA-Developers and the GPL

Dear kernel and ROM developers.
According to GPL v2 license, under which kernels are released, kernels must be released with source code provided.
To be fully compliant, the thread must contain.
@ kernel devs
Successfully build and produce a valid output file, which is the same format as provided in the binary
Contain all source code, interface definition files, scripts used to control compilation and installation of the executable (it is not required to include the actual compiler/toolchain, but sufficient information should be made available to obtain the SAME configuration, including compiler flags, as used to build the binary version as released
Example.
Kick-ass kernel
Built with android-toolchain 4.8 4.8-2013.05 (linking isn't a bad idea)
Branch used to compile (can be a direct link to git)
Name of the defconfig used in build
A short instruction about how to build it (not necessary, but useful)
Click to expand...
Click to collapse
@ ROM devs
if ROM uses custom boot.img, the source must be provided. If it uses kernel by someone else, the kernel thread must be linked in the OP
if the ROM contains stock kernel, source must be linked (official site can be used)
Using a non GPL compliant kernel makes your ROM non compliant and subject to removal
Violation of GPL is in fact a breaking of the law, so I don't have to explain what could be a final of this.
More information can be found in the news written by pulser_g2.
Thank you for your attention.
Tom
XDA Senior Moderator

Categories

Resources