Android 镜像构建脚本的说明

Android 镜像构建脚本的说明

我正在获取一个用于分区 SD 卡的程序。我给出了下面的脚本:

#!/bin/sh
if [ $# -lt 2 ]; then
   echo "example usage: $0 /dev/sdc \$ANDROID_ROOT"
   exit 1
fi

DRIVE=$1
ANDROID_ROOT_DIR=$2

sudo umount ${DRIVE}*

sudo dd if=/dev/zero of=$DRIVE bs=1 count=1024
sudo sync
sudo parted $DRIVE mklabel gpt
sudo parted $DRIVE mkpart boot fat32 1MB 9MB
sudo parted $DRIVE mkpart system ext4 9MB 521MB
sudo parted $DRIVE mkpart cache ext4 521MB 1033MB
sudo parted $DRIVE mkpart userdata ext4 1033MB 2033MB
sudo parted $DRIVE mkpart media fat32 2033MB 3033MB
sudo sync

sudo mkfs.ext4 ${DRIVE}2 -L system
sudo mkfs.ext4 ${DRIVE}3 -L cache
sudo mkfs.ext4 ${DRIVE}4 -L userdata
sudo mkfs.vfat -F 32 ${DRIVE}5 -n media
sudo sync

sudo dd if=${ANDROID_ROOT_DIR}/device/ti/panda/xloader.bin of=$DRIVE bs=131072 seek=1
sudo sync
sudo dd if=${ANDROID_ROOT_DIR}/device/ti/panda/bootloader.bin of=$DRIVE bs=262144 seek=1
sudo sync
sudo dd if=${ANDROID_ROOT_DIR}/out/target/product/panda/boot.img of=${DRIVE}1
sudo sync
${ANDROID_ROOT_DIR}/out/host/linux-x86/bin/simg2img ${ANDROID_ROOT_DIR}/out/target/product/panda/system.img ${ANDROID_ROOT_DIR}/out/target/product/panda/system.ext4.img
sudo dd if=${ANDROID_ROOT_DIR}/out/target/product/panda/system.ext4.img of=${DRIVE}2
sudo sync
sudo e2label ${DRIVE}2 system
sudo sync

我知道在执行这个 .sh 文件时,内容将在 Linux 上运行。尽管我可以理解该程序,但我对一行有疑问:

 ${ANDROID_ROOT_DIR}/out/host/linux-x86/bin/simg2img ${ANDROID_ROOT_DIR}/out/target/product/panda/system.img ${ANDROID_ROOT_DIR}/out/target/product/panda/system.ext4.img

请任何人都可以解释这一行发生了什么?没有linux命令,那么如何才能运行不出错呢?

还有一个疑问是:

此代码parted DRIVE为 5 个分区:引导、系统、缓存、用户数据和媒体。但为什么引导没有创建呢?也就是说,{DRIVE}1是不是设置知道了?那么全部存储在哪里呢xloader.bin, bootloader.bin and boot.img

答案1

此行指示运行脚本的 shell 启动simg2img位于目录中的名为 的二进制文件,并${ANDROID_ROOT_DIR}/out/host/linux-x86/bin/为它提供两个参数和。${ANDROID_ROOT_DIR}/out/target/product/panda/system.img${ANDROID_ROOT_DIR}/out/target/product/panda/system.ext4.img

事实上,您的脚本几乎每一行都与此类似,唯一的区别是sudo启动了一个二进制文件。

答案2

命令是simg2img。其余的是可执行文件的路径。

相关内容