[KERNEL/MOD] [LINUX] [Rootbind] [Native EMMC/all TF101&TF101G/fast/tested] [2-Jul-13]

Search This thread

jrohwer

Senior Member
Mar 4, 2011
424
286
[KERNEL/MOD] [LINUX] [Rootbind] [Native EMMC/all TF101&TF101G/fast/tested] [2-Jul-13]

UPDATE 2013/11/08: New kernel released with USB and framebuffer fixed. See post #3.
UPDATE 2014/05/16: New Ubuntu 14.04 filesystem. See point #2 below under Installation.
UPDATE 2014/06/03: New kernel released with USB and framebuffer fixed, OC to 1.5 GHz. See post #3 and #326.
UPDATE 2014/07/09: New kernel released with OC to 1.5 GHz fully working, boots every time. See post #3 and #334.

This is a kernel/initrd mod that allows you to run Linux (Ubuntu, Debian, Arch,...) on your TF101 from the internal EMMC (/data partition in Android) without repartitioning your tab.

Disclaimer:
This works on my tablet and I use it daily. However, I am not responsible for any bricks or if you damage your beloved TF. YOU ARE DOING THIS AT YOUR OWN RISK!


Features and advantages:
  1. Fast (and I mean about as fast as it's gonna get on this device). See post #2 for benchmarks.
  2. No need to repartition to get this. Previously TF101 users could run Linux on EMMC but they had to repartition with wheelie/nvflash, but it wasn't available to TF101G users (of which I'm one).
  3. Any free space on your /data partition is available to both Linux and Android. When you delete stuff on either operating system, the free space is available for both again, as they are running off the same partition. Previously, when you re-partitioned e.g. with OLiFE you had to allocate a certain space (8GB by default) for Linux, then this was not available for Android even if you're not using all of it in Linux.
  4. Way faster than loopmount, especially for disk writes.
  5. Way faster than running Linux off a MicroSD card ext4 partition (even with class 10).
  6. Dualboot is achieved just by flashing either the Android or the Linux kernel.

So how does this work?
The kernel/initrd is modded to take an extra parameter "bind=/path/to/linux/rootfs" on the command line. This will then bind-mound that path to the Linux root mount. It works pretty similar to the way a loop-mounted linux image is loaded and set up during boot, except that now bind-mount is used, not a loop-mount. This is possible because both Android and Linux use the ext4 filesystem, so they can actually share the same partition.

N.B. This thread is not a guide on how to get Ubuntu running on your TF101. There are plenty of guides for that, e.g.
Make sure to read those threads to get an idea of how this works.

READ THESE INSTRUCTIONS CAREFULLY!

Installation:

  1. Take a Nandroid backup, just in case something goes wrong.
  2. Get a Linux root filesystem if you don't already have one.
    See this thread for a discussion of various filesystems available for rootbind.

    Alternatively roll your own using debootstrap as described by shaola:
    http://xdaforums.com/showthread.php?t=1476835

    NEW! For a fully working Kubuntu 14.04 image (with graphics acceleration using the Nvidia drivers) see this post: http://xdaforums.com/showpost.php?p=52697775&postcount=303
    This is already an image in a tar file so it doesn't need to be mounted, so instead of the code below you can merely do the following:
    Code:
    mkdir -p /data/linuxroot
    busybox chmod 755 /data/linuxroot
    cd /data/linuxroot
    tar -xpjf /path/to/my/saved/kubuntu-14.04.tar.bz2

  3. Running Android, copy the root filesystem to a directory on your /data partition, preserving the permissions. The easiest is with the "tar" command (see below). The default install assumes that Linux lives in /data/linuxroot under Android.

    For a Linux image in a file that is used for loop-mount (assume it is in /sdcard/ubuntu.img, or edit accordingly), run the following in a terminal when running Android (make sure you are root):
    Code:
    busybox mount -o remount,rw /
    mkdir -p /data/linuxroot
    busybox chmod 755 /data/linuxroot
    mkdir -p /mnt/ubuntu
    busybox mount -o loop /sdcard/ubuntu.img /mnt/ubuntu
    cd /mnt/ubuntu
    tar -cvp * | tar -C /data/linuxroot -xp
    cd /
    busybox umount /mnt/ubuntu
    rmdir /mnt/ubuntu
    busybox mount -o remount,ro /
    (note in tar command first -c is lowercase, second -C is uppercase)

    For a Linux rootfs that lives on a separate partition (e.g. 2nd part. on MicroSD), run the following (assumes linux is in /dev/block/mmcblk1p2, otherwise edit accordingly):
    Code:
    busybox mount -o remount,rw /
    mkdir -p /data/linuxroot
    busybox chmod 755 /data/linuxroot
    mkdir -p /mnt/ubuntu
    busybox mount -t ext4 /dev/block/mmcblk1p2 /mnt/ubuntu
    cd /mnt/ubuntu
    tar -cvp * | tar -C /data/linuxroot -xp
    cd /
    busybox umount /mnt/ubuntu
    rmdir /mnt/ubuntu
    busybox mount -o remount,ro /
  4. Copy kernel modules to your rootfs. Download modules-3.1.10-9.tar.gz to your /sdcard. then:
    Code:
    cd /data/linuxroot/lib/modules
    tar -xzf /sdcard/modules-3.1.10-9.tar.gz
  5. Flash the Linux kernel. Either flash the zip from recovery or copy the kernelblob directly to the staging partition with dd (if you don't know what I'm talking about here, then use the recovery method).
  6. Reboot 'n enjoy! Remember to run "sudo depmod -a" after the first Linux boot, and reboot. Otherwise your modules won't load and wifi, etc., won't work.
  7. To re-boot into Android, simply flash the boot image/kernelblob from your Android ROM.

