[Eee Pad Transformer Q&A, Help & Troubleshooting] shaola:
This is a guide for installing and running natively any linux distribution on tf101 devices with sbk2 bootloader, but with some tweeks it would work also in tfp devices.

What is needed? you will need a rooted device with cwm recovery installed microsd for purelinux and a good microsd is recommended for one of the pseudo-dualboot options.

This guide is also prepared to execute all the commands in a computer running linux and with adb prepared to work, but you can also do it in windows, just google a bit for abootimg, blobpack and adb.

The binarys provided are precompiled for x86 system.

I am going to use as example ubuntu but you can install any linux distibution making some tweaks that i am not going to explain in this thread because i already opened another one explaining this.

DISCLAIMER: This is as safe as flashing custom roms (even a little bit less) you will always have a risk to brick your devices, I have a sbk1 device and in all my tests i haven't brick my device but i have the option of use nvflash so use it at your own risk

There are two basic options, running purelinux and pseudo-dualboot, and this last one has different variants.

Purelinux

YES: you will have the option to go to stock with cwm recovery

This will install ubuntu in the internal ssd in the data partition wich in tf101 is /dev/block/mmcblk0p7

With this method you will lose all the data in your android rom so make backups if necesary.

First of all we have to prepare the boot.img with the kernel and initrd, for that we will need abootimg, and a kernel already compiled, you either can compile your own kernel following lilsteive's, wiki instructions or use the one in OLIFE script. The initrd needed it's a bit diferent from OLIFE's one so i will attach the files needed at the end of this post.

We have kernel image: 2636-zImage

We have initd: initrd.img

and we need a boot.cfg file with this inside:

bootsize = 0x800000
pagesize = 0x800
kerneladdr = 0x10008000
ramdiskaddr = 0x11000000
secondaddr = 0x10f00000
tagsaddr = 0x10000100
name =
cmdline = nvmem=128M@384M mem=1024M@0M vmalloc=128M gpt video=tegrafb console=tty0 usbcore.oldscheme_first=1 lp0_vec=8192@0x1fbed000 root=/dev/mmcblk0p7 ro quiet splash

Now we can build boot.img with abootimg with this command.

./abootimg-i686 --create boot.img -f boot.cfg -k 2636-zImage -r initrd.img

Now we have created boot.img wich is ready to blobpack. It's VERY important to blobpack it to LNX partition to not overwrite cwm recovery.

./blobpack kernelblob LNX boot.img

Now we have kernelblob file and ubuntu.img. This is al we need to flash our device, but we can use a zip file suitable for cwm to flash the kernelblob. I will explain later in the pseudo-dualboot options.

So now we place those files in a microsdcard and we reboot into cwm.

Once in there we have to get a shell trough adb

In some version of cwm you cannot see microsd but you see the sdcard, in that case you will have to manually mount the microsd.

I don't remember right now if in cwm shell you are already root or not, but if not just su to gain permissions.

Now this is the most risky part we have to dd the kernel blob to the correct partition, in this case is /dev/block/mmcblk0p4. As i said before we can flash the kernel blob also through a zip file.

assuming we are in the folder where both files are:

dd if=kernelblob of=/dev/block/mmcblk0p4

and now we flash ubuntu.img over data partition, but we have to be sure is unmounted, depending wich version of cwm recovery you may need to do it manually

the command mount will show you if is mounted or not and if it is, umount it

umount /dev/block/mmcblkop7

and then dd

dd if=ubuntu.img of=/dev/block/mmcblk0p7

This will take some time, so be patient.

And that's it, just reboot and go through oem instalation procedure and you have it.

To go back to android you will only need to boot into cwm wipe everything to avoid problems reboot again into cwm and flash any rom wanted.

With the last cwm version i had some trouble accesing to sdcard or microsd so i needed to delete a symbolik link (/sdcard was a symbolik link to /media/data and i don't know why) and create /sdcard folder, mount /dev/block/mmcblk0p7 over sdcard create a microsd folder and mount microsd manually over that folder.

Pseudo-dualboot

We have two options here, we can install over a microsdcard or put the image file in the internal sdcard.

If you have a good 10 class microsd for me that's the best option if not, it will be much slower than the other option.

Pseudo-dualboot over microsd

The process here is almost the same than in pure linux, the diference is only that in the boot.cfg file rootfs parameter will be diferent partition:

bootsize = 0x800000
pagesize = 0x800
kerneladdr = 0x10008000
ramdiskaddr = 0x11000000
secondaddr = 0x10f00000
tagsaddr = 0x10000100
name =
cmdline = nvmem=128M@384M mem=1024M@0M vmalloc=128M gpt video=tegrafb console=tty0 usbcore.oldscheme_first=1 lp0_vec=8192@0x1fbed000 root=/dev/mmcblk1p1 ro quiet splash

instead of /dev/mmcblk0p7 (wich is data partition of the internal sdcard) it will be /dev/mmcblk1p1 wich is the microsdcard)

and instead of dd-ing ubuntu.img over internal sdcard we will dd to the microsd, we can do this also in cwm recovery or in a computer with sdcard reader.

As i think it's less risky to dd things in your computer instead in cwm and you will need an ubuntu.zip and android.zip to change your operating system flashing the kernel trough cwm i've attached Ubuntu.zip to do that. It's already prepared for microsd instalation.

If you compile the latest kernel (wich have some patches like the sound working) or you want to use it to purelinux instalation just do all the abootimg and blobpack proces and open ubuntu.zip and delete kernelblob and add your own one.

You will also need an android.zip file with the android kernel you prefer to choose again android system to boot.

I think it is aslo posible to do this with a pendrive is you have a dock, but i haven't tested it and i don't know if the kernel reads the usb devices soon enough to mount rootfs.

If you want to try, just boot linux, see wich device in /dev/ is asigned to the usb and place the correct device in root=/dev/XXXX in the boot.cfg

Pseudo-dualboot with loopmounted image placed in the internalsd

Just place ubuntu.img in the internal sdcard and flash ubuntu-mountloop.zip to boot into ubuntu and flash android.zip to boot into android.

There still are a couple of fixes to do, but i have no time right now and i am not using this configuration because i have sbk1 device so i won't be able to test and develop this but i will be glad to answer the questions i am able to.

I've also added the latest kernel and modules compiled from git but i haven't test them.

abootimg, blobpack and blobunpack files:

http://dl.dropbox.com/u/60048492/transformer/blobutils-abootimg.zip

ubuntu asus kernel (the OLIFE one, the git kernel has some fixes as sound enabling), initrd and boot.cfg

http://dl.dropbox.com/u/60048492/transformer/kernel-initrd-boot.cfg.zip

Unbutu-sdcard.zip (with kernelblob prepared for microsd installation)

http://dl.dropbox.com/u/60048492/transformer/Ubuntu-sdcard.zip

Android.zip (with revolver 3.1 default kernel)

http://dl.dropbox.com/u/60048492/transformer/Android.zip

Ubuntu-mountloop.zip for pseudo-dual boot with ubuntu.img placed in the internal sdcard

http://dl.dropbox.com/u/60048492/transformer/Ubuntu-mountloop.zip

Latest git kernel and modules precompiled

http://dl.dropbox.com/u/60048492/transformer/kernel-and-modules-from-git.zip

Thanks to rdnetto, Jhinta and of course lilstevie