ubuntu-phone team mailing list archive
-
ubuntu-phone team
-
Mailing list archive
-
Message #23013
[Development] I need help with porting ubuntu-touch to new phone
I'm building ubuntu-touch for my device after building it and installing
it with rootstock-touch-install (I've edited the script a little bit )
it stuck at bootlogo and I can't use adb (the device is offline and need
to be authenticated ) so is there anything I can do ?
I've attached the script I use to install ubuntu-phone to my device ...
PS : I've copied ubuntu.img to /data and made a symbolic link of it at
/data/system.img
the preinstalled ubuntu-touch : zesty-preinstalled-touch-armhf.tar.gz
is there anything should I attach too ?
#!/bin/sh -x
#
# Copyright (c) 2014 Canonical
#
# Author: Oliver Grawert <ogra@xxxxxxxxxxxxx>
#
# This program 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 2 of the
# License, or (at your option) any later version.
#
# This program 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 this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA
#
set -e
TARPATH=$1
SYSIMG=$2
check_prereq()
{
if [ ! $(which make_ext4fs) ] || [ ! -x $(which simg2img) ] || \
[ ! -x $(which adb) ]; then
echo "please install the android-tools-fsutils and android-tools-adb packages" && exit 1
fi
}
do_shell()
{
adb shell "$@"
}
convert_android_img()
{
if file $SYSIMG | grep -v ": Linux rev 1.0 ext4" >/dev/null; then
simg2img $SYSIMG $WORKDIR/system.img.raw
mkdir $TMPMOUNT
mount -t ext4 -o loop $WORKDIR/system.img.raw $TMPMOUNT
make_ext4fs -l 120M $WORKDIR/system.img $TMPMOUNT >/dev/null 2>&1
SYSIMAGE=$WORKDIR/system.img
else
SYSIMAGE=$SYSIMG
fi
}
check_mounts(){
MOUNTS=$(do_shell "cat /proc/mounts")
if ! grep -qs '/cache' $MOUNTS; then
do_shell "mount /cache"
fi
if ! grep -qs '/data' $MOUNTS; then
do_shell "mount /data"
fi
if ! grep -qs '/system' $MOUNTS; then
do_shell "mount /system"
fi
}
prepare_ubuntu_system()
{
do_shell "rm -f /data/ubuntu.img"
for data in system android; do
do_shell "rm -rf /data/$data-data"
done
if [ -z "$KEEP" ]; then
do_shell "rm -rf /data/user-data"
else
echo -n "keep option set, keeping user data ... "
fi
do_shell "dd if=/dev/zero of=/external_sd/ubuntu.img seek=500K bs=4096 count=0 >/dev/null 2>&1"
#do_shell "mkfs.ext2 -F /external_sd/ubuntu.img >/dev/null 2>&1"
do_shell "make_ext4fs -l 1500M /external_sd/ubuntu.img >/dev/null 2>&1"
do_shell "mkdir -p /external_sd/system"
do_shell "mount -o loop /external_sd/ubuntu.img /external_sd/system/"
# system.img is the deprecated name, but we make link to ubuntu.img
do_shell "ln -s /external_sd/ubuntu.img /external_sd/system.img"
}
cleanup()
{
mount | grep -q $TMPMOUNT 2>/dev/null && umount $TMPMOUNT
cleanup_device
rm -rf $WORKDIR
echo
}
cleanup_device()
{
[ -e $WORKDIR/device-clean ] && return
do_shell "umount /external_sd/system/ 2>/dev/null && rm -rf /external_sd/system 2>/dev/null"
do_shell "rm -f /cache/$TARBALL"
[ -e $WORKDIR ] && touch $WORKDIR/device-clean 2>/dev/null || true
}
trap cleanup 0 1 2 3 9 15
usage()
{
echo "usage: $(basename $0) <path to rootfs tarball> <path to android system.img> [options]\n
options:
-h|--help this message
-c|--custom path to customization tarball (needs to be tar.xz)
-k|--keep-userdata do not wipe user data on device
-w|--wipe-file absolute path of a file inside the image to wipe (empty)\n"
exit 1
}
SUDOARGS="$@"
while [ $# -gt 0 ]; do
case "$1" in
-h|--help)
usage
;;
-c|--custom)
[ -n "$2" ] && CUST_TARPATH=$2 shift || usage
;;
-k|--keep-userdata)
KEEP=1
;;
-w|--wipe-file)
[ -n "$2" ] && WIPE_PATH=$2 shift || usage
;;
esac
shift
done
TARBALL=$(basename $TARPATH)
if [ -z "$TARBALL" ]; then
echo "need valid rootfs tarball path"
usage
fi
TARTYPE=$(file --mime-type $TARPATH|sed 's/^.* //')
case ${TARTYPE#application\/} in
gzip|x-gzip)
;;
*)
echo "Need valid rootfs tarball gzip type"
usage
;;
esac
if [ -z "$SYSIMG" ] || \
[ "$(file --mime-type $SYSIMG|sed 's/^.* //')" != "application/octet-stream" ]; then
echo "need valid system.img path and type application/octet-stream"
usage
fi
if [ ! -z "$CUST_TARPATH" ] && \
[ "$(file --mime-type $CUST_TARPATH|sed 's/^.* //')" != "application/x-xz" ]; then
echo "Custom tarball needs to be valid path and type .tar.xz"
usage
fi
[ $(id -u) -ne 0 ] && exec sudo $0 $SUDOARGS
check_prereq
if ! adb devices | grep -q recovery; then
echo "please make sure the device is attched via USB in recovery mode"
exit 1
fi
check_mounts
WORKDIR=$(mktemp -d /tmp/rootstock-touch-install.XXXXX)
TMPMOUNT="$WORKDIR/tmpmount"
echo -n "transfering rootfs tarball ... "
adb push $TARPATH /cache/ >/dev/null 2>&1
echo "[done]"
if [ ! -z "$CUST_TARPATH" ]; then
CUST_TARBALL=$(basename $CUST_TARPATH)
echo -n "transferring custom tarball"
adb push $CUST_TARPATH /cache/ >/dev/null 2>&1
echo "[done]"
fi
echo -n "preparing system-image on device ... "
prepare_ubuntu_system
echo "[done]"
echo -n "unpacking rootfs tarball to system-image ... "
do_shell "cd /external_sd/system && zcat /cache/$TARBALL | tar xf -"
do_shell "mkdir -p /external_sd/system/android/firmware"
do_shell "mkdir -p /external_sd/system/android/persist"
do_shell "mkdir -p /external_sd/system/userdata"
do_shell "[ -e /external_sd/system/SWAP.swap ] && mv /cache/system/SWAP.swap /external_sd/SWAP.img"
for link in cache data factory firmware persist system; do
do_shell "cd /external_sd/system && ln -s /android/$link $link"
done
do_shell "cd /external_sd/system/lib && ln -s /system/lib/modules modules"
do_shell "cd /external_sd/system && ln -s /android/system/vendor vendor"
do_shell "[ -e /external_sd/system/etc/mtab ] && rm /external_sd/system/etc/mtab"
do_shell "cd /external_sd/system/etc && ln -s /proc/mounts mtab"
if [ ! -z "$WIPE_PATH" ]; then
do_shell "echo ' ' >/external_sd/system/$WIPE_PATH || true"
fi
echo "[done]"
if [ ! -z "$CUST_TARPATH" ];then
echo -n "unpacking custom tarball"
do_shell "mkdir -p /cache/system/custom"
do_shell "cd /cache && xzcat /recovery/$CUST_TARBALL | tar xf -"
echo "[done]"
fi
echo -n "adding android system image to installation ... "
convert_android_img
ANDROID_DIR="/external_sd/system/var/lib/lxc/android/"
adb push $SYSIMAGE $ANDROID_DIR >/dev/null 2>&1
echo "[done]"
echo -n "enabling Mir ... "
do_shell "touch /external_sd/system/home/phablet/.display-mir"
echo "[done]"
echo -n "cleaning up on device ... "
cleanup_device
echo "[done]"
echo "rebooting device"
echo "DONE !!!!!"
#adb reboot