Try and Dev Custom - Click Android Development

Hi,
I'am French and new in your community, I have a Tattoo since 2 months
I would like try to build custom rom but i have several questions
When you build/test your rom, you always test directly on your device ?
Is it possible to use the Android SDK emulator to test our own Rom ?
There is a site or others that explain the Android boot process ? or this boot process is exactly the same as in a classic linux ?
Thx.

Android is based on Java, which runs in a Dalvik VM on top of a Linux base. Linux is actually the internals, the hardware detection, etc.
When you boot up the Tattoo, it loads the linux kernel holding all the things required to boot Android. It then looks for the system partition, and then starts the VM to load Android's java apps.

Related

A possible dualboot theory

Say you wanted Android 1.6 and 2.1 on your HTC Tattoo, but didn't want to flash it all the time for the custom 2.1 ROM to be used. My idea (which may/may not work) is that Android 1.6 is booted from the NAND flash, and the kernel offers the user a choice - Boot 1.6 from flash or Boot 2.x from a special partition on the SD Card. In summary:
Power On Tattoo
Kernel Loads
Kernel pauses, waits for user to make choice via Key Press.
- If Android 2.1 is selected, Kernel remaps loading pointers to the SD Card and continues booting 2.1 off the SD Card.
- If Android 1.6 is selected, Kernel keeps booting.
- If iPhone OS is selected, Tattoo explodes into fireworks.
Android Boots.
Android Desktop/Sense UI appears.
Phone is usable.
I've done this before on x86 platforms, I have a bootloader boot-strapping the Linux kernel on a 48MB NAND IDE Flash Module which points the kernel to boot from the USB Drive with a copy of Debian Squeeze (6.0) installed on it. It shouldn't be too hard to achieve.
I hardly know any kernel knowledge apart from being able to adjust fan speeds and read memory usage/temperature/dropping cache RAM for speed boost, but with enough time and effort, we could have a Play and Work Tattoo device - 2.1 for play, 1.6 for work!
Well, that's my two cents.
Cheers,
Coburn.
You must have a bootloader that pass your kernel parameter, expecialy the root device.
The solution could be a software that can reboot the phone with other kernel parameter
Sent from my Abyzou by ikxdf using XDA App
or you may have two yaffs2 imgs on your sdcard with the whole android system and on boot mount them into flash
we could always have a look at this and maybe steal something from it ;D http://github.com/planetbeing/iphonelinux
Yes, that thing uses openIboot, whatever this is...^^
It's an application for ipod touch/iPhone which works like grub bootloader
I just thought I'd mention that ARM devices don't have a BIOS, they are hardwired to load some binary code to get the device started on boot. So GRUB may be out of the question...
Unless we use a ARM port of Debian to overwrite some kernel memory and shove the kernel of Android 1.6 out of RAM and insert the 2.1 kernel into RAM... but that's going to get messy.
The most simple method is to have a software that boot the new kernel configured for other root device on SDcard.
An example is haret for windows mobile.
Coburn have u Even looked at the link I just gave you?
It's not grub!! It's an application which starts before anything else and it has the possibilityto load up a system.img directly from memory on ipod's/iPhones
This could be our base to start out with and then modify it so it fits our devices!!! I never said that tattoo had BIOS!
Okay okay okay! No need for the angry face, I misunderstood your post.
Looks promising, but looks like it may be more tailored to the iPhone. Unless we make our own SPL and flash that - now there's an idea!
i see this phone ...
http://www.chinabuye.com/double-sta...-mobile-6-5-android-2-0-smart-phone-with-wifi
what do you think about it ?
jigsaw956, hello. I think that this phones just a fake. I played with many china phones: SkyPhone, NokLa TV etc. Just look on pictures with android on site.
Where to download bootloader?
jigsaw956, looking at the last picture it seems to be a HTC Touch Diamond 2, but the hardware specifications are between the "double star" andh the htc diamond 2 are different. fake ?!

virtual android phone

this may sound stupid but is there a virtual android phone that you can flash roms on?
You can't use the Android Emulator from the sdk?
The emulator in the SDK has a stock AOSP ROM on it - somewhere i've seen instructions on throwing a boot.img into it. Good should be a good source for you.

[FEELER] LinuxonAndroid ROM?

