A while back I bought a Nexus 9, mainly because it has a weird processor that emulates a 64 bit ARM (aarch64). Google seem to have abandoned this platform entirely, just 6 months after I got it, so fuck you too Google. Anyway here’s how I installed a Fedora 21 aarch64 chroot on the device, using virt-builder and virt-tar-out and a bunch of unnecessary hassle.
First I ran virt-builder, which takes under a minute to produce a Fedora 21 aarch64 disk image. I then used virt-tar-out to convert all the files in that disk image into a tar file:
$ virt-builder --arch aarch64 fedora-21 $ virt-tar-out -a fedora-21.img / chroot.tar
Copy this file over to the N9, and unpack it. I have rooted my N9, so I can do this as root to preserve all the permissions etc:
# mkdir root # cd root # tar -xf /sdcard/Download/chroot.tar # cd ..
And how can there not be a tar utility in Android?? I had to build a static ‘tar’ for aarch64 using my existing aarch64 server, to run the above command. And and and how can there be no chroot utility either!? I ended up compiling that myself too yada yada.
After all that you can do:
# mount -o bind /dev root/dev # mount -o bind /proc root/proc # mount -o bind /sys root/sys # PATH=/usr/bin:/bin LD_PRELOAD= chroot root /bin/bash
which gives me at least a Fedora 21 shell on Android.
Edit: A few further notes:
- When setting up a non-root user account inside the chroot, give it the same UID, GID and groups as the ordinary non-privileged Android user account. In particular it must be in the
inetgroup, else network access is blocked.
- You may need to set up
/etc/resolv.confby hand in the chroot.