Notes:
  • The kernel is compiled from Jhinta's source with a few modifications to the config - http://xdaforums.com/showthread.php?t=1683145
  • Make sure not to have a /host directory in your Linux rootfs - this interferes with the bind mount!
  • The Linux rootfs can live anywhere on your Android /data partition (the default is /data/linuxroot). If you want to change this, then you'll have to blobunpack the kernelblob-rootbind, unpack the boot image (kernelblob-rootbind.LNX) with abootimg, change the command line as desired, re-pack the boot image with abootimg, and re-pack the blob for flashing.
    The "bind" cmdline argument is the location of your Linux rootfs without the initial "/data". So if your Linux rootfs lives on /data/my/linux/path under Android, then you'd have to change the cmdline parameter to "bind=/my/linux/path".
    Make sure, however, not to put the Linux rootfs to the "internal storage" (/data/media) or any subdirectories thereof. This plays havoc with the Android media scanner when re-booting into Android and your tablet may slow down to a crawl.
  • Under Android your EMMC partitions are /dev/block/mmcblk0p1,2,3,....
    Under Linux, this is /dev/mmcblk0p1,2,3....

Thanks to:
lilstevie - for bringing Ubuntu to our tablet
Jhinta - for his 3.1.10 kernel
shaola - for his debootstrap guide
x3maniac - for his Tubuntu installer
transformador - for his mountloop instructions
TomTcom - for all his Ubuntu-related guides on xda
Kingzak34 - for his dualboot guide and general help/discussion
DjDill - for putting together the collection of rootbind filesystem images
(if your name should be here and I have forgotten you, please PM me...)
 

Attachments

  • Ubuntu-3.1.10-9-rootbind.zip
    4.9 MB · Views: 1,197
  • kernelblob-rootbind.img
    4.8 MB · Views: 766
  • modules-3.1.10-9.tar.gz
    1.3 MB · Views: 1,011
Last edited:

jrohwer

Senior Member
Mar 4, 2011
424
286
Benchmarks

Using "fio" (available from Ubuntu repos). All speeds in kB/s.

In the below, loopmount refers to a loopmounted image on internal storage, MicroSD refers to running linux from an ext4 partition off a class-10 MicroSD card, and rootbind refers to the method described in this thread.

Test: sequential read (64 MB)
rootbind 31906
loopmount 29088
MicroSD 15312

Test: random read (64 MB)
rootbind 5605
loopmount 11340
MicroSD 1620

Test: sequential write (8 MB)
rootbind 9694
loopmount 1373
MicroSD 3040

Test: random write (8 MB)
rootbind 4659
loopmount 1102
MicroSD 722
 
Last edited:

jrohwer

Senior Member
Mar 4, 2011
424
286
New kernel

