[Q] Adding pre-compiled files to AOSP build? - Desire Android Development

I am compiling AOSP Froyo for the Desire and would like to add some pre-compiled files to be added the the build output. Where would I go about placing these?
For example, I have a wifi module and kernel image that are compiled elsewhere, the kernel image goes into the output folder for bravo, but if I put the wifi module in the out/target/product/bravo/system/lib/modules it does not get added to the zip file when I "make otapackage"
Maybe someone could point me in the direction of some reliable reading resources on this? I'v not been able to find much of use.

Related

Any guides on how to create/compile custom roms?

I am a linux user...
Anyone can share the howto or if there are any guides?
+1 bumping this thread
Second that...
http://www.koushikdutta.com/2009/08/build-configuration-for-t-mobile.html#links
He seems to have a script to compile the Kernel...
I don't know to what extent this would help us but it is a start. I dont quite know how the apps are installed on a new ROM....
It would be nice if someone can explain what is needed and what is optional in the kernel and some of the mods that other people are doing and how they integrate in the OS.
I see a lot of improvements in the new ROM's but no how-to on doing it your self. I thought that was the point of having open source OS.
I would quite like this as well =o)
Have made a bit of a start by following this:
http://source.android.com/download
Shows you how to get all the code and do a build.
I believe the next thing would be to pick the required files from the output folder of the build, dump the boot.img and replace the kernel with 32B or 32A one, add the Magic model config file (to ramdisk) and recreate the boot.img
Replace/Add any modules required like maybe wifi or bluetooth, then need to change the build.prop file and put it all in to update.zip and sign the file.
Haven't had time to test this out but seems kind of logical...maybe?
Hello!
I'm following the android.com tutorial, but I want to ask: how can I download the donut branch? There's no mention in the entire site about it... Also, the cyanomod's multitouch and so on, where does it come from? Is it made by himself or it's somewhere in the net?
Thanks
Learn how to use GIT to get the donut branch from here: http://android.git.kernel.org/
Proble is that it doesn't specify the donut project path
Is there a command to list all project paths? I can't seem to find it
L10nH34Rt said:
Proble is that it doesn't specify the donut project path
Is there a command to list all project paths? I can't seem to find it
Click to expand...
Click to collapse
Code:
git branch -a
in any local git directory
Ok, then so far I've downloaded the donut branch, and compiled too. What now?
1. how to create a ROM from the made files?
2. how to compile the kernel / how to replace the one created with the make command with the one I'm running on?
3. is there any option I can configure to fit my phone? (HTC Magic 32A)
4. how can I root my ROM?
thanks
there is this guide that i have found:
http://www.koushikdutta.com/2009/08/build-configuration-for-t-mobile.html
'make' finished with success but i can't find how to transform it into 'update.zip' file...
anyone?
It says that in the link you have posted yourself.

Launcher2 compiling/eclipse problems

ok guys i am trying to compile Launcher2 from source i am running ubuntu 9.1, with eclipse(for jave ee) 3.5.1 and adt installed. i have downloaded the source from google. Launcher2 though is not sent when syncing repo, so i got the Launcher2 source from cyanogen. As far as i figure unless i missed something i should be able to click file > new project > android project. this brings up a window, click the bullet load from source choose the directory where Launcher2 is and choose API level 7 then click finish. it loads with 2 errors, cannot compile until build paths are fixed and that the folder "gen" isn't there. "gen" is an auto-generated folder by eclipse that follows after the source code to fix those errors, you either make a change or delete the gen folder. since the gen folder is auto-generated deleting it just forces the gen folder to be remade to make the compiler happy. when that happens approximately 184 errors occur(they were there all along) the gen files were just hiding them.
what i am trying to figure out is what i need to do to get this to compile? am i missing a step in the process? am i missing something? i've been banging my head against this wall for about 2 weeks looking for every possible angle that i can think of including putting Launcher2 into it's respective folder made by git and running make. it errored out. i'm at a loss and any kind of help would be greatly appreciated.
i would like to add, this is straight from cyanogens github no modifications and no changes. also no modifications or changes to any files aquired by repo. i'm just trying to compile a "stock" Launcher2, once i am able to compile that i will rercompile with any changes i might want to make.

