Droid X kexec Kernel Module

http://tinyurl.com/droidxkexec

From the Readme:

This is the kmod from the project trying to unlock the Milestone. It is still
localized to that phone, but, with modification, I got working on the Droid X
and a few others. Currently, this is a work in progress and is not recommended
for mission critical situations.

The Droid X kexec module is out. Try your very best to have fun with it. There are tons of things not working right now, including the radios, but I’m hoping to get that cleared up soon. I’m going to be posting more info up tomorrow. If you guys have issues with this, hit me up on twitter or leave a comment here. Thanks to everyone that has helped me along the way, all of the guys on twitter, and the guys on Droid Forums. Watch the official site for more info, more mirrors, and links on how to help us. I’m going to be bringing up a git repo within the next few day, and I’m going to be putting out weekly releases depending on stability. The final hunk of software that we need is going to have a first release in February.

Gingerbread + Froyo = Total Failure, Some Other News too.

I downloaded the Gingerbread sources today to start work on that and decided to mess around to see if I could get a more complete Gingerbreadish rom instead of the themed stuff out there now. Henceforth, I compiled it up and started replacing things and got some stuff working. I found that the framework worked pretty fine on froyo, though with that none of the needed Motorola services worked. From that I have a nice breakdown of how this worked out.

Stuff that worked

  • Booting
  • Running most apps

Stuff that didn’t work

  • froyo’s launcher
  • wifi
  • cell radios
  • SD card
  • Camera
  • Web Browser
  • Phone app (thinking it might be related to not having the radios working)
  • Messaging (see above)
  • rebooting

After some testing a guy on twitter asked for a screenshot, so I worked on getting the SD card working. I did a few patches and rebooted, and my Droid happily entered a bootloop.

Some other stuff I need to talk about

I’ve been getting pretty sick lately from my lack of sleep working on the project, and I’m getting pretty burnt out with only playing and hour of Minecraft a day plus working 4 to 20 hours a day on trying to get init and kexec working to a point I can release it. My friends have also been telling me to take a bit of a break on it, so I’ve decided to take a week or two off from working on it. You can always send me questions or comments on here or twitter if you need to get a hold of me. After this I’m going to be starting a mailing list, so that when other devs get on board we can all have a common place to post ideas, comments, code, and gripes. When the code releases im going to be throwing it up on probably github at this point unless I can find svn somewhere thats free and easy to work with. Anyone that wants commit access will get it, as we can use all the help we can get.

Droid X Init Project FAQ

Frequently Asked Questions

I compiled up a bunch of questions that I received on twitter that are way too long for simple @-replies. I have them ordered by frequency.

Do you accept donations?

I don’t because this is a hobby for me, and I really don’t want to make this feel like a job.

Is this a new bootloader?

No, the program uses kexec to load a new kernel on top of the stock kernel. The method is used quite often on many Linux machines (including my own).

What is kexec?

Wikipedia Article about kexec
Setting it up on Gentoo
Technical Document on kexec from IBM

Some info about the new init

The new init is a more fully featured version than the one that comes with AOSP. I started the project by modifying that init slightly so that it would run the kexec call reboot with the new kernel. I really found it to be hard to modify because, unlike most other inits out there, the one from android had a lot of the boot process cooked right into the source code. This posed problems for me because we would need easily configurable boot processes for the new ROM installed. From there, I scrapped that code base and started writing a new init and porting over things I needed from Linux that I was used to having that bionic (Android’s libc) either had and didn’t work properly or didn’t have at all. From there I’ve gotten to implementing runlevels (named ala Gentoo), fstab parsing, and forking processes. I’ve also made a few support libraries for things like text output, button input, and usb debugging. Also, after init is released, I’m thinking about having it be able to boot ROMs right off of disk images so a user can choose on boot if they want to run stock, cyanogen, et cetera that day.

 

Welcome to my new blog.

Hey guys I’m going to be posting many things about Android, Linux, Gentoo, and other things that interest me. Check back weekly for new news and such. I’m going to be adding a new post later about the Droid X init I’m working on and how kexec will help us.