ASUS Eee Pad Transformer/How to install Ubuntu/Ubuntu Kernels
Compiling a Custom Kernel
The instructions below were originally created by rdnetto here.
This guide is designed to be run entirely on the Transformer, and assumes a working knowledge of how to use the Linux terminal. Note that compiling the kernel on the transformer is rather slow (it takes ~15 min), and is significantly faster (albeit more complicated) on a decent desktop. It also assumes a working internet connection. I suggest you get networking first, otherwise you'll need to manually download the files instead of using git clone.
1. Install the following packages needed to compile the kernel.
sudo apt-get install build-essential libncurses5-dev libblkid-dev libblkid1 git-core cd /tmp git clone git://gitorious.org/ac100/abootimg.git cd abootimg make -j2 sudo cp abootimg /usr/bin/ cd /tmp git clone http://github.com/AndroidRoot/BlobTools.git cd BlobTools make -j2 sudo cp blobpack blobunpack /usr/bin/ cd ~
2. Download kernel source
git clone git://github.com/Jhinta/TF101-GNU-kernel
export ARCH=arm make tf101-linux_defconfig
cd to the kernel source folder and compile. You will see lots of files including one called Makefile. This loads the default options for the kernel.
5. Configure kernel options.
- Set General Setup → Cross-compiler tool prefix to a blank string (we don't need this because we're compiling on an ARM system, not a x86 desktop).
- General Setup → Automatically append version info to the version string (it's just under the cross compiler option) to avoid problems loading modules compiled with a different setup. If you don't, make sure you run
sudo rm -rf /lib/modules/18.104.22.168*immediately before
- File Systems - these add support for different file systems. e.g. ISO, CIFS, etc. When enabling these, set them to be compiled as modules (designated by a M instead of a *) wherever possible, as there is a limit on the maximum size of the kernel. Only enable what you need.
- Leave everything else alone, unless you understand what they do.
- If you make any changes here after compiling the kernel, run
make cleanbefore compiling it again.
6. Compile the kernel. The 2 tells the compiler to use 2 threads, since the Transformer has 2 cores. If you get any error messages, then you either skipped a step or enabled something you shouldn't have. Run
make instead of
make -j2 to view error output. If you succeed you can find the zImage in arch/arm/boot/zImage
7. Install the kernel modules. The wifi driver must have been injected at some point in the past for those modules to work because they depend on some closed source binaries.
sudo make modules_install sudo depmod -a
- If you want to compile the kernel on a desktop, you need to install gcc-arm-linux-gnueabi as well and manually copy the modules across. You may also want to use tmpfs to speed it up even further if you have 1+ GB of unused RAM.
- If your system becomes very unstable and prone to crashing, you're probably trying to use the wrong modules with wrong kernel. Delete the modules with
sudo rm -rf /lib/modules/$(uname -r), run
make cleanand compile your kernel again.
- You can verify your initrd is not corrupted with
gzip -t initrd.img
Flashing a New/Custom kernel
There are two ways to flash the kernel; it can be flashed either in Ubuntu or via an Update.zip file through ClockworkMod Recovery. These commands have to be run from the directory of where the zImage is. The zImage is in arch/arm/boot/zImage
Flashing the kernel from Ubuntu
wget http://forum.xda-developers.com/attachment.php?attachmentid=1036510&d=1335964806 >> 3.1.10_Kernel.zip unzip attachmentid=1036510&d=1335964806 blobunpack kernelblob abootimg -u kernelblob.LNX -k "$1" rm kernelblob blobpack kernelblob LNX kernelblob.LNX sudo dd if=blob of=/dev/mmcblk0p4 sudo reboot
Updating the kernel in an Update.zip
- This requires that you have an Update.zip in /sdcard/CWM
#Extract image cp /sdcard/CWM/Update.zip /sdcard/CWM/Update_old.zip cp /sdcard/CWM/Update.zip . #Update blob unzip Update.zip kernelblob blobunpack kernelblob abootimg -u kernelblob.LNX -k "$1" rm kernelblob blobpack kernelblob LNX kernelblob.LNX zip Update.zip kernelblob cp Update.zip /sdcard/CWM/Update.zip
- An older 3.1.10 kernel image can be found here.