日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Android源码编译过程之九鼎开发板

發布時間:2023/11/27 生活经验 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android源码编译过程之九鼎开发板 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
 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各參數的含義

make_ext4fs? [ -l <len> ] [ -j <journal size> ] [ -b <block_size> ] ? ? [ -g <blocks per group> ] [ -i <inodes> ] [ -I <inode size> ] ? ?? [ -L <label> ] [ -f ] [ -a <android mountpoint> ] ? ?? [ -z | -s ] [ -J ] ? ?? <filename> [<directory>] ------------------------------------------------------------------- -s ?就是生成ext4的S模式制作; -l? ?314572800??是分區大小; -a?root 是指這個img用于Linux系統若為-a system即表示為android系統,掛載點即是/system。使用這個參數,make_ext4fs會根據private/android_filesystem_config.h里定義好的權限來給文件夾里的所有文件重新設置權限,如果你刷機以后發現有文件權限不對,可以手工修改android_filesystem_config.h來添加權限,重新編譯make_ext4fs,也可以不使用 “-a system”參數,這樣就會使用文件的默認權限 ./rootfs_qt.img 表示在當前目錄下生成鏡像文件。 ./root 指定源路徑。 注意:解壓和生成"*.img" 1.make_ext4fs ?用來制作ext4鏡像 2.simg2img ?用來將system.img還原來ext4鏡像(通過make_ext4fs制作的ext4鏡像包含了spare數據,無法以loop方式mount) simg2img <sparse_image_file> <raw_image_file> 修改再編譯:

1. $simg2img ?system.img ?system_old.img

2. $mkdir ?system

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目錄。

6. system_new.img進行燒寫

轉載于:https://www.cnblogs.com/pokerface/p/5740162.html

總結

以上是生活随笔為你收集整理的Android源码编译过程之九鼎开发板的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。