This may sound stupid to someone who knows more about Android, but I don't and it it has been bugging me for some time now.

Since Android is at its core a Linux system, shouldn't it be possible to directly boot from a different storage device (like the SD card) the same way I can boot my computer from a thumbdrive?

This would (in theory) enable the to use a (big) SD card as system memory instead of the (in my case, which is a Wildfire S) ridiculously small real system memory.

So, is this possible? If yes: How? And are there links/howtos? If no: Why? Which meachanisms prevent that from happening? Or has just nobody tried to do it?

  • 1
    The Nook Color/Tablet can both do this, and I've seen other Linux distros (Debian, Ubuntu) boot from the SD card on the Xoom. Don't know if anyone's ever tried it on the Wildfire S, although you could look into something like Boot Manager. I'm not sure if there's a device-agnostic solution other than that (which is a little finicky). – eldarerathis Aug 30 '12 at 14:20

The boot.img that is responsible for booting up Android, has their init scripts embedded in the RAM Disk of the actual boot.img which mounts the partitions into the respective /data, /cache, /system mount points respectively.

By altering the init scripts to hit on the SDCard, could lead to an unstable system, furthermore, reducing the life of the SDCard via wear and tear of the SDCard - why?

The kernel when booting, is loading from the / which is within the same partition as the boot partition - hence the need for the RAM Disk to be present along with it. It is that, which gets loaded into memory - a temporary file-system, in order for the init scripts to be read in and executed. Once the mount points are established, then the RAM Disk gets removed and thereby, the temporary file-system a lá RAM Disk, gets "flipped" over to the real partitions at a later stage during the bootstrap.

This is where the RAM Disk comes in - only temporarily, it is through that, the whole process of booting can happen.

The chicken and egg is this - the kernel prior to boot, has no idea what partitions are there!

Not alone that, by hard-coding the SDCard into the kernel's init parameter, which is a specific option that can be passed into the kernel upon boot in which it alters the kernel's processing of the environment.

The wear and tear of the SDCard would be significantly increased, not alone that, the entire Android ecosystem would drastically change, the API's have defined internal storage and external storage - so it could lead to confusion in where to store their own content providers for contacts etc, "Are we sitting on a external storage or internal storage?" from the perspective of Android itself, bear in mind, the content providers itself are housed in internal storage and from an overall picture, its one of de-facto standard convention for Android's file-systems involved.

So to sum up, I do not think that's possible, not ruling out its impossible either but if it can be done, chances are it will be tied intimately to the handset itself, give or take, what manufacturers put in there from a perspective of partition format types (yaffs, emmc, LinusStoreIII, and more importantly, the SDCard handling mechanism from the kernel/hardware viewpoint will be different - am talking about different IO addresses here) and not alone that, differing sizes of the partitions also, this would make the whole concept of Android - not exactly portable either due to non-standard scripts found within the RAM Disk itself.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.