Explicações de um script de construção de imagem do Android

0

Eu estava recebendo um programa para particionar o cartão SD.Eu dei esse script abaixo:

#!/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

Eu sei que, ao executar este arquivo .sh, o conteúdo será executado no linux. Mesmo que eu possa entender o programa, estou tendo dúvidas em uma linha:

 ${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

Por favor, alguém pode explicar o que acontece nesta linha? não há comando linux, então como ele pode rodar sem erros?

E outra dúvida é:

Este código parted DRIVE como 5 partição como inicialização, sistema, cache, userdata e mídia. Mas por que o boot não é criado? isto é, {DRIVE}1 não está definido, sabe? Então, onde será xloader.bin, bootloader.bin and boot.img todo armazenado?

    
por Dhasneem 13.02.2013 / 07:47

2 respostas

2

Esta linha instrui o shell, que executa o script, para iniciar um binário chamado simg2img , localizado no diretório ${ANDROID_ROOT_DIR}/out/host/linux-x86/bin/ , fornecendo dois parâmetros, ${ANDROID_ROOT_DIR}/out/target/product/panda/system.img e ${ANDROID_ROOT_DIR}/out/target/product/panda/system.ext4.img .

Na verdade, quase todas as linhas do seu script são semelhantes a essa, a única diferença é que um binário sudo é iniciado.

    
por 13.02.2013 / 07:56
0

O comando é simg2img . O resto é o caminho para o executável.

    
por 13.02.2013 / 07:56