New kernel for Linux rootbind:
  • based on kernel source from @Sni
    See here: http://xdaforums.com/showpost.php?p=43203818&postcount=569
    N.B. If you use this kernel you will have to copy new firmware for the wifi driver into /lib/firmware. Get it from Sni's post (link above).
  • USB hotplug fixed and fully working!
  • framebuffer fixed (Ctrl-Alt-F1 to F6 for console access)
  • hardware graphics acceleration now fully working with the latest Nvidia Linux-4-tegra drivers. es2gears no longer throws errors.

Two versions: one clocked to standard 1.0 GHz, the other one overclocked to 1.2GHz. Remember to extract the relevant modules to your linux root filesystem. For installation, I have provided a CWM or TWRP flashable zip, or a blob that you can flash directly with dd to the staging partition (if you don't know how to do this, use the recovery method).

I have tried at great length to overclock to higher frequencies but could not succeed. For some reason the TF just froze with a black screen after booting. I tried many combinations of voltages and frequencies. At least it's oc'ed to 1.2 and stable (in my hands), but if you are experiencing problems you can revert to the 1.0GHz or keep using the previous kernel which is oc'ed to 1.6 but USB is broken.

If anyone wants to take a stab at this you are more than welcome :)
My sources: https://github.com/jmrohwer/TF101-GNU-kernel

EDIT: New kernel 3.1.10-15 overclocked to 1.5GHz. Boots every time! Needs configuration of your overlock speeds with cpufrequtils. Read this post:
http://xdaforums.com/showpost.php?p=54031885&postcount=334
MD5SUM:
3aee8cacf9037dfc3c8ef0363780254f Ubuntu-3.1.10-15-rootbind-oc1.5.zip
 

Attachments

  • Ubuntu-3.1.10-12-rootbind-oc1.2GHz.zip
    5.3 MB · Views: 5,087
  • kernelblob-3.1.10-12-rootbind-oc1.2GHz.img
    5.1 MB · Views: 1,084
  • modules-3.1.10-12.tar.gz
    2.5 MB · Views: 1,526
  • Ubuntu-3.1.10-10-rootbind-1.0GHz.zip
    5.3 MB · Views: 1,488
  • kernelblob-3.1.10-10-rootbind-1.0GHz.img
    5.1 MB · Views: 595
  • modules-3.1.10-10.tar.gz
    2.5 MB · Views: 966
  • md5sums.txt
    414 bytes · Views: 318
  • Ubuntu-3.1.10-15-rootbind-oc1.5.zip
    5.3 MB · Views: 3,127
  • modules-3.1.10-15-gabaf62d.tar.gz
    2.6 MB · Views: 2,304
Last edited:

prog19

Senior Member
Apr 29, 2012
573
186
Seems to be great, and very very easy to dual boot, as TWTR will be always avaible to flash the kernels.

The reason I left linux behind on my TF is that team EOS has a plenty of updates and I like to keep up with the devs and the dual boot method i used overwrites the custom recovery.

Now it seems to be perfect forme.
 

smokesignals

Member
Feb 23, 2008
14
7
Forgive my ignorance, but I've googled and searched the TF101 forums to no avail; what is TWTR? With Google I only found a video of someone running what looked like regular CWM touch on a TF101...

Edit: Nevermind, I figured out that it must be referring to the TeamWin recovery, which until now I've only ever seen referred to as "TWRP".
 
Last edited:

*Detection*

Senior Member
Dec 5, 2011
10,512
2,862
Durham
Forgive my ignorance, but I've googled and searched the TF101 forums to no avail; what is TWTR? With Google I only found a video of someone running what looked like regular CWM touch on a TF101...

Edit: Nevermind, I figured out that it must be referring to the TeamWin recovery, which until now I've only ever seen referred to as "TWRP".

It is TWRP, but I guess TWTR = Team Win Touch Recovery

---------- Post added at 11:52 PM ---------- Previous post was at 11:23 PM ----------

I am root, but this command says read only file system

mkdir -p /mnt/ubuntu

Made the folder using a file manager instead

Next step
mount -o loop /sdcard/ubuntu.img /mnt/ubuntu

Fails and just gives me a list of possible options for the mount command
 
Last edited:
  • Like
Reactions: jrohwer

smokesignals

Member
Feb 23, 2008
14
7
It is TWRP, but I guess TWTR = Team Win Touch Recovery

---------- Post added at 11:52 PM ---------- Previous post was at 11:23 PM ----------

I am root, but this command says read only file system

mkdir -p /mnt/ubuntu

Made the folder using a file manager instead

