close

Android Bionic Kernel Header Generator
 


Android Bionic Kernel Header Generator 位於 android project "bionic/libc/kernel/tools/generate_uapi_headers.sh" 路徑下. 它的內容如下. Bionic 在 Kitkat/Lolipop/Marshmallow 內容可能差異很大, 但 generator 應該都是在這個資料夾下. Bionic 所需要的 kernel header 由此產生. 
 

https://android.googlesource.com/platform/bionic.git

https://android.googlesource.com/platform/bionic/+/master/libc/kernel/tools/generate_uapi_headers.sh

 

...
set -e

TMPDIR=""
ANDROID_DIR=""
KERNEL_VERSION="android-3.10"
KERNEL_DIR=""
KERNEL_DOWNLOAD=0
ARCH_LIST=("arm" "arm64" "mips" "x86")
ANDROID_KERNEL_DIR="external/kernel-headers/original"
SKIP_GENERATION=0
VERIFY_HEADERS_ONLY=0
...

 

Android Kernel
 

https://android.googlesource.com/kernel/common/

 

android-3.10
android-3.10.y
android-3.14
android-3.18
android-3.4
android-4.1
android-4.4
android-4.4.y
android-trusty-3.10
android-trusty-3.18
android-trusty-4.4
...

 

git clone https://android.googlesource.com/kernel/common/android-4.4

 

當我們 Porting Android ...
 

以 JUNO LCR Lollipop 為例, 假如我們選用 kernel-4.4, 則 JUNO BoardConfig.mk 內容如下: 
 

# vi device/linaro/juno/BoardConfig.mk

 

...
TARGET_KERNEL_VERSION := 4.4
...

 

git clone https://android.googlesource.com/kernel/common/android-4.4

 

為了匹配起見, 以上述為例, 必須修改這 Android Bionic Kernel Header Generator: 
 

https://github.com/android/platform_bionic/blob/master/libc/kernel/tools/generate_uapi_headers.sh

 

...
set -eE

TMPDIR=""
ANDROID_DIR=""
KERNEL_VERSION="android-4.4"
KERNEL_DIR=""
KERNEL_DOWNLOAD=0
ARCH_LIST=("arm" "arm64" "mips" "x86")
ANDROID_KERNEL_DIR="external/kernel-headers/original"
SKIP_GENERATION=0
VERIFY_HEADERS_ONLY=0
...

 

把上述 Post 至 Blog 上是為了避免忘記這些東西. 我差一點兒找不到這個 key words "Android Bionic Kernel Header Generator", 差一點兒找不到 Bionic 當初修改了甚麼. 
 

 

gray-dot.png

 

 

Script for Building LOLLIPOP-SEATTLE ( mk-selinuxtarballs.sh )
 

#!/bin/bash
# Author+=amit.pundir@linaro.org

#set -e

CWD=`pwd`
if [ -d android ] ; then
    cd android
fi

#export ARCH=arm64
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export PATH=/usr/lib/jvm/java-7-openjdk-amd64/bin:/usr/lib/jvm/java-7-openjdk-amd64/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/opt/CodeSourcery/bin:/home/root/android-ndk-r10d:/opt/gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu/bin:/root/android-sdk-linux/tools:/home/root/bin:/root/android-sdk-linux/platform-tools:/root/android-sdk-linux/build-tools
export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib:.


export MANIFEST_REPO=`echo git://android.git.linaro.org/platform/manifest.git | sed 's/\/\/.*-bot@/\/\/'"${LINARO_ANDROID_ACCESS_ID}"'@/'`
export LOCAL_MANIFEST=`echo git://android.git.linaro.org/platform/manifest.git | sed 's/\/\/.*-bot@/\/\/'"${LINARO_ANDROID_ACCESS_ID}"'@/'`
export MANIFEST_BRANCH=android-5.1.1_r24
export LOCAL_MANIFEST_BRANCH=linaro-lollipop
export MANIFEST_FILENAME=default.xml
export TARGET_PRODUCT=juno
#export PATCHSETS="LOLLIPOP-STABLE-PATCHSET LOLLIPOP-CHROME-PATCHSET"
export PATCHSETS="juno-master-patches juno-m-workarounds LOLLIPOP-STABLE-PATCHSET LOLLIPOP-CHROME-PATCHSET MARSHMALLOW-RLCR-PATCHSET"
export LUNCH=juno-userdebug
export TARGET_SIMULATOR=false
export BUILD_TINY_ANDROID=
export CPUS=`grep -c processor /proc/cpuinfo`
export INCLUDE_PERF=
export TARGET_BUILD_VARIANT=userdebug
export BUILD_FS_IMAGE=1
export DEBUG_NO_STRICT_ALIASING=
export DEBUG_NO_STDCXX11=
export TOOLCHAIN_TRIPLET=
#export ANDROID_64=
export WITH_HOST_DALVIK=true
#export USE_LINARO_TOOLCHAIN=
export TARGET_TOOLS_PREFIX=


