start work on debian on android tutorial
authorSteven McDonald <steven@steven-mcdonald.id.au>
Fri, 25 Nov 2011 09:35:06 +0000 (20:35 +1100)
committerSteven McDonald <steven@steven-mcdonald.id.au>
Fri, 25 Nov 2011 09:35:06 +0000 (20:35 +1100)
tutorials/debian_on_samsung_galaxy.shtml

index be46b8a67f42973e5af57a213aa3681e0bc93da0..07f657b6223161cecb9c2ff0ab8bf7eef246eba9 100644 (file)
@@ -23,7 +23,118 @@ AND on the tutorials index page!
 <h1>Installing Debian GNU/Linux in a chroot on a Samsung Galaxy S II</h1>
 <p><em>(Last updated 2011-11-25)</em></p>
 
-
+<p>
+There are numerous how-tos on the web for installing a Debian chroot onto
+a smartphone running Android, but most of them either give you an image
+to install on your phone (which doesn't teach you anything) or have you
+set up the Debian system on your desktop and copy it to the phone.
+Neither of these options appeal to me, so I've done it my own way and
+written this document to light the way for others, too.
+</p>
+
+<p>
+Assumptions made:
+</p>
+
+<ul>
+<li>
+You have an Android smartphone with access to a root shell via SSH. I run
+<a href="http://www.cyanogenmod.com/">CyanogenMod 7.1</a> on my Galaxy S
+II, but any Android system with root SSH access will do.
+</li>
+<li>
+You have a basic understanding of Debian and its packaging system. This
+procedure does require manual invocation of <tt>dpkg</tt> if you run into
+problems -- if you don't know what <tt>dpkg</tt> is or how to use it,
+this method probably isn't for you.
+</li>
+</ul>
+
+<p>
+If not all of these assumptions are true, please don't contact me if
+something doesn't go right for you when following this how-to.
+</p>
+
+<h2>Preparation</h2>
+
+<p>
+The first thing you need to do is install <tt>cdebootstrap</tt> on your
+phone. <tt>cdebootstrap</tt> is a tool for bootstrapping a Debian system,
+usually from another Debian system, but in this case we'll be doing it
+from Android.
+</p>
+
+<p>
+So, to install <tt>cdebootstrap</tt>:
+</p>
+
+<ul>
+<li>
+Download the <a href="http://packages.debian.org/sid/cdebootstrap-static">cdebootstrap-static</a>
+package for your architecture. Both armel and armhf packages should work
+on recent Android phones; if you have an older phone, you may need to
+stick with armel. I'll be using armhf in this tutorial, but you are free
+to choose whichever architecture suits you best.
+</li>
+<li>
+Now, copy the files needed for <tt>cdebootstrap</tt> to work across to
+the phone. It doesn't matter where you put them, as long as you can
+execute the <tt>cdebootstrap</tt> binary -- so don't put it in
+<tt>/mnt/sdcard</tt>, as this is mounted with the <tt>noexec</tt> mount
+option. These files are nicely ready for us in a tarball located at
+<tt>./usr/lib/cdebootstrap/cdebootstrap_0.5.8+b1_armhf.tar.gz</tt> inside
+the package, so you can just pipe the contents of this tarball to ssh and
+extract it on the phone. I'm going to put it into
+<tt>/data/local/bin/</tt>, because that's already in the default
+<tt>$PATH</tt> so I don't have to care about it again.
+<code>
+$ mkdir /tmp/cdebootstrap && cd /tmp/cdebootstrap
+$ ar x /path/to/cdebootstrap-static_0.5.8+b1_armhf.deb data.tar.gz
+$ tar xzOf data.tar.gz ./usr/lib/cdebootstrap/cdebootstrap_0.5.8+b1_armhf.tar.gz | ssh root@$PHONE 'tar xz -C /data/local/bin/'
+</code>
+Obviously, replace <tt>$PHONE</tt> with the hostname of your phone.
+</li>
+</ul>
+
+<h2>Bootstrapping the Debian system</h2>
+
+<p>
+Now that you have a working <tt>cdebootstrap</tt> on your phone, you can
+use it to bootstrap Debian. First, however, you will need to create a
+file system for Debian to live on. It may be possible to create such a
+file system directly on the SD card, but as I don't really understand
+Android partitioning, I decided not to try this and risk losing data. (If
+someone knows of a way to do this, please
+<a href="about.shtml">contact me</a> and let me know!) The reason you
+need a separate file system for Debian is that Android mounts its own
+file systems with options like <tt>noexec</tt>, which would disallow
+executing all binaries placed on them (thus defeating the purpose of an
+operating system).
+</p>
+
+<p>
+The easiest way to set up a file system is to simply create a file in
+<tt>/mnt/sdcard</tt> and format that -- but beware, if you make this file
+larger than 2 GiB, the FAT file system it lives on will complain and you
+will lose the image next time you reboot. This happened to me the first
+time I tried it, and I hadn't made a backup, so I had to do it all over
+again. :(
+</p>
+
+<p>
+So, ssh to your phone, and run the following commands:
+</p>
+
+<code>
+# dd if=/dev/zero of=/mnt/sdcard/debian.img bs=1024 count=2000000
+# mke2fs -Fj /mnt/sdcard/debian.img
+# mkdir /debian
+# mount -t ext3 -o noatime,errors=remount-ro /mnt/sdcard/debian.img /debian
+</code>
+
+<p>
+
+</p>
 
 </div>