Question on kernel development - HOWTO?

I'm still wet behind the ears, kernel wise. I have built my own vanilla Android kernels, so I have all the tools I need (I think).
For GTab kernels, does anyone have a HOWTO I can leech off of? Ie. I know that we need the tegra git, then the patch that CS supplied. But does anyone have a template .config I can work off of?
Btw, what I'm looking for is CIFS support (already being worked on here) and EXT3 support for flash drive. The latter would make me a very happen person.
Thanks in advance.
roebeet said:
I'm still wet behind the ears, kernel wise. I have built my own vanilla Android kernels, so I have all the tools I need (I think).
For GTab kernels, does anyone have a HOWTO I can leech off of? Ie. I know that we need the tegra git, then the patch that CS supplied. But does anyone have a template .config I can work off of?
Btw, what I'm looking for is CIFS support (already being worked on here) and EXT3 support for flash drive. The latter would make me a very happen person.
Thanks in advance.
Click to expand...
Click to collapse
Attached is a tegra .config file with EXT3, EXT4, and CIFS included in the kernel (not as a module file). Just rename to .config and build.
To configure other options as needed, just do a make menuconfig, go to the file systems menu to configure the EXT3/4 options. For CIFS and other network file systems go to the file systems menu, select "Network File Systems", then configure CIFS, NFS, etc. as needed.
Thanks! I will play around with this.
roebeet said:
Thanks! I will play around with this.
Click to expand...
Click to collapse
Here is an updated version that I made starting from extracting the .config from the kernel in the boot.img in your tnt_lite_v3.00 update file. This just has EXT4 and CIFS added, so this may be a better starting point. Good luck and thanks for all of your work.
Be careful with enabling extra params which the supplied wifi module (from tapntap) is dependant on, as if things mismatch (headers; they will), the module wont load.
I am working towards breaking out this dependancy so we can be completly free.
Like vpn, I found out the hard way
If you look in arch/arm/configs you will see some files called tegra-harmony-defconfig or something like that. Its part of the patch file. if you run make tegra-harmony-defconfig, it will put all the "default" values into a .config for you. Then you can run make menuconfig (or whatever make config you like)

[Q] how to compile libaudio.so module? [CM7]

Original post: forum.cyanogenmod.com/topic/41583-hello-hello-bug-cant-hear-caller/
It seems like I'm suffering from this bug
code.google.com/p/cyanogenmod/issues/detail?id=4681
although I found the commit
github.com/CyanogenMod/android_device_samsung_crespo/commit/49cb776c1a5d056c345d90465f8006ef23d947b0#libaudio/AudioHardware.cpp
which (hopefully) fixed this bug but the commit only merged into ics branch not gb branch (CM7).
I got cygwin and NDK set up, but I have no idea how exactly to compile libaudio.so module.
After selecting your target, enter:
Code:
make audio.primary.herring
from cygwin?
the target is the libaudio folder, right?
does it involve NDK?
I also need library file (libhardware_legacy.so, libcutils.so, libmedia.so, etc) isn't it? I have the files, where do I put those files?
gleenfield97 said:
from cygwin?
the target is the libaudio folder, right?
does it involve NDK?
I also need library file (libhardware_legacy.so, libcutils.so, libmedia.so, etc) isn't it? I have the files, where do I put those files?
Click to expand...
Click to collapse
Your target should be listed in the set of options before you begin building. In this case, it's crespo or crespo4g for the Nexus S or Nexus S 4G, respectively. If you need to build other modules, locate the Android.mk file for the module you want to build and locate the value under LOCAL_MODULE. The destination for the file(s) in question will be printed after the build is completed. What happens from there depends on what you intend to do with it.
Getting familiar with the build system will make things much more easier and faster for you in the long run.
Thanks for your guide.
Unfortunately, I still can't fully understand so I end up using the script provided by nicandris
forum.xda-developers.com/showthread.php?t=969266
instead of building the module, I build the whole rom.

[Q] Boot.img?

