Please remember to add a category to the bottom of each page that you create.
See categories help for further details, but most will probably be [[Category:HTC ModelName]].

ASUS Eee Pad Transformer/How to install Ubuntu/Ubuntu Kernels

From XDA-Developers
Jump to: navigation, search

Compiling a Custom Kernel

The kernel included with OLiFE is the Linux 2.6 kernel. To use the latest kernel you will have to compile your own. Jhita's latest kernel source can be found here on Github.

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

3. Compile

export ARCH=arm
make tf101-linux_defconfig

4. 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.

make menuconfig

5. Configure kernel options.

  1. 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).
  2. 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/2.6.36.4* immediately before make modules_install.
  3. 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.
  4. Leave everything else alone, unless you understand what they do.
  5. If you make any changes here after compiling the kernel, run make clean before 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

make -j2

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

*Notes

  1. 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.
  2. 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 clean and compile your kernel again.
  3. 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
  • Notes
    • An older 3.1.10 kernel image can be found here.