Creating a linux 'distro' for an android device? - General Questions and Answers

Hi there, not sure if I'm on the right forum, but this seemed like the safest place to ask.
I have this project in my head that I would like to try, but I have no idea if it is even possible.
I'm currently doing a bachelors in computer science and as a way to learn, I would like to take on a big project.
As will soon become clear, I am a linux noob and know nothing about android development, but that's what I'm trying to change here.
Some time ago I bought a Chinese ereader (rebranded BOOX C67ML - using a rockchip rk3026 SoC, don't know how important that is -) and it's decent but it also kind of sucks. It runs android which overkill for a device like this if you ask me. When I look at the kindle or kobo ereaders, they have their proprietary os that is also Linux based, but much more streamlined without unnecessary features. This device doesn't even have wifi, so what am I going to do with full android on an e-ink screen? It only drains my battery more than it has to.
My question is, how feasible is it to create my own 'OS' for this device that is also Linux based and lightweight? I know that android devices can run gnu/linux in a sort of vm on top, but is it also possible to install this directly on the device? Wipe android and install a custom linux distro as you would a custom ROM.
Is this possible? Where do I begin? Any information on how the linux kernel underneath android functions and differs from a standard linux kernel would be great. I'm not asking for an easy solution served on a platter, I just want to know if it is possible and why or why not? Where do I go to learn about how to do this, point me in the right direction?
In searching around I came across postmarketOS, from what I understand they are trying to do something similar, only completely open source. No proprietary drivers for anything. For this project that is not a goal for me. If I can reuse parts of the android rom that it is running right now, I have no problem with that. Updating and keeping it up to date are not really a priority, I just need this to run a single application that works. Could also be that I completely don't understand what they are trying to do and I'm way off, but if so, please tell me what I don't understand and where I go to learn.
TLDR: Lightweight 'desktop' linux instead of android on an ereader, is it possible? Where do I start? Point me in the right direction please.
PS: If there is a better solution for this problem entirely, please do explain.

For anyone interested or with a similar idea, I'll just post what extra information I find here.
I stumbled upon Halium and Libhybris today. From what I understand, libhybris provides a compatibility layer between the android kernel and posix compatible applications. Halium uses libhybris and tries to create a common base that can be used to develop a non-android os for an android device. Please correct me if I'm wrong.

Related

Bought a Nexus One; totally, completely baffled by tethering

I'm a professional programmer, and I'm baffled. It seems that there is a whole "smartphone scene" and it's intimidating. I'm a Java expert and am comfortable with the Android SDK in Eclipse. However I'm completely baffled by the prospect of getting tethering to work on my Nexus One.
One thing that baffles me, for example, is the concept of a "ROM". Is there a ROM on the N1? I thought that ROMs haven't been used for 10 years. I was under the impression that the N1 is basically a little PC running Linux, which means that it should only have a bare minimum of a BIOS and everything else would be on "disk", or flash.
Another thing that baffles me is the concept of "rooting" the N1. It's running Android, which is an open-source mobile operating system. And, as far as I know, I have the permission to change all bits of the phone. Heck, that's part of the appeal! To say that you have to "root" your N1 is like saying that you have to "root" your Ubuntu box - it just doesn't make sense.
Complicating matters is the release of Froyo. I simply don't know enough to judge whether the actions required to upgrade the N1 to Froyo are compatible with the actions required to install a tethering app.
And that's the thing: I'm not just interested in installing tethering. I want to understand what I'm doing and why. I'd like to understand the options choose intelligently between them. There are so many resources online which are trying so hard to be helpful, but which don't really answer these simple questions.
I really appreciate your help.
-Ablation
search the correct forum for your phones model here on xda. some roms provide tethering preinstalled
check this thread for more info
http://forum.xda-developers.com/showthread.php?t=668090
while that targeted at g1, its the same concept. again search xda for the n1 section
Thanks for the link. However, I think I need a more conceptual introduction to the scene. The essential question is: what are the bits? On a PC you have:
1. BIOS
2. Disk
3. Peripheral firmware.
The disk is further broken down:
1. Bootloader
2. Operating system
3. Drivers
4. Applications
When you say ROM I assume you mean some combination of BIOS and Peripheral Firmware?

PC emulation on Android - OS XDA project links.

So in this thread it tells you how to install pc operating systems like windows and linux on the Evo 3D.
http://forum.xda-developers.com/showthread.php?t=1459153
This, is freaking awesome. This one is a big breakthrough.
----
Here is the thread in the Nook Color forums for ubuntu on the device:
http://forum.xda-developers.com/showthread.php?t=1055954
----
These two threads are native installs, not using some client to access the installation, the device itself is the client as it should be.
This is not some chrooted virtual OS simulation, but the real deal installed to the device.
----
In the back of my mind i've wanted to play with ubuntu installed on the MT4GS, but not a virtual installation I want it installed and running on the device natively.
I definitely don't have the time to do this and a lot i'm trying to do around here even if I wasn't in my busy season for work.
Dropping this information so I can find it later when I do get to trying to get ubuntu (and now windows XP looks like a possibility) installed on this device.
If anyone else feels like looking into this, here's a good place to start. If anyone comes across any other projects that are the real deal and not virtual installs please post links here.
Have fun!
Blue6IX said:
So in this thread it tells you how to install pc operating systems like windows and linux on the Evo 3D.
http://forum.xda-developers.com/showthread.php?t=1459153
This, is freaking awesome. This one is a big breakthrough.
----
Here is the thread in the Nook Color forums for ubuntu on the device:
http://forum.xda-developers.com/showthread.php?t=1055954
----
These two threads are native installs, not using some client to access the installation, the device itself is the client as it should be.
This is not some chrooted virtual OS simulation, but the real deal installed to the device.
----
In the back of my mind i've wanted to play with ubuntu installed on the MT4GS, but not a virtual installation I want it installed and running on the device natively.
I definitely don't have the time to do this and a lot i'm trying to do around here even if I wasn't in my busy season for work.
Dropping this information so I can find it later when I do get to trying to get ubuntu (and now windows XP looks like a possibility) installed on this device.
If anyone else feels like looking into this, here's a good place to start. If anyone comes across any other projects that are the real deal and not virtual installs please post links here.
Have fun!
Click to expand...
Click to collapse
Regardless of what impression you may have, it is ABSOLUTELY IMPOSSIBLE to run MSWin on ARM hardware natively. The reason for this is that MSWin is x86 and ARM is... ARM. The approach used in the first link is to use BOCHS (pronounced "Box"), which is a VIRTUAL HARDWARE EMULATOR. It requires a host operating system to be functioning in the background, in this case Linux.
As for Ubuntu... well sure. No problem. Its Linux and the phone runs Linux. Not that big of a stretch to replace the Android parts with GNU.
Note that NONE of this is any kind of "great breakthrough". Bochs has been around for a VERY long time. First OPEN SOURCED in early 2000. Yeah, 12 years ago. As for Ubuntu... well I suppose that the main reason that most people aren't making a native android replacement out of ubuntu, is that not many people are all that interested in it. Cute in theory, but not practical.
What would be a more worthy project would be to upgrade android to GNU libraries and utilities. This would afford us an actually USEFUL balance between the two. Also the ability to run X *through* android without having to do stupid things like VNC. Have the proper interface ***AS AN ANDROID APPLICATION***, leaving Android to work (i.e., phone calls, etc.) while simultaneously offering the standard Linux applications.
My thought though, is that this is becoming less and less important. Firefox is on Android now, the Document foundation has announced LibreOffice for Android -- supposed to be by late 2012 to early 2013... GIMP has no place on Android... That certainly covers the basics.
Appreciate the post. I didn't have time to dig into it too deeply, so took it at face value for the impression I got. Happened to come across it in passing and didn't want to lose track of something vital to the future dev of a project like this on the doubleshot. (but definitely this doesn't belong in the dev section at this time - just clutter there.)
I was hoping people would add to it, especially the way you have, who had more of an understanding of what's going on there - I didn't realize that it was a virtual environment for the windows stuff, but it did seem to good to be true.
Even if no one responded I figured the thread would get pushed down out of the way, but still be here when I got the time to come back to it.
----
My reason for running native linux on the device itself is to be able to use the Android SDK and tools without needing a computer to do so. I have 2 of these phones and a Nook Color. The NC has USB host support, so I could plug the doubleshot into it without frying either device. (yes, i'm blending android and linux concepts here - but usb host support in android shows that it's capable of doing it)
Even from one doubleshot to the other I could use wifi adb for a lot of stuff without plugging them into each other through USB and frying the phones. So that would be a victory as well.
The lack of a hardware charging circuit in the doubleshot makes the worry of frying the phones a big deal, power transfer through USB is a big hurdle to jump in management.
Beyond that - the doubleshot is powerful enough on hardware specs to be able to compile a kernel, but that's not gonna happen through a virtual linux install because the overhead is too much. A native install might just be able to do it though. Won't know until I try, but it's worth the work to get to the point of trying, even if it doesn't work out.
The Nook Color probably won't be able to compile a kernel - it's asking too much from a device not really able to handle that.
Getting what I mentioned above to work would mean I could do all my dev work with what fits in my pocket, and let me keep working wherever I am.
I do like the idea of an app to work with this through Android itself - but I don't see how I could use the SDk and variety of user-created tools without a native linux install. Worth pursuing either way though.
If anyone has anything to add, i'd be welcome to hear it. Just understand this is not a project i'm working on or actively pursuing right now - but fully intend to down the line.
Actually blue. There is a thread somewhere that has a step by step on installing ubuntu on gingerbread. I meant to add it when I added the backtrack link. For some reason I didn't, I probably forgot, I actually think the link for it is in the backtrack thread in the sticky.
If I do find it ill let you know.
Sent from my ICS Splashed using Tapatalk

[Q] Install Linux on Kindle Fire?

I'v read some post on about install Linux distribution(Ubuntu, Arch Linux ARM, Gentoo) into a tablet pc, and I wonder if I can install Linux on Kindle Fire... I've no idea about this kind of thing, so if you think it's possible, I'll learn how to do it... Thank you in advance...
I Think if Kindle fire run on linux arm kernel you can. but you must porting Ubuntu's package to ARM and install this. But It is not so easy and can make problem to device
What about extending, not replacing, android linux?
Shouldn't it be possible to add commands to the Linux that underlies android to give it the functionality of at least some version of full Linux while keeping the android layer on top of it? I'm not a developer, so I don't know what all the technical problems might be, beyond the following:
Some kind of compiler is necessary, but isn't that also needed to create an android ROM anyway?
Code:
Since the KF doesn't accept an SD card, space might be a problem, but maybe a USB memory stick (flash drive), an OTG adapter, and perhaps some change to the bootloader to allow the KF to go into USB host mode might work. And the solution would probably be easier if the external memory were used for data and apps, but not for any part of the OS?
Perhaps this discussion belongs under Android Development, either specifically for the KF1 otter or more generally. Maybe there already are such discussions on xda or elsewhere. Guidance from developers and others in the know would be appreciated.
This sounds like a Decent idea. I actually want to try that now.

[Q] re:custom os on x86 android tablet?

I have searched lots on the subject of getting a full linux distro running on an android device most of which were really not really what I am looking for, almost everything I find on the subject seems to be some kind of hybrid solution where running linux side by side or on top of android but imo that just seems messy and may as well just be using andorid with it's apps than do that.
I ran into interesting information about modding chromebooks some of when were the similar side-by-side solution but others actually more what I was looking for, they enable legacy seabios while not enough to get windows installed seems to work fine to boot into linux and another guy had baked his own custom seabios replacing the chrome bios entirely.
my question, the atom tablets Im seeing pop up a few places are standard x86 right ? is it possible to either
1/run a modded sea bios similar to chromebook mods? then boot a stock ubuntu distro installation maybe from external storage?
2/or somehow have the existing/modded bootloader boot linux kernel/ubuntu install ?
can't help think if it were that simple maybe someone would have done it already but also thinking the hardware (drivers) are supported by android so they should be supported by linux right ? and if it is standard x86 can't be too much a stretch right ?
I don't own an atom tablet but was thinking it may be desirable (and add more use) if I could get a full linux distro installed and be a lot more affordable than full fledged windows based tablet.
anyway thanks
ps:that captcha is harcore
They are kinda standard. But they are not following PC architecture. They are so called Intel MID (Mobile Internet Device). On such devices you may find neither EFI nor ACPI. They have so called SFI which is a complete disaster. But Intel Merrifield is more or less supported by upstream kernel and Yocto (thanks to Intel Edison platform). You may try to gather information about those devices (official name of SoC is Intel Atom Z34xx).

[Firefly] [ROCKCHIP] [ITX-3588J] ITX-3588J ARM Android/Linux Dual "Deskphone" Progress

First off, I wanted to say I posted a few threads about this thing here asking questions about stuff I needed to get it working in the way I'd like and I'd want to thank you because I have made a lot of progress in getting it to be what I'd like it to be. I also don't know if this is the best forum to post this report because it's neither a question nor necessarily a tutorial but rather a summary and description of work already done so far, and especially because this device, while it sure runs Android (very well!) does not fit into any of the categories on this site neatly.
The story so far
This post concerns my experience working with the ITX-3588J, a board released just a few months ago by the Chinese manufacturer Firefly (or T-Chip Intelligent Technology Co. Ltd, based in Zhongshan) that is in the coveted mini-ITX form factor which means it can actually fit into a small-size desktop computer case and indeed has enough compute power to theoretically - and perhaps not so theoretically! - function as an honest desktop system with an ARM processor: namely the - also very new - Rockchip RK3588 system-on-a-chip.
About two months ago, I was looking into acquiring a new kind of computer to replace my somewhat longer on the tooth x86 machine that would be compact, low-power, and easy to transport while also being a fully capable desktop. And I certainly didn't want Apple. I had seen some very small form x86 desktops before, but I also knew there were many boards - like Raspberry Pi - that featured the ARM processor. Not content with the Pi, which is still very weak for this application at least when compared against modern software, I wanted to see if there was something else by now in a similar vein, and when I saw this board I thought it was an amazing option, esp. given I have not yet found a peer. Many ARM single-board devices exist but this is the only one I've found so far that looks to be in a proper desktop form factor and sporting a processor powerful enough to work at that level.
So I got the board, a case, and - noting it had SATA ports - a cheap 250 GB SSD, and put it all together ... and fired it up! And to my surprise, it booted up Android! Which was a real shocker because I generally thought this'd be like another PC board, not having had much experience with this ecosystem beyond phones, so that it would just give the usual "OS not found" stuff. Nope - pre-loaded on the board. Very minimal, very bare-bones though, not even the Google Play and similar essentials required for a usable Android experience. Yet with the little bit I had, I couldn't help but notice it was extremely fluid, responsive, and snappy, moreso than my aging 2018 era x86 box. Moreover, it was very, very interesting (and exciting!) to see Android booted onto a full-size monitor screen like Linux or Microsoft Windows - and actually and surprisingly, to see that it didn't look and feel all that bad!
However, of course, I wanted more. First, I wanted a fully-featured installation of Android. Second, I wanted to run Linux on it - especially given that, a short while later, I found that the board manufacturers were offering a stock Ubuntu 20.04 to be installable to it. Although, in the early stages, I didn't know how to do this at all, and then soon after learned how to reflash the embedded MMC chip to change the OS. And I did so, trying the Ubuntu and finding it also very performant, but not liking either that it was not quite the newest version but also more that it was mutually exclusive with Android - so far.
And that would begin a long - and at many times frustrating, especially given how much information out there is not at all tuned to a device like this being pressed into this application - learning journey toward exploring topics as diverse as how ARM processors and SoCs work under the hood, U-Boot, kernel features, the Firefly-Rockchip developer kit - and having to essentially single-handedly discover many of that kit's ins and outs given there was pretty much no documentation - and more, ultimately leading to where I've got it to now.
What it can do at this point
And that is, right now, I have it sitting here, loaded up with the stock Android 12 and Ubuntu 20.04 - with the former on the eMMC and the latter on the SSD hard drive. On the Android side, Google Play is now loaded and functional, though Google Chrome is not (it crashes with a "Telephony is null" exception for some reason, which seems to suggest for some reason it's trying to act like it's on a phone but isn't). Zoom - an app that I really, really wanted to have (and why I wanted to keep Android around on it) - works and works smoother and cleaner than my 2018 x86 Linux clunker. On the Ubuntu side, though, things are not yet coming - mostly because of seeming inability to use U-Boot to boot from the SSD. I managed to install GRUB, and given that Firefly's generous board SDK provides the full U-Boot source code was able to recompile it with the necessary "bootefi" command enabled which is not present in stock, but nonetheless alas this U-Boot seems to have its SATA support bugged or incomplete, because it would crash immediately upon trying to initialize that subsystem.
Where I'd like to go with it
Obviously, full dual boot of Android and Ubuntu, so getting U-Boot to boot the GRUB resident on the hard drive, is the biggest issue so far, and that means investigating whatever is the problem (or not?) in its SATA subsystem. Getting Google Chrome working on Android is another important step. Moreover - though it would cost extra money that I do not have right now - there's the very interesting possibility, owing to the fact that it has a built in M.2 slot on the board, and alluded to in the title - that the device could be made to act as a cell phone. And finally, the possibility of upgrading to a newer version of Ubuntu (ideally 22.04) - however from what I know so far, it looks like this will have to wait because the stock Linux kernels do not currently support the RK3588 fully - though I'd suggest the Linux kernel developers really should take a look at the SDK that came with this thing because it has lots of code in it including for the kernel, all under GPL.
Final note
One of the most interesting things I've learned from this project, and mentioned earlier, is just how well Android seems to work as a desktop OS. While there have apparently been some attempts to port it to x86, this is perhaps one of the first devices that is desktop-workable and which runs it natively. And one of the things I find that's nice about it is that ironically, because all the apps are designed for small screens, when they are run on a very big screen (and this monitor is not "very big" even by today's monitor standards, being a used and earlier LCD type), they are extremely easy on the eyes and have minimal UI clutter when compared to a typical desktop app on most Linux WMs and on MS Windows.
If you want to know more about the details, or anything else, feel free to ask any questions you might have!
UPDATE:
I believe I may have found an easier way to dual-boot Linux with Android, and that consists of configuring a custom ROM that will put both kernels, and GRUB, on the board's eMMC, while the rootfs for both OSes is placed on the hard disk. Will be seeing how it works.
UPDATE:
I have almost completed the custom ROM! I have now both Android and at least the base system for Ubuntu 20.04 (Kernel 5.10.66) bootable with Android now storing user data on the hard drive; though I'm still running into some hardware initialization issues in the latter that are keeping me from actually installing the desktop system. With regard to the Ubuntu system, there is some interesting issue in that for some reason the provided SDK kernel, which I had to rebuild, seems to build more Android-like because it wants to look in "/vendor" for some things related seemingly to the networking facilities, and it is possible this is preventing me from bringing up wifi, which I need in order to download the rest of the system.
But lots of progress overall - it seems that a full-fledged ARM desktop running simultaneously Android and Ubuntu is within reach to be wrung from this board!
Ignore my request for an update in another post. Seems you like you moving along. I don't need dual boot, just a working Android 12 with GPlay and Chrome. Did you get Chrome to work?
mebalzer said:
Ignore my request for an update in another post. Seems you like you moving along. I don't need dual boot, just a working Android 12 with GPlay and Chrome. Did you get Chrome to work?
Click to expand...
Click to collapse
Thanks. Yeah, I want to say that I have pretty successfully gotten Android 12 working on it for sure, but Ubuntu is proving much more difficult due to graphics support issues, and I'm not sure if it will be possible until RK3588 is supported in the mainline Linux kernel tree which is still something under development. And yes! I got Chrome to work Everything works, actually - it's great as an Android system, though obviously Android is kinda funny to use as a desktop OS. I am wondering if I can't get a "pseudo" Linux using something like Linux Deploy in lieu of running it natively, at least until the kernel development catches up with this new processor.
(FWIW, I'm posting this post from that machine while it is running A12. )
Good to see someone else is interested in it, though. What are you planning on using yours for?
Insofar as getting Android 12 to work w/GApps - it depends on if you want to do it purely on the eMMC or you want to also put user data on an attached hard drive like I did. In either case, the best option, I feel, is to create a custom ROM - I could provide custom ROMs for it for download, but don't know because of Google's licensing conditions around the GApps and have heard of people getting in trouble with Google for distributing custom ROMs for phones that have GApps in them. You basically need to unpack the stock Android image, unpack the "super.img", then load the apps from a package like NikGApps into the "product" partition (NOT "oem" - that was a big mistake), then repack everything and flash to the eMMC again. You will need the board SDK from Firefly for all this as it has the custom ROM-packing and flashing tools.
Alternatively, it is possible to manually install the NikGApps GApps using the Android console - as it's a fully unlocked system, obtaining root access is trivial: just put it into Developer mode and you will find the root access in the "Developer options..." menu under "System".
Shimmy99 said:
Insofar as getting Android 12 to work w/GApps - it depends on if you want to do it purely on the eMMC or you want to also put user data on an attached hard drive like I did. In either case, the best option, I feel, is to create a custom ROM - I could provide custom ROMs for it for download, but don't know because of Google's licensing conditions around the GApps and have heard of people getting in trouble with Google for distributing custom ROMs for phones that have GApps in them. You basically need to unpack the stock Android image, unpack the "super.img", then load the apps from a package like NikGApps into the "product" partition (NOT "oem" - that was a big mistake), then repack everything and flash to the eMMC again. You will need the board SDK from Firefly for all this as it has the custom ROM-packing and flashing tools.
Alternatively, it is possible to manually install the NikGApps GApps using the Android console - as it's a fully unlocked system, obtaining root access is trivial: just put it into Developer mode and you will find the root access in the "Developer options..." menu under "System".
Click to expand...
Click to collapse
Thanks I will keep this in mind. See my reply to you other reply on another post as well.
I would to run gplay as well please send me instruction the nikapps github doesnt say nothing

Categories

Resources