Sooo yeah.... anybody got some help for this one? I have searched google and the forums but can't clearly figure this out, but how do I get a Boot.img for this phone??? I have rebuilt the kernel 3 or 4 different ways and the output never yeilds one, however I apparently NEED one so I can peel away the ramdisk x( any ideas?
EDIT: Okay, so now that I can compile a working stock kernel for the Sidekick, where should I start now? I know we already have a working voodoo lagfix kernel, but I want to make CWM for the stock kernel, that sounds like a good spot. And adding in init.d sounds like another good start. Making my own may help me in understanding it all. I AM taking notes too
Zydrate_blue said:
Sooo yeah.... anybody got some help for this one? I have searched google and the forums but can't clearly figure this out, but how do I get a Boot.img for this phone??? I have rebuilt the kernel 3 or 4 different ways and the output never yeilds one, however I apparently NEED one so I can peel away the ramdisk x( any ideas?
Click to expand...
Click to collapse
If I recall correctly, I used the split_bootimg.pl script, and accompanying instructions, found here:
http://www.android-dls.com/wiki/?title=HOWTO:_Unpack%2C_Edit%2C_and_Re-Pack_Boot_Images
Start by unpacking and repacking a kernel that you already know is functional -- i.e. a copy of a kernel you have already successfully flashed. Once that repack can be flashed successfully, you can move on to making modifications to it, or packing a whole new initramfs and kernel.
I had to remove references to a few of Samsung's proprietary modules to get the kernel to build -- Samsung helpfully supplies the places for those sources to be put (IN TREE -- shame on you Samsung), but not the sources themselves. One such module was rfs, IIRC. I removed the Makefile references so I could finish a compile, then used copies of the compiled modules from an existing initrd. Where you run into compile failures, where the source code appears to be simply missing, this is probably the cause.
I found that I had to manually strip at least the modules that resulted when I built from sources, otherwise the finished image was far too large. Compare the sizes of your compiled kernel and module files to those of a known-working reference image. They should not be too far out of line.
I wish I had saved more notes from my own kernel builds. Regular Linux kernels are so easy, but earlier Android kernels are unnecessarily horrible to build. Still, if you run into any more issues, I'll try to help...
Oh, and please disable the keystroke logger!
nxd said:
If I recall correctly, I used the split_bootimg.pl script, and accompanying instructions, found here:
http://www.android-dls.com/wiki/?title=HOWTO:_Unpack%2C_Edit%2C_and_Re-Pack_Boot_Images
Start by unpacking and repacking a kernel that you already know is functional -- i.e. a copy of a kernel you have already successfully flashed. Once that repack can be flashed successfully, you can move on to making modifications to it, or packing a whole new initramfs and kernel.
I had to remove references to a few of Samsung's proprietary modules to get the kernel to build -- Samsung helpfully supplies the places for those sources to be put (IN TREE -- shame on you Samsung), but not the sources themselves. One such module was rfs, IIRC. I removed the Makefile references so I could finish a compile, then used copies of the compiled modules from an existing initrd. Where you run into compile failures, where the source code appears to be simply missing, this is probably the cause.
I found that I had to manually strip at least the modules that resulted when I built from sources, otherwise the finished image was far too large. Compare the sizes of your compiled kernel and module files to those of a known-working reference image. They should not be too far out of line.
I wish I had saved more notes from my own kernel builds. Regular Linux kernels are so easy, but earlier Android kernels are unnecessarily horrible to build. Still, if you run into any more issues, I'll try to help...
Oh, and please disable the keystroke logger!
Click to expand...
Click to collapse
Wow thanks nxd! I don't know if you have seen my other posts, but I'm a newbie at this stuff. Never too late to learn though right?
Now, as for the issues in the build, when I first tried to compile I was getting errors of an undeclared SEGMENT_SIZE in binfmt_aout.c so I searched around and was informed that the aout method is outdated? So I removed it from the config as instructed, seeing as it wasn't needed.
I've gotten to a compile resulting in the zImage and about 8 modules created. Now, the zImage is incomplete at this point if I am correct? If it's flashed, it will simply bootloop. (Because there is more to be done? i.e the ramdisk gz that loads the rom at the bootloader?)
Also, I will check the link about the logger, so I can disable it.
I appreciate all your help I really want to get this stuff down-pat eventually.
Zydrate_blue said:
I've gotten to a compile resulting in the zImage and about 8 modules created. Now, the zImage is incomplete at this point if I am correct? If it's flashed, it will simply bootloop. (Because there is more to be done? i.e the ramdisk gz that loads the rom at the bootloader?)
Click to expand...
Click to collapse
Correct, you need to put the modules onto an initramfs, and then assemble the zImage and initramfs into a boot.img. The URL I posted has instructions to both unpack and repack. I suggest that you obtain repack settings (command line, perhaps memory addressing) from an existing working image.
You can probably use the initramfs from an existing image as the basis for your new boot.img as well, replacing the modules from the old imitramfs with your new modules.
nxd said:
Correct, you need to put the modules onto an initramfs, and then assemble the zImage and initramfs into a boot.img. The URL I posted has instructions to both unpack and repack. I suggest that you obtain repack settings (command line, perhaps memory addressing) from an existing working image.
You can probably use the initramfs from an existing image as the basis for your new boot.img as well, replacing the modules from the old imitramfs with your new modules.
Click to expand...
Click to collapse
I hate to ask this because I'm afraid of being a pain in the a**.... but I hope you won't mind working with me, I'm in for the long run. Anyway, am I supposed to have a initramfs after the compile somewhere within the source? Or is this something I acquire from an an outside source? I promise I have done like 30-40 searches before hand. I have a feeling am missing something obvious -_-
Again, thank you for your generous help
Zydrate_blue said:
I hate to ask this because I'm afraid of being a pain in the a**.... but I hope you won't mind working with me, I'm in for the long run. Anyway, am I supposed to have a initramfs after the compile somewhere within the source? Or is this something I acquire from an an outside source? I promise I have done like 30-40 searches before hand. I have a feeling am missing something obvious -_-
Again, thank you for your generous help
Click to expand...
Click to collapse
The kernel compile will NOT produce an initramfs for you. It will produce the zImage (compressed kernel image) and modules.
The initramfs is an archive containing some files. During boot, when the kernel reaches the end of device initialization, it then creates an empty memory-backed filesystem, and extracts the initramfs contents into that new filesystem.
Ideally the initramfs would be generated by the Android build system, using the binaries produced by the kernel compile. But Samsung provides the bare minimum for GPL compliance, and so we don't get all the pieces we'd need for that. Presumably assembling those pieces is a big part of what windxixi has done, however.
When I worked up my boot.img, I used someone else's existing initramfs, dropped in my compiled modules and a few other minor changes, and then re-assembled it with my compiled zImage. If you're already working with windxixi's build kit and kernel sources, it might save you some time to use his initramfs as a basis for your own.
Really, once you've unpacked basically any SK4G boot.img, and extracted the files from the initramfs, I think you'll see the layout and that aspect the process will be clearer to you.
nxd said:
The kernel compile will NOT produce an initramfs for you. It will produce the zImage (compressed kernel image) and modules.
The initramfs is an archive containing some files. During boot, when the kernel reaches the end of device initialization, it then creates an empty memory-backed filesystem, and extracts the initramfs contents into that new filesystem.
Ideally the initramfs would be generated by the Android build system, using the binaries produced by the kernel compile. But Samsung provides the bare minimum for GPL compliance, and so we don't get all the pieces we'd need for that. Presumably assembling those pieces is a big part of what windxixi has done, however.
When I worked up my boot.img, I used someone else's existing initramfs, dropped in my compiled modules and a few other minor changes, and then re-assembled it with my compiled zImage. If you're already working with windxixi's build kit and kernel sources, it might save you some time to use his initramfs as a basis for your own.
Really, once you've unpacked basically any SK4G boot.img, and extracted the files from the initramfs, I think you'll see the layout and that aspect the process will be clearer to you.
Click to expand...
Click to collapse
I haven't found any boot.img from another kernel, however I have finally figured out how to unpack the zImage D I think I'm a bit closer now, however, now I need to figure out how to un-cpio the initramfs.cpio and/or use the intramfs folder I now have. (in the unpacked zImage)
Then the next step I suppose would be learning how to incorporate the modules that I have. hmm..
Zydrate_blue said:
I haven't found any boot.img from another kernel, however I have finally figured out how to unpack the zImage D I think I'm a bit closer now, however, now I need to figure out how to un-cpio the initramfs.cpio and/or use the intramfs folder I now have. (in the unpacked zImage)
Then the next step I suppose would be learning how to incorporate the modules that I have. hmm..
Click to expand...
Click to collapse
On the page I linked to in my first reply, under "Alternative Method", those instructions worked for me to split, unpack, repack, and assemble. Did they not work for you?
Regarding how to incorporate the modules, you would copy them into the extracted directory in the same locations in the initramfs as the existing module files. Generally something like /lib/modules. Look for files ending in '.ko'. They may be spread out a bit in your compiled kernel sources, but they should all be in one directory in your extracted initramfs directory.
As for an existing boot.img, it's a Froyo kernel, but there's this: http://forum.xda-developers.com/showthread.php?t=1663622.
nxd said:
On the page I linked to in my first reply, under "Alternative Method", those instructions worked for me to split, unpack, repack, and assemble. Did they not work for you?
Click to expand...
Click to collapse
I tried this method of repacking, but so far I have not been able to re-pack my zImage successfully. (I feel pretty close to getting this) Maybe I am putting the modules in the wrong place? Or perhaps I am skipping a step. I believe I need to assign more room for the modules. I am getting the error that initramfs_cpio is too large.
My initramfs has 2 directories in it- and I created a folder within called lib and placed the modules in there... that may be the wrong way, but I don't think it changes the need for more room in the kernel. Something to do with padding values maybe? /:
Also, the script I am using for this is from JunYoung- it is repack-zImage.sh a tool for de-compiling and recompiling a zImage. That's how I got to my initramfs directory in the new zImage I built with the source.
Zydrate_blue said:
I tried this method of repacking, but so far I have not been able to re-pack my zImage successfully. (I feel pretty close to getting this) Maybe I am putting the modules in the wrong place? Or perhaps I am skipping a step. I believe I need to assign more room for the modules. I am getting the error that initramfs_cpio is too large.
My initramfs has 2 directories in it- and I created a folder within called lib and placed the modules in there... that may be the wrong way, but I don't think it changes the need for more room in the kernel. Something to do with padding values maybe? /:
Click to expand...
Click to collapse
I think your extracted initramfs should have more than two directories.
Would you paste a listing of the files and directories here? Do this:
Code:
cd [path_to_extracted_initramfs] && find *
nxd said:
I think your extracted initramfs should have more than two directories.
Would you paste a listing of the files and directories here? Do this:
Code:
cd [path_to_extracted_initramfs] && find *
Click to expand...
Click to collapse
This is what I have after I unpack the zImage:
cpio-t
decompression_code
initramfs
initramfs/root
initramfs/dev
initramfs.cpio
kernel.img
padding3
padding_piggy
part3
piggy
piggy.gz
piggy.gz+piggy_trailer
piggy_trailer
ramfs+part3
sizes
EDIT: I also tested unpacking another zImage that is working, in fact I tried it on the Bali SK4G that we use currently (I hope that was okay with you /: I probably should have asked) but it just keeps displaying code as if it won't finish unpacking. It makes sense because there is a lot more to unpack, I think it is because it is compressed.
Zydrate_blue said:
This is what I have after I unpack the zImage:
cpio-t
decompression_code
initramfs
initramfs/root
initramfs/dev
initramfs.cpio
kernel.img
padding3
padding_piggy
part3
piggy
piggy.gz
piggy.gz+piggy_trailer
piggy_trailer
ramfs+part3
sizes
EDIT: I also tested unpacking another zImage that is working, in fact I tried it on the Bali SK4G that we use currently (I hope that was okay with you /: I probably should have asked) but it just keeps displaying code as if it won't finish unpacking. It makes sense because there is a lot more to unpack, I think it is because it is compressed.
Click to expand...
Click to collapse
You don't need my permission to use my Bali-based Linux kernel image or patches.
Where can I get a copy of this other boot.img you're working with? It seems clear the hacks and workarounds I used with the Bali-era kernel don't translate directly across. I'd like to take a look and see what I can make of it.
nxd said:
You don't need my permission to use my Bali-based Linux kernel image or patches.
Where can I get a copy of this other boot.img you're working with? It seems clear the hacks and workarounds I used with the Bali-era kernel don't translate directly across. I'd like to take a look and see what I can make of it.
Click to expand...
Click to collapse
Well, I never really found a literal "boot.img" from what I read I have to compile a zImage and in the sidekick's style system boots this as a boot.img??? And I have only used the one from kernel source so far, seeing as I could not get the Bali zImage to split.
As for the initramfs.cpio that us within the zImage, I tried to un-cpio it and I get an error about removing '/ from name?
I could send you the zImage I got from source o.e
EDIT: I never found a copy of boot.img, I couldn't even get one from an outer-source.
Sent from my SGH-T959V using xda app-developers app
Zydrate_blue said:
As for the initramfs.cpio that us within the zImage, I tried to un-cpio it and I get an error about removing '/ from name?
Click to expand...
Click to collapse
That's more of an advisory than an error. It's just telling you that it's stripping off the leading /, i.e. extracting to a relative path.
It sounds like you probably succeeded in extracting the initramfs.
nxd said:
That's more of an advisory than an error. It's just telling you that it's stripping off the leading /, i.e. extracting to a relative path.
It sounds like you probably succeeded in extracting the initramfs.
Click to expand...
Click to collapse
Well, then that sounds better! But what about this one:
cpio: dev/console: Cannot mknod: Operation not permitted
1 block
I forgot there was a following error
Zydrate_blue said:
Well, then that sounds better! But what about this one:
cpio: dev/console: Cannot mknod: Operation not permitted
1 block
I forgot there was a following error
Click to expand...
Click to collapse
You'll probably want to extract the files as root. Otherwise device nodes won't be created, like above, and permissions won't be kept on any of the files.
Be careful to be in a safe (i.e. empty) working directory when you do that. It will extract the files into your current working directory.
nxd said:
You'll probably want to extract the files as root. Otherwise device nodes won't be created, like above, and permissions won't be kept on any of the files.
Be careful to be in a safe (i.e. empty) working directory when you do that. It will extract the files into your current working directory.
Click to expand...
Click to collapse
Okay so now after I execute as root, it gives me this message:
cpio: /dev/console not created: newer or same age version exists
So the directories are empty after extracted?
Zydrate_blue said:
Okay so now after I execute as root, it gives me this message:
cpio: /dev/console not created: newer or same age version exists
So the directories are empty after extracted?
Click to expand...
Click to collapse
There's another argument you needed: --no-absolute-filenames
Unfortuantely it looks like cpio will have kept the absolute path and overwritten files on your real machine.
Extract into a directory using --no-absolute-filenames and see what files on your host system were overwritten. Those files should be recovered somehow before proceeding.
Sorry I didn't catch that.
nxd said:
There's another argument you needed: --no-absolute-filenames
Unfortuantely it looks like cpio will have kept the absolute path and overwritten files on your real machine.
Extract into a directory using --no-absolute-filenames and see what files on your host system were overwritten. Those files should be recovered somehow before proceeding.
Sorry I didn't catch that.
Click to expand...
Click to collapse
Oh god -_- wow I messed up then. well....the only file that was within the cpio was a file named console.... so I think I need to fix that?
I'm not mad or anything, it's a risk you take ya know? But I may need help.
EDIT: Okay so I reboot my laptop and it reboot fine, no issues. I don't think it actually overwrote any file (luckily because that cpio file didn't have anything in it...heh) So should I now try the command with the new argument?
Zydrate_blue said:
Oh god -_- wow I messed up then. well....the only file that was within the cpio was a file named console.... so I think I need to fix that?
I'm not mad or anything, it's a risk you take ya know? But I may need help.
EDIT: Okay so I reboot my laptop and it reboot fine, no issues. I don't think it actually overwrote any file (luckily because that cpio file didn't have anything in it...heh) So should I now try the command with the new argument?
Click to expand...
Click to collapse
I'll take a look at the boot image this evening. It would seem very odd to me if the only file on the initramfs was /dev/console.

Categories

Resources