Next step
mount -o loop /sdcard/ubuntu.img /mnt/ubuntu

Fails and just gives me a list of possible options for the mount command

I had that problem too. Not sure how to fix it on the tablet, I just copied the image I wanted to use (in this case the Arch Linux ARM one -- about which more later) to my Linux box, loop mounted it, tar'd up the files there, copied that to an SD card, and extracted it on the tablet.

However, about Arch Linux ARM, I learned not to bother using the image from the Tubuntu thread and instead just get the latest version from the ALARM downloads page. Use the "NVIDIA Tegra2 TrimSlice" one. The default root password is "root".

The reason not to use the one from the Tubuntu thread is that it is out of date -- Arch has merged /bin and /sbin into /usr, but the image in the Tubuntu thread predates that, and it's a huge pain to upgrade it properly.
 
  • Like
Reactions: TomTcom and jrohwer

*Detection*

Senior Member
Dec 5, 2011
10,512
2,862
Durham
I had that problem too. Not sure how to fix it on the tablet, I just copied the image I wanted to use (in this case the Arch Linux ARM one -- about which more later) to my Linux box, loop mounted it, tar'd up the files there, copied that to an SD card, and extracted it on the tablet.

However, about Arch Linux ARM, I learned not to bother using the image from the Tubuntu thread and instead just get the latest version from the ALARM downloads page. Use the "NVIDIA Tegra2 TrimSlice" one. The default root password is "root".

The reason not to use the one from the Tubuntu thread is that it is out of date -- Arch has merged /bin and /sbin into /usr, but the image in the Tubuntu thread predates that, and it's a huge pain to upgrade it properly.


Thanks for that, at least I know I'm not doing something wrong my end, I was trying the Ubuntu 12.04 netinstall from the Transformazing thread, I`ll no doubt try a few until I find one I like

I don't have a Linux box atm, but a quick fix with a wubi or VM install tomorrow and I`ll give your method a shot

Cheers
 

jrohwer

Senior Member
Mar 4, 2011
424
286
It is TWRP, but I guess TWTR = Team Win Touch Recovery

---------- Post added at 11:52 PM ---------- Previous post was at 11:23 PM ----------

I am root, but this command says read only file system

mkdir -p /mnt/ubuntu

Yes, sorry for got to add the step to remount / in rw mode. OP is updated.

Made the folder using a file manager instead

Next step
mount -o loop /sdcard/ubuntu.img /mnt/ubuntu

Fails and just gives me a list of possible options for the mount command

Most probably you are using the Android mount command. The busybox mount command has more functionality. I added the OP to explicitly call the busybox mount/umount commands (I have mine aliased by default). Indeed I checked and the Android mount command does not work for loop mount.
 

*Detection*

Senior Member
Dec 5, 2011
10,512
2,862
Durham
Yes, sorry for got to add the step to remount / in rw mode. OP is updated.



Most probably you are using the Android mount command. The busybox mount command has more functionality. I added the OP to explicitly call the busybox mount/umount commands (I have mine aliased by default). Indeed I checked and the Android mount command does not work for loop mount.

