Since my tablet had become somewhat dated it was only able to utilize Android 2.3. I wanted to keep using the tablet, but I wanted it to be more useful. I wanted to be able to utilize it as a regular computer, rather than through the Android interface. Honestly, the thing had more processing power than several computers I had in the past, and I didn’t think it was unreasonable to use it this way. Fortunately, I was able to get it working with a little bit of research on the internet.
Before continuing farther, I would like to give thanks to the user with the nickname: divx118 for a lot of the ground work for this project, such as: Wifi compilation and how to and sound drivers. I originally wrote down all of the links, but they have since expired as this was over a year ago. I like to give credit where due, however, and thus have included the user/nickname here. While not the original information I received, here is a current link for some helpful discussion on this specific topic – http://forum.xda-developers.com/showthread.php?t=1094515 – that is still available on XDA-Developers.
The first thing to remember about Android is that it is based on a Linux kernel. This is key, since you need drivers for a computer, and there are already modules written for the device to be used by the Android system with the Linux kernel. Some argue that Android is not really Linux, but at the heart of it is a Linux kernel, so that is enough for me.
The first step was installing Archos SDE software. This special developer edition software allows you to choose to boot something else on startup. I headed over to http://www.archos.com/us/support/support_tech/updates_dev.html and downloaded the SDE for my device, which is a gen8 model. You then follow the instructions to flash this to your device.
Once I flashed that onto the device, pressing the down volume button and the power button on startup would reveal the options of what to boot. Not limited to, but included was the Angstrom Linux distribution. It loaded just fine, and seemed to function, although that distribution is really limited, and I prefer more flexibility, so I decided to change it to Debian.
The way this setup works is truly a Linux instance, but not a traditional load. The Android operating system is still fully functional and in place, but is not started at startup. What this particular setup does is allow you to put a file on the storage of the Archos 101 that is your Linux hard drive disk image. That image is then loaded with the accompanying initramfs and the original Omap 2.6.29 kernel provided by the Archos Android system. So rather than start Android, you are directing the kernel to use the initramfs and hard drive disk image that you provide. The major limitation of this is that the file system is limited to a 4 GB hard drive disk image. Actually, 3.7 GB was the largest I could get to work. This is not an emulator nor a virtual box. Android is not running while Linux is. Conversely, while you are in Linux, you have complete access to all the storage of the Archos, including the file that is your hard drive image, so be careful!
Then, I created a directory for all of the files.
# mkdir archos
# dd if=/dev/zero of=./rootfs.img bs=512 count=7226572
To create an empty file for the image of 3.7 GB.
I then needed an initrd.gz file (common to use for arm devices) from Debian, for which I downloaded initrd.gz and vmlinuz-2.6.32-5-versatileoff of the web (the latest is here – http://ftp.debian.org/debian/dists/stable/main/installer-armel/20150422/images/versatile/netboot/ ). Essentially, this is the netboot image and kernel telling the kernel to look up the online repository and download the needed files. Note: I needed internet access for this.
Next, I started Qemu with the following options:
# /usr/bin/qemu-system-arm -monitor stdio -M versatilepb -m 256 -localtime -hda ./rootfs.img -boot once=c,menu=off -net nic,vlan=0 -net user,vlan=0 -kernel ./vmlinuz-2.6.32-5-versatile -initrd ./initrd.gz -name “archos”
The installation booted right up on my computer screen, and I simply went through the menus as with any usual install. Upon completion, I could not run the new system in Qemu, but I then hooked up the Archos via usb to a computer, and using adb pulled the HDD image, called rootfs.img from the Archos and put it onto the computer to save it. Following that, I put my new rootfs.img onto the Archos and rebooted.
Unfortunately, it didn’t work this try. What I came to realize is that I had set up my system to run off of the vmlinuz kernel and initramfs for Qemu, and I needed to set it up to run off of the Omap 2.6.29 Kernel that was compatible with the Archos. I had the old rootfs.img on my computer, so after mounting it, I could then extract the /boot folder and thus had a copy of the Omap 2.6.29 kernel and the initramfs file, which I put into my image /boot sector, and changed the links for vmlinuz to point to it.
I also needed the library of drivers and things used to make the hardware work. So I copied the /lib/modules/2.26.29-omap1/ directory and contents from the old rootfs.img to my new rootfs.img.
After all of this, I was ready for something to work, and work it did! The system booted and left me at a login prompt. I was in, but the work was far from over. That, however, is the topic for the next post.
Linux – keep it simple. Even if it is really complex to get there!