Okay, I am a noob. Glad to be on XDA, but a noob nonetheless.
I know the basic in's and out's of flashing, backing up ROMs, etc.
Well, I want to learn how to start writing my own custom ROMs.
I have (at least I think) most of the necessary software, SDK Tools, Microsoft Basic and C++ 2010. But I don't have anything but basic knowledge of code. Anybody willing to help a noob out and get me kick-started in making ROMs and coding in general?
The only device I have to work with is a PC and my HTC DInc. It's been a great phone
I'd much appreciate the help.
Thanks in advance,
TheSmashippy
The kernel is in C
Android is mostly java (if its open source = Cyanogenmod).
But most Roms just and and replace apps. Maybe add some themes and stuff. Have a modded kernel for OC and stuff. And thats mostly it.
Smasher816 said:
The kernel is in C
Android is mostly java (if its open source = Cyanogenmod).
But most Roms just and and replace apps. Maybe add some themes and stuff. Have a modded kernel for OC and stuff. And thats mostly it.
Click to expand...
Click to collapse
Well, see I don't really get most of that. I don't understand the differences between C and C++ and Basic, I know they're separate languages, but I don't really notice any differences.
And I have never flashed a new kernel before, just new ROMs I'm actually pretty sure I still have the Stock DInc kernel, unless a few of the ROMs I've flashed came with kernels specifically for them... Not really sure how kernels effect the ROM :/ Like I said, noob. Hard.
Well, until you have flashing down, then I would stick there. Once you do it a few times, it is no big deal. The first time might have you on the edge of your seat.
thesmashippy said:
Not really sure how kernels affect the ROM :/.
Click to expand...
Click to collapse
The Kernel has a major effect on the rom. Changing a kernel can make a rom much better or far worst. Kernels allow many customizations in the rom like overclocking. Here's an example of this: Kernel A may allow your device to be overclocked to 1.2Ghz and Kernel B may allow your device to be overclocked to 1.9Ghz. See here: http://en.wikipedia.org/wiki/Kernel_(computing) . It's basically the same in Android.
Theonew said:
The Kernel has a major effect on the rom. Changing a kernel can make a rom much better or far worst. Kernels allow many customizations in the rom like overclocking. Here's an example of this: Kernel A may allow your device to be overclocked to 1.2Ghz and Kernel B may allow your device to be overclocked to 1.9Ghz. See here: "could not quote this url due to noobiness" . It's basically the same in Android.
Click to expand...
Click to collapse
Thanks for the description man that really specified it for me.
Ok, learning a bit at a time is good Anyone want to take me under their wing and teach me about writing code and creating my own ROMs?
Related
As part of my self-teaching experience with kernels and roms here, I'm currently experimenting with upgrades to the 2.6.32.9 base kernel code. Taking it slow so far, my first attempt at jumping from 2.6.32.9 all the way to 2.6.32.37 (at the time) didn't go well
Anyhow, my question is ... is this something that the devs commonly do, or is it more typical to just leave well enough alone and back-port interesting things (like EXT4/scheduler enhancements) from later kernels?
I already learned the hard way that unless you really want to start replacing things, you have to leave the kernel version number at "2.6.32.9", so it's unclear to me how often base code updates are actually performed.
If I do make it all the way to 2.6.32.39 successfully and it still boots, I can share if there is interest. I'm pretty sure bluetooth will need work, if it works at all. Call it a hunch based on how many modifications I see that Samsung made coupled with the chances of me properly merging that code multiple times.
Thanks in advance ... just working to try and be smarter with the hopes of participating more actively on my next device!
Good luck. I tried patching, and it successfully builds, and it will even start to boot, but it gets bootloops. From the looks of things, the latest stable .32 kernel is .32.28. Here is my patched tree if you want to play around with it: https://github.com/imnuts/linux-2.6-fascinate/tree/patched
imnuts said:
Good luck. I tried patching, and it successfully builds, and it will even start to boot, but it gets bootloops. From the looks of things, the latest stable .32 kernel is .32.28. Here is my patched tree if you want to play around with it: https://github.com/imnuts/linux-2.6-fascinate/tree/patched
Click to expand...
Click to collapse
Thank you for the link sir! I've been moving forward slowly, first just .9->.10 then .10->.15, I'm in the middle of .15-.25 , but I think I'll just bump it to .28 next and compare where I am with where you were.
It's nice to have a reference, and much appreciated. I'll let you know if I make it past .28. It's tedious work, and I'm afraid not work that will bear much if any fruit other than knowing how
Yeah, at this point, I think it's just easier to pull in specific patches from upstream rather than patching the whole kernel tree. If you have any success with it though, I'm sure that others around here would be interested.
Lemme get some things out of the way.. I am a noob. I have searched. I have read some of the results from the search. I am overwhelmed by the 20+ pages of results (lol). I am not 100% sure this is the correct forum for this (not sure where else would be ).. I believe this is one of those things where I need help based on my situation.. Ok, so here I go.
I wish to start porting ICS to my phone. That's my goal. I have general understanding of how linux works, but I do not know much about the android specifics of how they work, or what needs to be modified for this to work. I do not plan to use the kitchen tool as I wish to learn this the hard way. I believe this will help me become more understanding in what I am doing. However, at this point I don't and that's why I'm here. My phone model is irrelevant almost because its prepaid and usually the communities don't even recognize their existence.. at least that's how I feel about it. But I digress. My phone is the zte warp by boost mobile and I am here to learn hopefully the things that will get me started on porting ICS to this phone. I right now believe that the best thing for me to learn is how the android related files work because as it is, I only looked at guides on how linux works and I understand most of it. I'm not sure that's the best thing that will help me port ics, but I'm certain it is important.
Please help me figure out where I should start in learning how to port ICS to my phone basically.
Thanks XDA
anyone? I am quite serious about wanting to do and go into this but I have yet one thread that anyone's ever replied to.. (or post iirc) which puts a damper on me
Snake X said:
Lemme get some things out of the way.. I am a noob. I have searched. I have read some of the results from the search. I am overwhelmed by the 20+ pages of results (lol). I am not 100% sure this is the correct forum for this (not sure where else would be ).. I believe this is one of those things where I need help based on my situation.. Ok, so here I go.
I wish to start porting ICS to my phone. That's my goal. I have general understanding of how linux works, but I do not know much about the android specifics of how they work, or what needs to be modified for this to work. I do not plan to use the kitchen tool as I wish to learn this the hard way. I believe this will help me become more understanding in what I am doing. However, at this point I don't and that's why I'm here. My phone model is irrelevant almost because its prepaid and usually the communities don't even recognize their existence.. at least that's how I feel about it. But I digress. My phone is the zte warp by boost mobile and I am here to learn hopefully the things that will get me started on porting ICS to this phone. I right now believe that the best thing for me to learn is how the android related files work because as it is, I only looked at guides on how linux works and I understand most of it. I'm not sure that's the best thing that will help me port ics, but I'm certain it is important.
Please help me figure out where I should start in learning how to port ICS to my phone basically.
Thanks XDA
Click to expand...
Click to collapse
From my limited knowledge, I think it is a huge task undertaking, you can download Android source code from Google, the hard part will be the device driver development and porting for Linux kernel (and maybe portion of Android). If you are lucky, you can use the existing phone bootloader (or you have to port one). Understanding the inner of the phone (different chip set may need different device driver) will be another challenging task.
by the device driver development, you mean all the libs that go into the phone? Couldn't I just copy/paste the pre-existing libs that are already made for the phone? Also the phone im working with is a bit strange really.. noone has been able to compile the kernel from its source and get it to boot yet.. when it was compiled the zImage was different than that of the stock one.
And yeah, I have downloaded the aosp source.. I just need to know where to start at and the processes involved really
Snake X said:
by the device driver development, you mean all the libs that go into the phone? Couldn't I just copy/paste the pre-existing libs that are already made for the phone? Also the phone im working with is a bit strange really.. noone has been able to compile the kernel from its source and get it to boot yet.. when it was compiled the zImage was different than that of the stock one.
And yeah, I have downloaded the aosp source.. I just need to know where to start at and the processes involved really
Click to expand...
Click to collapse
To answer you question no the drivers and lib files are different for aosp based rooms then they are for the stock OEM from. The first step will be to get a working kernel. Without anything you do will be pointless
I'm somewhat interested in the same thing, and from what I've gathered, you'll need to do these things to begin ROM development:
1. Read every page on the AOSP site and grab a copy of the AOSP source. It probably wouldn't hurt to read the regular Android developer wiki as well.
2. Learn about Linux driver development:
http://lwn.net/Kernel/LDD3/ (this is apparently considered THE BOOK on Linux driver development)
http://www.freesoftwaremagazine.com/articles/drivers_linux
3. Learn pretty much every detail about your phone and its hardware, especially when it comes to how ROMs are installed on it. For example, my phone (the Droid X2) has a locked bootloader, so 2nd init has to be used to boot new ROMs, and this makes it so that we cannot update the kernel.
You can usually find this sort of information on your phone manufacturer's website. Sometimes they even post the source code to their phone's drivers, which is helpful.
4. Look at other ROMs (preferably for your phone) and see how they work. The source code is freely available for most popular ROMs.
For example: CyanogenMod keeps their source code in a public git repository: https://github.com/cyanogenmod
5. Get to work on porting!
I would highly recommend starting with something smaller, however, just as a start. One good jumping-off point is probably this guide: http://forum.xda-developers.com/showthread.php?t=1272270
If any part of this was wrong, or if I left something out, somebody feel free to correct me, I'm still a noob.
Thank you so much for your direction, however,, android kitchen.. im not sure about that because isnt that only ment for htc devices? My phone is made by zte
what device do you even have?
if it's stuck officialy on 2.1 or 2.2 there's no hope that if you even port it that it'll work
its the zte warp from boost mobile (prepaid). Btw if I compile an aosp ics launcher and put that on my phone whats the chances of that working?
edit: it uses 2.3.5
Well Sebastian responded on android forums, apparently zte is very bad at version control with their kernel sources. So when they complete one project, they use the same source for the next project, and what they release could be for anything. Apparently the blade source had the same issues, it took him a while to get them to correct the source
Sent from my N860 using Tapatalk
Yeah I noticed that there were ppl saying there were things similar but I'm not sure what will work or what won't.. guess its time to start a petition on zte to release the source code lol
edit: seems like zte's bein a bad company and violated the GNU GPL license for not providing a complete source code.. I compiled an email and sent it to someone who can proof read it and send it to the right person for this kinda thing.. danggit zte
I'm not understanding how kernels and ROMs connect. Can someone give me some extra insight?
[Hardware] <-- Unique to every phone
--
[Kernel] <--- Tells the OS how to talk to the hardware
--
[ROM] <--- Slightly confused. Is the OS in the Read only Memory, or has this term changed its "street" meaning?
I understand that most ROMs (e.g. CM7 and CM9) include both the kernel and the ROM, but can you flash these separately too?
I have a 1.5 year old thunderbolt that's rooted, and has CM7 which is based on gingerbread. I believe HTC has also released the kernel as open source, which is probably the reason I have CM7
Anyway, I guess what I'm looking for is an answer/guide/forum that explains why I can't install newer versions of android onto the already working/open source kernel I'm already running. Is it accurate to view the kernel as all the phone's drivers, or just the CPU driver? If that statement is true, why can't I load ICS or Jelly Bean onto my already existing set of drivers?
I'm thinking about starting a Wiki on this if 1) it doesn't already exist, and 2) I can wrap my brain around it enough to share with others!
Thanks to anyone with a response!
shadowrelic said:
I'm not understanding how kernels and ROMs connect. Can someone give me some extra insight?
[Hardware] <-- Unique to every phone
--
[Kernel] <--- Tells the OS how to talk to the hardware
--
[ROM] <--- Slightly confused. Is the OS in the Read only Memory, or has this term changed its "street" meaning?
I understand that most ROMs (e.g. CM7 and CM9) include both the kernel and the ROM, but can you flash these separately too?
I have a 1.5 year old thunderbolt that's rooted, and has CM7 which is based on gingerbread. I believe HTC has also released the kernel as open source, which is probably the reason I have CM7
Anyway, I guess what I'm looking for is an answer/guide/forum that explains why I can't install newer versions of android onto the already working/open source kernel I'm already running. Is it accurate to view the kernel as all the phone's drivers, or just the CPU driver? If that statement is true, why can't I load ICS or Jelly Bean onto my already existing set of drivers?
I'm thinking about starting a Wiki on this if 1) it doesn't already exist, and 2) I can wrap my brain around it enough to share with others!
Thanks to anyone with a response!
Click to expand...
Click to collapse
You are correct about the ROM, but ROMs also include the kernel (if it didn't, or no kernel was flashed separately, the device would not boot). Yes, other kernels can be flashed on your existing ROM, but it's not necessarily going to be compatible.
Sort of, but there's a lot more than that. See here and here. Later versions of Android will require newer drivers,etc. which the existing kernel won't provide (they'll be outdated). Back porting and additional coding is theoretically possible, but insanely difficult (many times). Even after this some things may still not work.
Thanks for the insight, I was able to get a lot deeper into this with those links. For anyone else wandering down a similar path, you might as well stop now! Here are a few links:
http://forum.xda-developers.com/showthread.php?t=1039217&page=2#17
http://www.cs.uwc.ac.za/~mmotlhabi/avmk.pdf
http://www.iteachandroid.com/2012/01/what-is-firmware-rom-and-firmware.html
So, if anyone else is still listening, I do have two more questions:
Do any phones have truly open source drivers? (a.k.a. higher probability of allowing old hardware to work with new android OS)
Is there any way to determine which phones will be supported by the custom-ROM community early on? I know the Nexus line doesn't have vendor modified code, is that the direction which would have the highest probability to stay at top of the Custom ROM curve without upgrading devices every year?
Thanks again for any insight! I hope I'm posting this in a Newb-Friendly forum!
shadowrelic said:
Thanks for the insight, I was able to get a lot deeper into this with those links. For anyone else wandering down a similar path, you might as well stop now! Here are a few links:
http://forum.xda-developers.com/showthread.php?t=1039217&page=2#17
http://www.cs.uwc.ac.za/~mmotlhabi/avmk.pdf
http://www.iteachandroid.com/2012/01/what-is-firmware-rom-and-firmware.html
So, if anyone else is still listening, I do have two more questions:
Do any phones have truly open source drivers? (a.k.a. higher probability of allowing old hardware to work with new android OS)
Is there any way to determine which phones will be supported by the custom-ROM community early on? I know the Nexus line doesn't have vendor modified code, is that the direction which would have the highest probability to stay at top of the Custom ROM curve without upgrading devices every year?
Thanks again for any insight! I hope I'm posting this in a Newb-Friendly forum!
Click to expand...
Click to collapse
For both your questions, the Nexus-line devices would be the way to go. They usually have everything working on new Android versions the soonest, and Google always releases their code, etc.
Hi
i can use linux kernel (zimage) to update android kernel if yes ,how ?
thnx
OK, so here's the thing... I'm kind of new in the Android acknowledgement, so I hope that here will be the place where I will get my answers. So here's what I know...
At first I didn't know that Android was Java-based, using a modified Linux kernel which we all know it's C-based (entirely). After a while, I found that there were different firmwares (ROMs) from the original ones, called Stock ones and also different kernels. After reading lots of info about how things actually are, I've decided to root my stock and then I moved to a custom MIUI for my SGSII with a JB implementation. At first it was great, but I had some issues which left me disappointed. Then I moved on to the official MIUI (China - English one). Things got better after I got used to it. The major bugs disappeared, only small ones left and a few crashes, but in time most of them got fixed. Later it crossed my mind, "Why are there so many different kernels and which is the best one for my phone or ROM to be precise?" Well this is where I need your help. I've read some topics that siyah kernel is probably the best kernel, which fits the MIUI rom. The pointing of concrete kernels isn't the kind of answer I was actually searching for. To be honest, I need answers to questions like:
How many kernels are there ?
Which ones are safe ? (I've read that there are badly written ones, so yeah, it needs to be asked)
Statistically, which is the best kernel and is it for the MIUI rom ?
How can I tell that it's suitable for the MIUI rom ? (Since I've read that not all are)
What are the risks of changing the kernel?
How can you test the kernel's behaviour, an app which makes statistics in time or some other methods ?
Believe me, as annoying this topic might seem, lots of us (the newbie users) are burning up the google servers, just to find these answers. I'm really hoping for a reply spam with answers (if possible , spare the trolling ones). Thanks for reading my annoying topic, anyway
Since most of the source is available, basically anyone can build their own kernel at home, so it is hard to tell how many kernels are there.
what isn`t available as open source are most of the OEM-specific drivers. Samsung, for one, doesn`t make most of the drivers' source publicly available, so kernel developers have to make a binary kernel around the binary drivers and literally pray their work well together.
Siyah is safe, but I prefer the stock kernel (I like the stock ROM... go figure). The stock kernel is the only one that is sure to work properly with all the hardware in the phone, because it is the only built from sources for the drivers as well (read my previous paragraph).
Which ones are safe (other than stock and Siyah): you gotta try them for yourself, read other users' remarks and feedbacks, and so on.
Risks:
Very low. As long as the bootloader is good, if the kernel totally malfunctions, just reboot in download mode and flash something else.
Some app may work very well in one kernel and bomb in another. It may crash in some kernels. It is very empyrical.
The problem is that custom kernels don't undergo the same type of quality testing as stock kernels. Developers have very limited resources to do that, and some developers are more interested in having a short time-to-market than a quality product (well, many large corporations act like that as well). At the end of the day we - power users - are the beta testing and quality assurance teams for the kernel developers.
Hi people, well, the question is very simple. I have no idea at all 'bout android developing. As far as i know, the ramdisk in the E10i it's in the <kernel>.ftf, now, how can i increase the size of the ramdisk through kernel editing to improve performance. I want to edit the nAa 14 [GB] 2.6.29 kernel, for personal se, of course, if it works out, i'll probably post it here, after asking for permission to do so.
But first i wanna know how could i do it, what tools do i need and if anybody knows of some tutorial that'd be helpful.
That's it
Thanks!
Here it is..
kernel kitchen, Port tools and info..
http://forum.xda-developers.com/showthread.php?t=1659584
Alexei.Robles said:
Hi people, well, the question is very simple. I have no idea at all 'bout android developing. As far as i know, the ramdisk in the E10i it's in the <kernel>.ftf, now, how can i increase the size of the ramdisk through kernel editing to improve performance. I want to edit the nAa 14 [GB] 2.6.29 kernel, for personal se, of course, if it works out, i'll probably post it here, after asking for permission to do so.
But first i wanna know how could i do it, what tools do i need and if anybody knows of some tutorial that'd be helpful.
That's it
Thanks!
Click to expand...
Click to collapse
What sort of improvement do you expect from enlarging the ramdisk?
The Ramdisk is purely to load and run the kernel, so enlarging it's size will only take away RAM from apps you would want to run, with no benefits to kernel performance whatsoever. As far as I can see, only decreasing the size of the kernel could give you more performance, and if that was possible, nAa would have done it. (after all, he knows *an awful lot* about android development)
If I were you I would either
A: Start learning Android on the ROM side of things,
or
B: Learn how Linux works on the PC before you start trying to improve it on a phone.
SmG67 said:
What sort of improvement do you expect from enlarging the ramdisk?
The Ramdisk is purely to load and run the kernel, so enlarging it's size will only take away RAM from apps you would want to run, with no benefits to kernel performance whatsoever. As far as I can see, only decreasing the size of the kernel could give you more performance, and if that was possible, nAa would have done it. (after all, he knows *an awful lot* about android development)
If I were you I would either
A: Start learning Android on the ROM side of things,
or
B: Learn how Linux works on the PC before you start trying to improve it on a phone.
Click to expand...
Click to collapse
See? that's why i said i know nothing about it, finally sombody answered. Thank you! ^^