Thanks, I`ll give this another shot tonight then with the new instructions
 

vietchinh

Account currently disabled
Jun 24, 2012
206
29
GB
meettomy.site
No you just need a mountloop image which you can then mount as described in the OP, to copy the files over to /data/linuxroot.

Thanks, but i have new problem. Uh i cant execute this line: tar -xzf /sdcard/modules-3.1.10-9.tar.gz. It give's me this:Tar invalid option bla bla bla ;3 SO CLOSE TO COMPLETING T.T.
 
Last edited:

Top Liked Posts

  • There are no posts matching your filters.
  • 21
    [KERNEL/MOD] [LINUX] [Rootbind] [Native EMMC/all TF101&TF101G/fast/tested] [2-Jul-13]

    UPDATE 2013/11/08: New kernel released with USB and framebuffer fixed. See post #3.
    UPDATE 2014/05/16: New Ubuntu 14.04 filesystem. See point #2 below under Installation.
    UPDATE 2014/06/03: New kernel released with USB and framebuffer fixed, OC to 1.5 GHz. See post #3 and #326.
    UPDATE 2014/07/09: New kernel released with OC to 1.5 GHz fully working, boots every time. See post #3 and #334.

    This is a kernel/initrd mod that allows you to run Linux (Ubuntu, Debian, Arch,...) on your TF101 from the internal EMMC (/data partition in Android) without repartitioning your tab.

    Disclaimer:
    This works on my tablet and I use it daily. However, I am not responsible for any bricks or if you damage your beloved TF. YOU ARE DOING THIS AT YOUR OWN RISK!


    Features and advantages:
    1. Fast (and I mean about as fast as it's gonna get on this device). See post #2 for benchmarks.
    2. No need to repartition to get this. Previously TF101 users could run Linux on EMMC but they had to repartition with wheelie/nvflash, but it wasn't available to TF101G users (of which I'm one).
    3. Any free space on your /data partition is available to both Linux and Android. When you delete stuff on either operating system, the free space is available for both again, as they are running off the same partition. Previously, when you re-partitioned e.g. with OLiFE you had to allocate a certain space (8GB by default) for Linux, then this was not available for Android even if you're not using all of it in Linux.
    4. Way faster than loopmount, especially for disk writes.
    5. Way faster than running Linux off a MicroSD card ext4 partition (even with class 10).
    6. Dualboot is achieved just by flashing either the Android or the Linux kernel.

    So how does this work?
    The kernel/initrd is modded to take an extra parameter "bind=/path/to/linux/rootfs" on the command line. This will then bind-mound that path to the Linux root mount. It works pretty similar to the way a loop-mounted linux image is loaded and set up during boot, except that now bind-mount is used, not a loop-mount. This is possible because both Android and Linux use the ext4 filesystem, so they can actually share the same partition.

    N.B. This thread is not a guide on how to get Ubuntu running on your TF101. There are plenty of guides for that, e.g.
    Make sure to read those threads to get an idea of how this works.

    READ THESE INSTRUCTIONS CAREFULLY!

    Installation:

    1. Take a Nandroid backup, just in case something goes wrong.
    2. Get a Linux root filesystem if you don't already have one.
      See this thread for a discussion of various filesystems available for rootbind.

      Alternatively roll your own using debootstrap as described by shaola:
      http://xdaforums.com/showthread.php?t=1476835

      NEW! For a fully working Kubuntu 14.04 image (with graphics acceleration using the Nvidia drivers) see this post: http://xdaforums.com/showpost.php?p=52697775&postcount=303
      This is already an image in a tar file so it doesn't need to be mounted, so instead of the code below you can merely do the following:
      Code:
      mkdir -p /data/linuxroot
      busybox chmod 755 /data/linuxroot
      cd /data/linuxroot
      tar -xpjf /path/to/my/saved/kubuntu-14.04.tar.bz2

    3. Running Android, copy the root filesystem to a directory on your /data partition, preserving the permissions. The easiest is with the "tar" command (see below). The default install assumes that Linux lives in /data/linuxroot under Android.

      For a Linux image in a file that is used for loop-mount (assume it is in /sdcard/ubuntu.img, or edit accordingly), run the following in a terminal when running Android (make sure you are root):
      Code:
      busybox mount -o remount,rw /
      mkdir -p /data/linuxroot
      busybox chmod 755 /data/linuxroot
      mkdir -p /mnt/ubuntu
      busybox mount -o loop /sdcard/ubuntu.img /mnt/ubuntu
      cd /mnt/ubuntu
      tar -cvp * | tar -C /data/linuxroot -xp
      cd /
      busybox umount /mnt/ubuntu
      rmdir /mnt/ubuntu
      busybox mount -o remount,ro /
      (note in tar command first -c is lowercase, second -C is uppercase)

      For a Linux rootfs that lives on a separate partition (e.g. 2nd part. on MicroSD), run the following (assumes linux is in /dev/block/mmcblk1p2, otherwise edit accordingly):
      Code:
      busybox mount -o remount,rw /
      mkdir -p /data/linuxroot
      busybox chmod 755 /data/linuxroot
      mkdir -p /mnt/ubuntu
      busybox mount -t ext4 /dev/block/mmcblk1p2 /mnt/ubuntu
      cd /mnt/ubuntu
      tar -cvp * | tar -C /data/linuxroot -xp
      cd /
      busybox umount /mnt/ubuntu
      rmdir /mnt/ubuntu
      busybox mount -o remount,ro /
    4. Copy kernel modules to your rootfs. Download modules-3.1.10-9.tar.gz to your /sdcard. then:
      Code:
      cd /data/linuxroot/lib/modules
      tar -xzf /sdcard/modules-3.1.10-9.tar.gz
    5. Flash the Linux kernel. Either flash the zip from recovery or copy the kernelblob directly to the staging partition with dd (if you don't know what I'm talking about here, then use the recovery method).
    6. Reboot 'n enjoy! Remember to run "sudo depmod -a" after the first Linux boot, and reboot. Otherwise your modules won't load and wifi, etc., won't work.
    7. To re-boot into Android, simply flash the boot image/kernelblob from your Android ROM.

    Notes:
    • The kernel is compiled from Jhinta's source with a few modifications to the config - http://xdaforums.com/showthread.php?t=1683145
    • Make sure not to have a /host directory in your Linux rootfs - this interferes with the bind mount!
    • The Linux rootfs can live anywhere on your Android /data partition (the default is /data/linuxroot). If you want to change this, then you'll have to blobunpack the kernelblob-rootbind, unpack the boot image (kernelblob-rootbind.LNX) with abootimg, change the command line as desired, re-pack the boot image with abootimg, and re-pack the blob for flashing.
      The "bind" cmdline argument is the location of your Linux rootfs without the initial "/data". So if your Linux rootfs lives on /data/my/linux/path under Android, then you'd have to change the cmdline parameter to "bind=/my/linux/path".
      Make sure, however, not to put the Linux rootfs to the "internal storage" (/data/media) or any subdirectories thereof. This plays havoc with the Android media scanner when re-booting into Android and your tablet may slow down to a crawl.
    • Under Android your EMMC partitions are /dev/block/mmcblk0p1,2,3,....
      Under Linux, this is /dev/mmcblk0p1,2,3....

    Thanks to:
    lilstevie - for bringing Ubuntu to our tablet
    Jhinta - for his 3.1.10 kernel
    shaola - for his debootstrap guide
    x3maniac - for his Tubuntu installer
    transformador - for his mountloop instructions
    TomTcom - for all his Ubuntu-related guides on xda
    Kingzak34 - for his dualboot guide and general help/discussion
    DjDill - for putting together the collection of rootbind filesystem images
    (if your name should be here and I have forgotten you, please PM me...)
    14
    New Ubuntu 14.04 image for rootbind with graphics acceleration

    Hi all

    I present to you you a fully working image of Ubuntu 14.04 with working Nvidia drivers.
    This is KDE (kde-plasma-desktop) as this is what I am using. It is a minimal installation with only the basic stuff to get a working desktop - the rest you will have to install yourself. You should be able to install other desktops (lubuntu, etc.) and I see no reason why they would not work.

    Default user: tf101 (has sudo privileges)
    Password: ubuntu

    Features:
    1. Created from scratch using debootstrap (not via upgrade!). No more kernel panics!
    2. Nvidia graphics drivers working. This took quite a bit of work and requires the raring, saucy and trusty releases to be enabled in your sources.list. I attach my /etc/apt/preferences.d/xserver.pref file with the pinning details, in case anyone wants to try for themselves. This is using the X-ABI 13 drivers (from 13.04) which work well as mentioned previously.
    3. KDE graphics accelleration and desktop effects with kwin_gles. es2gears gives 300-320 fps.
    4. Zram enabled (configure in /etc/init/zramswap.conf)
    5. Touchegg (multi-touch screen gestures) installed and set up.
    6. Kernel modules for all my rootbind kernels pre-installed and set up. Works (tested) with 3.1.10-9 and 3.1.10-12 kernels. Should work with 3.1.10-10 also. Take your pick :)
    7. Time zone and locale set to South Africa (change in KDE systemsettings or with sudo dpkg-reconfigure tzdata).
    8. Convenience scripts (in /usr/local/bin):
      • wifitoggle
      • bluetoothtoggle (disconnect all BT devices before switching off, otherwise system freezes)
      • touchpadtoggle
      • touchscreentoggle
      • fixlidclose.py (loaded automatically on KDE start, switches screen and touchpad off properly when lid is closed, and reactivates when lid is opened)
    9. Key bindings (using the "Home" key next to the left Fn key in the bottom row of the dock, referring to Android shortcut keys in top row):
      • Home-F1 - wifitoggle
      • Home-F2 - bluetoothtoggle
      • Home-F3 - touchpadtoggle
      • Home-F4 - screen brightness down
      • Home-F5 - screen brightness up
      • Home-F6 - touchscreentoggle
      • Home-F9 - systemsettings
      • Lock (top row right) - multi_key (Unix compose key for making accented characters)
      • Right-Alt - Insert
      • Menu (next to Right-Alt) - Delete

    Bugs:
    Some KDE plasma widgets do not respond to mouse input. Amongst these is the KDE Network Management widget, unfortunately. Either configure your wifi from the command line using nmcli or use another network manager such as Wicd (not tested). Once your network is set up, the wifi should reconnect automatically though.

    Downloads:
    Image - https://drive.google.com/file/d/0B2pBZMfc8dgHSFdLVC1ocElUclE/edit?usp=sharing
    MD5:
    2a4d63cd4cf7f714e191e832d15abe7d kubuntu-14.04.tar.bz2

    Enjoy :)

    Screenie attached below.
    7
    New kernel

    New kernel for Linux rootbind:
    • based on kernel source from @Sni
      See here: http://xdaforums.com/showpost.php?p=43203818&postcount=569
      N.B. If you use this kernel you will have to copy new firmware for the wifi driver into /lib/firmware. Get it from Sni's post (link above).
    • USB hotplug fixed and fully working!
    • framebuffer fixed (Ctrl-Alt-F1 to F6 for console access)
    • hardware graphics acceleration now fully working with the latest Nvidia Linux-4-tegra drivers. es2gears no longer throws errors.

    Two versions: one clocked to standard 1.0 GHz, the other one overclocked to 1.2GHz. Remember to extract the relevant modules to your linux root filesystem. For installation, I have provided a CWM or TWRP flashable zip, or a blob that you can flash directly with dd to the staging partition (if you don't know how to do this, use the recovery method).

    I have tried at great length to overclock to higher frequencies but could not succeed. For some reason the TF just froze with a black screen after booting. I tried many combinations of voltages and frequencies. At least it's oc'ed to 1.2 and stable (in my hands), but if you are experiencing problems you can revert to the 1.0GHz or keep using the previous kernel which is oc'ed to 1.6 but USB is broken.

    If anyone wants to take a stab at this you are more than welcome :)
    My sources: https://github.com/jmrohwer/TF101-GNU-kernel

    EDIT: New kernel 3.1.10-15 overclocked to 1.5GHz. Boots every time! Needs configuration of your overlock speeds with cpufrequtils. Read this post:
    http://xdaforums.com/showpost.php?p=54031885&postcount=334
    MD5SUM:
    3aee8cacf9037dfc3c8ef0363780254f Ubuntu-3.1.10-15-rootbind-oc1.5.zip
    6
    Benchmarks

    Using "fio" (available from Ubuntu repos). All speeds in kB/s.

    In the below, loopmount refers to a loopmounted image on internal storage, MicroSD refers to running linux from an ext4 partition off a class-10 MicroSD card, and rootbind refers to the method described in this thread.

    Test: sequential read (64 MB)
    rootbind 31906
    loopmount 29088
    MicroSD 15312

    Test: random read (64 MB)
    rootbind 5605
    loopmount 11340
    MicroSD 1620

    Test: sequential write (8 MB)
    rootbind 9694
    loopmount 1373
    MicroSD 3040

    Test: random write (8 MB)
    rootbind 4659
    loopmount 1102
    MicroSD 722
    5
    New kernel OC 1.5 GHz - STABLE!

    I have managed to compile a stable kernel overclocked to 1.5GHz, which boots every time!
    Thanks to @MiniBlu for pointing me in the right direction. The kernel boots up at max frequency and performance cpu profile and the cpu scaling settings only kick in later during boot. This has caused the instability. The workaround has been to add a "dummy" 1.6GHz frequency which is actually scaled to 1.0GHz and thus stable and boots every time.

    N.B. You'll need new modules as well, extract to /lib/modules in your root file system.

    The only thing you will have to do is to set your maximum cpu frequency manually to 1504 MHz (or lower) using cpufrequtils. As the "maximum" setting of 1.6 GHz is actually not overclocked and won't give you increased performance :)

    Once it's booted up I have never had instabilities with 1.5 GHz.

    Downloads from post #3. The correct kernel is 3.1.10-15.

    If you want to compile your own, changes have been merged into my github:
    https://github.com/jmrohwer/TF101-GNU-kernel