Android/Kernel

From OLPC
Jump to: navigation, search

How to build the XO-4 Android kernel.

Ingredients

  • a well connected development system,
  • an XO-4 laptop,
  • a USB ethernet adapter or USB drive,
  • a serial adapter.

Method

  • prepare for kernel building using the instructions in Kernel, and checkout the arm-3.5-android branch for Android 5.0, or the arm-3.5-android-4.3 branch for Android 4.x,
  • use the arch/arm/configs/xo_4_android_defconfig file as .config,
  • install the kernel by copying via HTTP or USB drive:
ok copy http:\\builder\vmlinuz int:\kernel
ok copy u:\vmlinuz int:\kernel

Replace kernel in an old build

Build kernel following instructions in Kernel. As a result, include/linux/autoconf.h and include/config/auto.conf are generated. Then start to build wifi and bt driver separately.

cd /tmp
git clone git://dev.laptop.org/users/ben/android_vendor_marvell_generic -b android-4.3.1-xo4
cd android_vendor_marvell_generic/sd8787
export ARCH=arm
export KDR=/home/xxxxxxx/android/src/olpc_4.3.1/kernel-source
make wlan bt

Change script in mkzd.sh

replace kernel in build;

 sudo cp ../../../../$out_folder/kernel boot/ ===> sudo cp /home/xxxxxxx/android/src/olpc_4.3.1/kernel-source/arch/arm/boot/zImage boot/

replace driver in build;

 mkdir system                                                                                              
 sudo mount $L3 system 
 sudo cp /tmp/android_vendor_marvell_generic/sd8787/wlan_src/mlan.ko /system/lib/modules/mlan.ko
 sudo cp /tmp/android_vendor_marvell_generic/sd8787/wlan_src/sd8xxx.ko /system/lib/modules/sd8787.ko
 sudo cp /tmp/android_vendor_marvell_generic/sd8787/mbtc_src/mbt8xxx.ko /system/lib/modules/mbt8xxx.ko
 sudo cp /home/xxxxxxx/android/src/olpc_4.3.1/kernel-source/drivers/net/wireless/libertas/libertas_sdio.ko /system/lib/modules/libertas_sdio.ko
 sudo cp /home/xxxxxxx/android/src/olpc_4.3.1/kernel-source/drivers/net/wireless/libertas/libertas_sdio.ko /system/lib/modules/libertas.ko
 sudo umount $L3
 sudo rm -rf system

run mkzd.sh

 ./mkzd.sh

See Also