supports device trees (DTB). This repo contains the frontend. The kernel with the actual hardboot patch is found here.
- ASUS TF300T tablet, or TF700T, TF201 (untested)
- PC with
adbandfastbootinstalled boot.blobandandroid-bootfiles.zip(available from releases page of this repo)- microSD or USB drive with an image of your favorite linux distribution for ARM
This loader will be installed to the tablet's boot partition. The Android kernel and initrd, which would normally be there, need to be moved to a different place.
extract the android bootfiles and upload the directory using adb as /sdcard/boot:
unzip android-bootfiles.zip adb push android-bootfiles /sdcard/boot Now you should have the following files in /sdcard/boot:
zImage-android: Kernel image for Androidinitrd-android: Ramdisk image for Androidandroid.dtbootmenu: Loader entry for this loader.
Important: The zImage and initrd files are dependent on the Android ROM you use. The ones provided in this repo are from KatKiss version #039. If you use another ROM you have to extract them from your ROMs boot.blob using blobunpack and abootimg.
In the /boot directory, where the kernels and initrds are, add your zImage (we assume here you want to use a custom kernel from the Grate poject, which includes drivers needed for our device that are not yet upstreamed).
Now, add a file called mylinux.dtboomenu with the following contents:
kernel: <name of your zImage file> initrd: <name of initrd file that comes with distro> title: <title the entry should have in the menu> cmdline: console=tty0 root=<root device> rw The root drive is the typical Linux block device path your Linux installation is on, for example /dev/mmcblk1p1 for first partition of the microSD, or /dev/sda1 for first partition of USB drive.
Complete example:
kernel: zImage-grate initrd: initrd.img title: Debian cmdline: console=tty0 root=/dev/mmcblk1p1 rw Put the tablet into fastboot mode by holding the Volume Down key while starting. Run the following to flash:
fastboot flash boot boot.blob fastboot reboot - GCC Cross-compiler targeting armv7 Linux with C++ support. In this example the target is called
arm-unknown-linux-uclibcgnueabi. Change accordingly if yours calls the target differently. - blobtools,
abootimg,adb,fastboot - everything required to compile a Linux kernel
git clone https://github.com/zagto/tf300t-dtboot-kernel cd tf300t-dtboot-kernel export ARCH=arm export CROSS_COMPILE=arm-unknown-linux-uclibcgnueabi- make tf300t_dtbootloader_defconfig make zImage -j16 git clone git://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git cd kexec-tools ./bootstrap LDFLAGS=-static ./configure --host=arm-unknown-linux-uclibcgnueabi make -j16 cd src make CXX=arm-unknown-linux-uclibcgnueabi-g++ CXXFLAGS=-static ./create-boot-blob.sh tf300t-dtboot-kernel/arch/arm/boot/zImage kexec-tools/build/sbin/kexec src/dtbootmenu git clone https://github.com/grate-driver/linux.git cd linux export ARCH=arm make tegra30-asus-tf201.dtb make tegra30-asus-tf300t.dtb make tegra30-asus-tf700t.dtb