#!/bin/sh # Copyright 2017 Attila Szollosi # # This file is part of postmarketos-android-recovery-installer. # # postmarketos-android-recovery-installer is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # postmarketos-android-recovery-installer is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with postmarketos-android-recovery-installer. If not, see . export PATH="/bin" export LD_LIBRARY_PATH="/lib" # shellcheck source=/dev/null . /install_options # taken from https://github.com/Debuffer-XDA/Gov-Tuner/blob/master/META-INF/com/google/android/update-binary # Copyright (c) 2016 - 2017 Debuffer ui_print() { echo "ui_print $1" > /proc/self/fd/"$OUTFD" echo "ui_print" > /proc/self/fd/"$OUTFD" } extract_partition_table() { case "$INSTALL_PARTITION" in "system") _INSTALL_DEVICE=$(findfs PARTLABEL="$SYSTEM_PARTLABEL") || \ # We need to resolve symlinks, to make set_subpartitions() work. _INSTALL_DEVICE=$(readlink -fn "$(awk '/^\/system/ {print $3}' /recovery.fstab)") ;; "external_sd") _INSTALL_DEVICE=$(readlink -fn "$(awk '/^\/external_sd/ {print $4}' /recovery.fstab)") ;; *) echo "No support for flashing $INSTALL_PARTITION." return 1 ;; esac if [ ! -z "$_INSTALL_DEVICE" ] then echo "install device found at $_INSTALL_DEVICE" export INSTALL_DEVICE=$_INSTALL_DEVICE else echo "Couldn't find $INSTALL_PARTITION partition." return 1 fi if [ "$ISOREC" = "true" ] then export KERNEL_PARTITION KERNEL_PARTITION=$(findfs PARTLABEL="$KERNEL_PARTLABEL") export INITFS_PARTITION INITFS_PARTITION=$(findfs PARTLABEL="$INITFS_PARTLABEL") else _BOOT_PARTITION=$(findfs PARTLABEL="boot") || \ _BOOT_PARTITION=$(awk '/^\/boot/ {print $3}' /recovery.fstab) if [ ! -z "$_BOOT_PARTITION" ] then echo "boot partition found at $_BOOT_PARTITION" export BOOT_PARTITION=$_BOOT_PARTITION else echo "Couldn't find boot partition." return 1 fi fi } partition_install_device() { for command in "mktable msdos" \ "mkpart primary ext2 2048s 100M" \ "mkpart primary 100M 100%" \ "set 1 boot on" do parted -s "$INSTALL_DEVICE" "$command" done partprobe if [ "$INSTALL_PARTITION" = "system" ] then kpartx -afs "$INSTALL_DEVICE" fi set_subpartitions } set_subpartitions() { export PMOS_BOOT PMOS_BOOT=/dev/mapper/"$(basename "$INSTALL_DEVICE")"p1 export ROOT_PARTITION ROOT_PARTITION=/dev/mapper/"$(basename "$INSTALL_DEVICE")"p2 } umount_install_partition() { if [ -n "$(awk '$1 == install_part' install_part="$INSTALL_DEVICE" /proc/mounts)" ] then umount "$INSTALL_DEVICE" else echo "$INSTALL_DEVICE is not mounted, continuing..." fi }