1 build_kernel() 2 { 3 # 進入源碼頂層目錄 4 cd ${BS_DIR_KERNEL} || return 1 5 # 編譯配置文件 6 make ${BS_CONFIG_KERNEL} ARCH=arm CROSS_COMPILE=${BS_CROSS_TOOLCHAIN_KERNEL} || return 1 7 # 編譯內核uImage(arm架構、交叉編譯工具) 8 make -j${threads} ARCH=arm CROSS_COMPILE=${BS_CROSS_TOOLCHAIN_KERNEL} uImage || return 1 9 # 拷貝 uImage 到輸出文件夾 10 cp -v ${BS_DIR_KERNEL}/arch/arm/boot/uImage ${BS_DIR_RELEASE} 11 12 echo "^_^ kernel path: ${BS_DIR_RELEASE}/uImage" 13 14 # 進入源碼頂層目錄 15 cd ${BS_DIR_TOP} || return 1 16 echo 'boot.img ->' ${BS_DIR_RELEASE} 17 # Make boot.img with ext4 format, 64MB 18 # 拷貝uImage到boot目錄下 19 cp -v ${BS_DIR_RELEASE}/uImage ${BS_DIR_TARGET}/boot 20 # 使用mkuserimg.sh編譯boot下文件爲boot.img 21 mkuserimg.sh -s ${BS_DIR_TARGET}/boot ${BS_DIR_TARGET}/boot.img ext4 boot 67108864 22 # 將輸出的boot.img拷貝到輸出文件夾 23 cp -av ${BS_DIR_TARGET}/boot.img ${BS_DIR_RELEASE} || return 1; 24 25 return 0 26 } 27 28 mk腳本以內核編譯及boot.img製做
1 #!/bin/bash -x 2 # 3 # To call this script, make sure make_ext4fs is somewhere in PATH 4 # 打印信息 5 function usage() { 6 cat<<EOT 7 Usage: 8 mkuserimg.sh [-s] SRC_DIR OUTPUT_FILE EXT_VARIANT MOUNT_POINT SIZE [FILE_CONTEXTS] 9 EOT 10 } 11 12 echo "in mkuserimg.sh PATH=$PATH" 13 14 ENABLE_SPARSE_IMAGE= 15 if [ "$1" = "-s" ]; then 16 ENABLE_SPARSE_IMAGE="-s" 17 shift 18 fi 19 # 判斷參數長度 去除-s 5個或6個(可選參數) 20 if [ $# -ne 5 -a $# -ne 6 ]; then 21 usage 22 exit 1 23 fi 24 # 源碼樹不存在容錯 25 SRC_DIR=$1 26 if [ ! -d $SRC_DIR ]; then 27 echo "Can not find directory $SRC_DIR!" 28 exit 2 29 fi 30 # 參數賦值 31 OUTPUT_FILE=$2 32 EXT_VARIANT=$3 33 MOUNT_POINT=$4 34 SIZE=$5 35 FC=$6 36 # 擴展類型僅支持ext4,其他則打印提示 37 case $EXT_VARIANT in 38 ext4) ;; 39 *) echo "Only ext4 is supported!"; exit 3 ;; 40 esac 41 # 掛載點長度爲0容錯 42 if [ -z $MOUNT_POINT ]; then 43 echo "Mount point is required" 44 exit 2 45 fi 46 # 文件系統長度爲0容錯 47 if [ -z $SIZE ]; then 48 echo "Need size of filesystem" 49 exit 2 50 fi 51 # 可選參數非零則賦值 52 if [ -n "$FC" ]; then 53 FCOPT="-S $FC" 54 fi 55 # 編譯腳本命令 56 MAKE_EXT4FS_CMD="make_ext4fs $ENABLE_SPARSE_IMAGE $FCOPT -l $SIZE -a $MOUNT_POINT $OUTPUT_FILE $SRC_DIR" 57 echo $MAKE_EXT4FS_CMD 58 $MAKE_EXT4FS_CMD
# 最後執行的命令代碼不爲0,則執行異常 59 if [ $? -ne 0 ]; then 60 exit 4 61 fi
mkuserimg.sh腳本之打包
make_ext4fs各參數的含義node
1. $simg2img system.img system_old.imgandroid
2. $mkdir systembash
3. mount -t ext4 -o loop system_old.img system架構
4. 修改system目錄下的文件工具
5. $./make_ext4fs -s -l 512M -a system system_new.img system #512M表分區大小 第一個system表示掛載點爲/system, 第二個system表示system目錄。oop
6. system_new.img進行燒寫ui