make -C kernel/linaro/phoenix ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- distclean
make -C kernel/linaro/wily ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- distclean
make -C kernel/linaro/armlt ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- distclean
rm -rf device/linaro/juno/kernel out/target/product/juno/kernel out/target/product/juno/kernel out/target/product/juno/obj/kernel out/target/product/juno/boot/kernel

mkdir -p out/target/product/juno/obj/kernel/arch/arm64/boot/
mkdir -p out/target/product/juno/boot/
/bin/cp amd-overdrive.dtb out/target/product/juno/obj/kernel/arch/arm64/boot/
/bin/cp amd-overdrive.dtb out/target/product/juno/boot/


#################
mkdir -p out/target/product/juno/system
mkdir -p out/target/product/juno/system/lib
mkdir -p out/target/product/juno/system/lib/egl
mkdir -p out/target/product/juno/system/lib64
mkdir -p out/target/product/juno/system/lib64/egl
/bin/cp my_vendor/arm/mali-t62x_r6p0-02rel0_android-5.1/lib/egl/lib*.so out/target/product/juno/system/lib/egl/
/bin/cp my_vendor/arm/mali-t62x_r6p0-02rel0_android-5.1/lib64/egl/lib*.so out/target/product/juno/system/lib64/egl/


# init=/init rw

echo "fs0:" > out/target/product/juno/boot/startup.nsh
echo -n "kernel initrd=ramdisk.img console=ttyAMA0,115200 no_console_suspend=1 video=radeondrmfb:dev=hdmi,bpp=16 selinux=0 androidboot.hardware=juno" >> out/target/product/juno/boot/startup.nsh

#echo -n "kernel initrd=ramdisk.img console=ttyAMA0,115200 radeon.dpm=1 radeon.agpmode=-1 video=radeondrmfb:dev=hdmi,bpp=32 selinux=0 androidboot.hardware=juno" >> out/target/product/juno/boot/startup.nsh
#echo -n "kernel dtb=amd-overdrive.dtb initrd=ramdisk.img console=ttyAMA0,115200 selinux=0 androidboot.hardware=juno" >> out/target/product/juno/boot/startup.nsh


#[ -f kernel/linaro/wily/arch/arm64/boot/Image ] && cp kernel/linaro/wily/arch/arm64/boot/Image out/target/product/juno/boot/kernel
#rm -rf out/target/product/juno/kernel
#ln -s kernel/linaro/wily/arch/arm64/boot/Image out/target/product/juno/kernel


# build the code
source build/envsetup.sh
lunch ${LUNCH}
#time make -j${CPUS} showcommands selinuxtarballs 2>&1 | tee build_selinuxtarballs.log
time make showcommands selinuxtarballs 2>&1 | tee build_selinuxtarballs.log
#time make -j${CPUS} showcommands droidcore 2>&1 | tee build_selinuxtarballs.log
cd $CWD


unset INCLUDE_PERF
unset DEBUG_NO_STRICT_ALIASING
unset DEBUG_NO_STDCXX11
unset TOOLCHAIN_TRIPLET
unset ANDROID_64
unset WITH_HOST_DALVIK
unset USE_LINARO_TOOLCHAIN
unset TARGET_TOOLS_PREFIX


 

 

 

z.png
Email: jasonc@mail2000.com.tw

 

 

 

 

arrow
arrow
    文章標籤
    Android Bionic
    全站熱搜
    創作者介紹
    創作者 Lexra 的頭像
    Lexra

    Lexra Pixnet

    Lexra 發表在 痞客邦 留言(0) 人氣()