Hello all!
I am thinking about working on a ROM that includes a Debian/Ubuntu installed baked right into it!
The install would have the same functionality as the Core images I have created (i.e no GUI etc) and would be part of the ROM (not 100% how I will carry this out but im thinking installing it into the data partition).
The idea would then be everything would be preinstalled! including the terminal app, a custom launcher app and the vnc app (if you choose to install a GUI!) having it preinstalled and not in a image file would mean the size limitation would only be the size of the space which is why im not sure where it would be installed yet.
This ROM would be based off CM9 and would include extra features to improve the useablity of the linux install.
If this was to get a good response then I would like expand this to other devices but as the note is all I myself have you would be the first to try!
So the question is would you all be interested in such a rom? Please answer the poll and if you have any ideas or input reply to the thread
Ubuntu and Android
I would love it for sure.:laugh:
This is what i had in mind:
-Create a custom boot loader that gives a choice to boot android or Ubuntu at start up.
press sound down during boot to load Ubuntu or touchscreen menu for example.
-Create/Edit a kernel to work with Ubuntu and Android.
Try not to just make it "work" try also making it battery friendly like Franco Kernel
You could also make the boot loader switch kernels between android and Ubuntu options during boot.
if Android use ...
if Ubuntu use...
-let both operating systems see a partition and create 2 hidden partitions in the root.
One for android, one for Ubuntu.
By making them share one partition you can do thinks like adding phone contacts to Ubuntu and creating bridges in between.
-Make an android and Ubuntu app.
The Android app should be built in the shutdown menu where it asks if you want to reboot, hot reboot or restart, it should add the option: "Restart in Ubuntu".
The Ubuntu app should do the same and should be built in the Ubuntu shutdown menu.
There should also be an Ubuntu app that can read the phone's Contacts in Ubuntu and send or receive text messages and call.
If you could do all this and create a great Ubuntu, Android Rom and Kernel...
Man, you're the king, i know you will.
This sounds awesome, I'd certainly be interested and would also be happy to beta test if needed.
Sent from my GT-N7000 using xda app-developers app

[Q] Kexec support + alternative OS?

I've had an idea for a while, concerning Intel-based Android devices, with unlocked bootloaders.
Would it be possible, to run kexec on a kernel built for one of these devices, and use it to load a bootloader, such as GRUB, to load another OS, such as Ubuntu, Meego, or WebOS?
I know that for any other OS or loader, drivers will be a major issue, but being able to load other OS code opens development opportunities.
Haiku, BSD, or any Windows/Mac would be quite a stretch for sure, but an x86-based Linux doesn't seem horribly far-fetched.

[Q] Installing Linux Mint 17 on tf701t?

Hello, recently purchased a asus tf701t laptop/tablet hyrbid and the device itself is perfect. Powerful cpu, good storage and an insane 2k resolution for a 10' inch screen which I don't think has been done before.
However I absolutely hate android (no offense to android developers) and decided to try installing Linux Mint 17 which can be installed on any regular laptop easily. Essentially, I want to get rid of both android bootloader and the OS itself and replace that with Grub bootloader and Linux Mint 17 OS. But android is fighting me every step of the way trying to prevent me from doing just that I unlocked the bootloader so my warrenty is void now.
But beyond that I can't install linux iso because the android bootloader isn't registering the usb stick (with linux iso on it) so I can't launch the linux live iso at all. I tried using cdrom iso using disk to launch through usb and still doesn't come up in the bootloader options. I know its possible to use linux on these devices because I've seen people have done it before on the internet.
I am now at this point starting to consider android itself as malware as the very definition of the word, ....lets start with the fact that they locked the bootloader, prompting me to give ip address just to enable me to unlock the bootloader (malicious and very dodgy). No root access therefore, third party programs are required to enable root which further my belief that android os is more malware than it is a legitimate operating system. Lastly, either possibly no usb driver for bootloader or usb port is locked out by design at bootloader (either way, might explain why I can't use usb linux iso).
What I can't understand is, why google can lock down a device tighter than fort knox on a Asus brand device. This is like buying a brand new car and not being able to open your own car even though you purchased it. What google has done is borderline illegal and I'm abit astonished how they can get away with it...
Sorry for the rant guys I'm abit fustrated atm. Can anyone please help me? I really love linux mint and if its possible to format android and install linux mint on this device I would be eternally grateful
Update: I attempted to flash the device with the command: fastboot -i 0x0B05 flash recovery recovery.img which works...but when I reboot and push power and down volume into bootloader...and try to get into recovery...the screen looks like its about to load into it but then resumes boot of android.
I'm really puzzled by this. So cannot flash a custom recovery for some strange reason
Its not so simple I dont think. You might want to watch whats happening on this thread for now.
http://forum.xda-developers.com/transformer-tf701/general/native-linux-asus-tf701t-t2973119
I would think you would have to completely replace the bootloader with something like uboot maybe if you wanted to wipe the tablet. But I dont think anyone knows. Then you could end up with some permanent brick. There would be no recovery or fastboot option if you were somehow able to get some kind of boot loader on this thing. I have no idea.
Edit: Also there is no arm based Linux Mint afiak.
YayYouFixedIt said:
Its not so simple I dont think. You might want to watch whats happening on this thread for now.
I would think you would have to completely replace the bootloader with something like uboot maybe if you wanted to wipe the tablet. But I dont think anyone knows. Then you could end up with some permanent brick. There would be no recovery or fastboot option if you were somehow able to get some kind of boot loader on this thing. I have no idea.
Edit: Also there is no arm based Linux Mint afiak.
Click to expand...
Click to collapse
Thanks I appreciate the reply. I understand this won't be easy but I'm stubborn that way
Can you give me some advice on where I can start learning how to place a native linux os on the device? Would grub bootloader work with tf701t?
have you considered returning your tf701 and replacing it with the tf700 infinity? you can replace the OS with ubuntu.. theres much more support for that model than the tf701
tf701mega said:
have you considered returning your tf701 and replacing it with the tf700 infinity? you can replace the OS with ubuntu.. theres much more support for that model than the tf701
Click to expand...
Click to collapse
Out of curiosity, have you used the tf700t? it is good for development, but it could run pretty slow at times. It might of been because of the tegra 3 processor, because the tf300t also had this performance issue. I was barely able to type up documents on a CM Rom because the tablet would lag when typing out and would then force close and corrupt my document.
atleast for me, that was the reason why I went with this one rather than the tf700t. This is just my 2 cents about getting the tf700t. I would suggest trying it out before getting it.
Sent from my K00C using Tapatalk 2
Just how stubborn are you?
How much work do you want to put into this? There are two options, the easy route that you probably will consider imperfect, and the much more complicated route that I'm not certain will work. I'll do my best to explain both.
The method I use is to install a linux distro (in my case, ubuntu) inside a chroot. There are several apps on the android market to help you set this up. The one I used sets up an Xvnc server, so you can view your linux desktop by using an android VNC viewer -- but it's just connecting locally, not going over the network.
This works nicely out of the box, but it's slow, partly because it's using the VNC protocol and partly because there's no 2d hardware acceleration. I tinkered with my setup and installed XSDL, a native android X server with hardware acceleration. I had to modify the linux startup script to skip starting Xvnc and instead connect to XSDL (which is on :0.0 like a normal X server).
This works great and is fairly fast. For me, this is a good compromise between a full-fledged linux laptop and the convenience of android apps written specifically for a multitouch screen. I generally do most of my stuff in Android, but I can drop into my Ubuntu desktop whenever I need more power.
The really big downside is that it's hard to prevent Android's low-memory killer from sacrificing XSDL when I haven't used it for awhile. I've mucked about with various solutions involving oom_score_adj and such, and that helps, but android still ends up killing my X server sometimes.
So, that's the easy method. For the more complicated method, I'm just theorizing, and this stuff may not work. You're going to need to either already have somewhat deep linux knowledge or be willing to learn Here goes.
In this post, I described how I managed to boot my tf701t after the internal memory card died a horrible death. The important bit here is that I learned how to boot any initrd/kernel combination using fastboot, and how to roll that combination into a boot.img so that the tablet always boots it. This is what you'll need to do both for the installation and for future boots into your Linux install.
First off, choose your Linux distro. I don't think you'll be able to use Mint, since, as someone pointed out above, there's no ARM build of Mint. However, there is an ARM build of Debian and Mint has the "debian edition", so maybe there is an ARM version. It may be, though, that the Mint folks only built their special stuff (Cinnamon/mate/whatever) for x86 platforms. I'd recommend Ubuntu as a compromise since I know it runs on the tf701t.
For the initial installation, put the contents of the install ISO onto an SD card -- just copying your bootable USB drive over should work. Now for the tricky bit: you'll need to pull the kernel and initrd ("ramdisk", "initial ramdisk" -- usually initrd-<something>.gz) off of the usb drive and into a working directory on a Linux laptop or desktop (let's call it the "host"). You might get away with just fastbooting this kernel/ramdisk directly. Install the fastboot package for your distro (Ubuntu has one, anyway). Connect up your tablet, put it in fastboot mode (I think that's done by booting with volume up and down held) and do 'fastboot boot <your kernel> <your ramdisk>'.
This will boot the kernel and load up the initrd, which is a tiny little linux filesystem stored in memory. The kernel runs a program called init inside the ramdisk and init takes over and boots into the actual installer. The question in my mind is how it goes about finding the ISO contents. If it searches by filesystem UUID, and there's a good chance that it does, then it will find your the ISO contents on the SD card just fine and the installer will start up.
If not, well, things will get a lot more complicated. Normally what one would do in a case like this would be to pass kernel command-line arguments (you do this in the SYSLINUX bootloader for distros like Ubuntu) telling it where to find the installation media. We can't do that because fastboot doesn't let you pass command-line arguments. Instead, you'd need to extract the initrd on the Host machine, modify the init script in some way to tell it where to find the installation media (probably /dev/block/mmcblk1p1), and then repackage it. I went into somewhat shallow detail on how to do the extract/repackage parts of this, but this is where either prior linux knowledge or a willingness to do some research comes in. Hints: gunzip the initrd, then use the cpio tool to extract it.
Okay, so let's say that you get the installer booting. The next big question is whether it's going to work at all. In theory the graphics chip inside the tf701t is supported by linux, but in practice, maybe it's only supported by a kernel module that Samsung built. Maybe you'd need to substitute the stock kernel. The next question is whether X has a module that will work with the graphics chip. But maybe even if it doesn't you can use a text-mode installer. That would at least let you get a system installed that you could then hack on to try to get X running.
So, let's say you do get linux installed (probably onto the internal SD card, /dev/block/mmcblk0). Now you want to boot it. You'll need to look into the installed system and steal its kernel and ramdisk, and get them onto the Host machine. Or maybe you could just extract them from the debian packages, since I'm not sure how you'd get things off of that internal SD at this stage. As a hint, these may well NOT be the same kernel/initrd as in the installer.
Once you've got the kernel/ramdisk, you can try to boot into them with fastboot. If that works (big if), then you'll want to be able to boot them without fastboot. That's where the 'fastboot flash:raw' command comes in. It takes a kernel/ramdisk, builds an android boot.img out of them, and flashes it to the device. From then on, the device will boot that kernel and ramdisk by default.
So, in theory this could work. The biggest potential stumbling block is whether X is going to natively support the graphics chip. If it doesn't, you may be stuck using the basic framebuffer driver, or maybe that won't even work at all. ...or you could just settle for the chroot method and be done with it
Good luck. I'm very interested to hear whether this works. I'm probably not going to try it myself since I like Android enough that I want to keep it around. I also can't walk you through this in finer detail because of external limits on my time, but I'd be happy to answer theoretical questions and specific technical questions, so long as you're willing to do the legwork of reading manpages and such I hope this works out for you!
Oh, one thing just occurred to me: skip the part in the installer about installing grub. It's not going to work on this device and may cause problems. You'll take care of the bootloader part yourself with the fastboot flash:raw command.
Oh, I see there's already some decent progress in this thread. Also it looks like I totally missed the -c option in fastboot that lets you pass kernel command-line arguments... that'll definitely be a time-saver. Given what I see over in that thread, it looks like we may actually get a reasonable native linux on our TF701t. Not sure how far the OP has gotten on things like mouse/keyboard input, though.
I have to say, I'm pretty excited! It'd be super cool to be able to dual-boot native linux and android on this tablet. Best of both worlds.
lexelby said:
How much work do you want to put into this? There are two options, the easy route that you probably will consider imperfect, and the much more complicated route that I'm not certain will work. I'll do my best to explain both.
The method I use is to install a linux distro (in my case, ubuntu) inside a chroot. There are several apps on the android market to help you set this up. The one I used sets up an Xvnc server, so you can view your linux desktop by using an android VNC viewer -- but it's just connecting locally, not going over the network.
This works nicely out of the box, but it's slow, partly because it's using the VNC protocol and partly because there's no 2d hardware acceleration. I tinkered with my setup and installed XSDL, a native android X server with hardware acceleration. I had to modify the linux startup script to skip starting Xvnc and instead connect to XSDL (which is on :0.0 like a normal X server).
This works great and is fairly fast. For me, this is a good compromise between a full-fledged linux laptop and the convenience of android apps written specifically for a multitouch screen. I generally do most of my stuff in Android, but I can drop into my Ubuntu desktop whenever I need more power.
The really big downside is that it's hard to prevent Android's low-memory killer from sacrificing XSDL when I haven't used it for awhile. I've mucked about with various solutions involving oom_score_adj and such, and that helps, but android still ends up killing my X server sometimes.
So, that's the easy method. For the more complicated method, I'm just theorizing, and this stuff may not work. You're going to need to either already have somewhat deep linux knowledge or be willing to learn Here goes.
In this post, I described how I managed to boot my tf701t after the internal memory card died a horrible death. The important bit here is that I learned how to boot any initrd/kernel combination using fastboot, and how to roll that combination into a boot.img so that the tablet always boots it. This is what you'll need to do both for the installation and for future boots into your Linux install.
First off, choose your Linux distro. I don't think you'll be able to use Mint, since, as someone pointed out above, there's no ARM build of Mint. However, there is an ARM build of Debian and Mint has the "debian edition", so maybe there is an ARM version. It may be, though, that the Mint folks only built their special stuff (Cinnamon/mate/whatever) for x86 platforms. I'd recommend Ubuntu as a compromise since I know it runs on the tf701t.
For the initial installation, put the contents of the install ISO onto an SD card -- just copying your bootable USB drive over should work. Now for the tricky bit: you'll need to pull the kernel and initrd ("ramdisk", "initial ramdisk" -- usually initrd-<something>.gz) off of the usb drive and into a working directory on a Linux laptop or desktop (let's call it the "host"). You might get away with just fastbooting this kernel/ramdisk directly. Install the fastboot package for your distro (Ubuntu has one, anyway). Connect up your tablet, put it in fastboot mode (I think that's done by booting with volume up and down held) and do 'fastboot boot <your kernel> <your ramdisk>'.
This will boot the kernel and load up the initrd, which is a tiny little linux filesystem stored in memory. The kernel runs a program called init inside the ramdisk and init takes over and boots into the actual installer. The question in my mind is how it goes about finding the ISO contents. If it searches by filesystem UUID, and there's a good chance that it does, then it will find your the ISO contents on the SD card just fine and the installer will start up.
If not, well, things will get a lot more complicated. Normally what one would do in a case like this would be to pass kernel command-line arguments (you do this in the SYSLINUX bootloader for distros like Ubuntu) telling it where to find the installation media. We can't do that because fastboot doesn't let you pass command-line arguments. Instead, you'd need to extract the initrd on the Host machine, modify the init script in some way to tell it where to find the installation media (probably /dev/block/mmcblk1p1), and then repackage it. I went into somewhat shallow detail on how to do the extract/repackage parts of this, but this is where either prior linux knowledge or a willingness to do some research comes in. Hints: gunzip the initrd, then use the cpio tool to extract it.
Okay, so let's say that you get the installer booting. The next big question is whether it's going to work at all. In theory the graphics chip inside the tf701t is supported by linux, but in practice, maybe it's only supported by a kernel module that Samsung built. Maybe you'd need to substitute the stock kernel. The next question is whether X has a module that will work with the graphics chip. But maybe even if it doesn't you can use a text-mode installer. That would at least let you get a system installed that you could then hack on to try to get X running.
So, let's say you do get linux installed (probably onto the internal SD card, /dev/block/mmcblk0). Now you want to boot it. You'll need to look into the installed system and steal its kernel and ramdisk, and get them onto the Host machine. Or maybe you could just extract them from the debian packages, since I'm not sure how you'd get things off of that internal SD at this stage. As a hint, these may well NOT be the same kernel/initrd as in the installer.
Once you've got the kernel/ramdisk, you can try to boot into them with fastboot. If that works (big if), then you'll want to be able to boot them without fastboot. That's where the 'fastboot flash:raw' command comes in. It takes a kernel/ramdisk, builds an android boot.img out of them, and flashes it to the device. From then on, the device will boot that kernel and ramdisk by default.
So, in theory this could work. The biggest potential stumbling block is whether X is going to natively support the graphics chip. If it doesn't, you may be stuck using the basic framebuffer driver, or maybe that won't even work at all. ...or you could just settle for the chroot method and be done with it
Good luck. I'm very interested to hear whether this works. I'm probably not going to try it myself since I like Android enough that I want to keep it around. I also can't walk you through this in finer detail because of external limits on my time, but I'd be happy to answer theoretical questions and specific technical questions, so long as you're willing to do the legwork of reading manpages and such I hope this works out for you!
Oh, one thing just occurred to me: skip the part in the installer about installing grub. It's not going to work on this device and may cause problems. You'll take care of the bootloader part yourself with the fastboot flash:raw command.
Click to expand...
Click to collapse
Very stubborn
Sorry I didn't respond sooner as I was away with family for Christmas.
Thank you for the guide, it was extremely helpful. I am still working on getting the device ready so I'll update as I progress.
Thanks again

Categories

Resources