Skip to content

Instantly share code, notes, and snippets.

@CvH
Created March 2, 2019 08:50
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save CvH/d49c9e3d54c5cb563e38420236a3d7a4 to your computer and use it in GitHub Desktop.
#!/bin/sh
################################################################################
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2016 kszaq (kszaquitto (at) gmail.com)
#
# LibreELEC 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.
#
# LibreELEC 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 LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
IMAGE_KERNEL="/flash/kernel.img"
IMAGE_SYSTEM="/flash/SYSTEM"
IMAGE_DTB="/flash/dtb.img"
BACKUP_DATE=$(date +%Y%m%d%H%M%S)
install_to_nand() {
if [ -f $IMAGE_KERNEL -a -f $IMAGE_SYSTEM ] ; then
if grep -q /dev/system /proc/mounts ; then
echo "Unmounting SYSTEM partiton."
umount -f /dev/system
fi
mkdir -p /tmp/system
mount -o rw,remount /flash
if [ -e /dev/dtb ] ; then
echo -n "Backing up device tree..."
dd if=/dev/dtb of="/flash/dtb$BACKUP_DATE.img" bs=256k conv=fsync 2> /dev/null
echo "done."
fi
if [ -e /dev/recovery ] ; then
echo -n "Backing up recovery partition..."
dd if=/dev/recovery of="/flash/recovery$BACKUP_DATE.img" bs=64k conv=fsync 2> /dev/null
echo "done."
fi
echo -n "Formatting SYSTEM partition..."
mke2fs -F -q -t ext4 -m 0 /dev/system || exit 1
e2fsck -n /dev/system || exit 1
echo "done."
echo -n "Writing kernel image..."
dd if="$IMAGE_KERNEL" of=/dev/boot bs=1M 2> /dev/null
echo "done."
echo -n "Copying SYSTEM files..."
mount -o rw /dev/system /tmp/system
cp $IMAGE_SYSTEM /tmp/system && sync
echo "done."
echo -n "Copying remote.conf..."
cp -PR /flash/remote*.conf /tmp/system
echo "done."
umount /tmp/system
if [ -f $IMAGE_DTB ] ; then
echo -n "Writing device tree image..."
dd if=/dev/zero of=/dev/dtb bs=256k count=1 2> /dev/null
dd if="$IMAGE_DTB" of=/dev/dtb bs=256k 2> /dev/null
echo "done."
fi
echo -n "Formatting DATA partition..."
mke2fs -F -q -t ext4 -m 0 /dev/data > /dev/null
e2fsck -n /dev/data &> /dev/null
echo "done."
read -p "Do you want to copy your user data to internal data partition? [Y/n] " choice
case "$choice" in
[nN]*)
;;
*)
echo -n "Stopping Kodi..."
systemctl stop kodi
echo "done."
echo "Copying user data..."
mkdir -p /tmp/data
mount -o rw /dev/data /tmp/data
cp -pPRv /storage/. /tmp/data
;;
esac
echo "All done!"
echo "WARNING: If your internal memory layout is different from standard Amlogic, you have to perform this operation again!"
echo "Your system will continue booting from SD/USB until you remove it."
echo ""
read -p "Would you like to reboot now [y/N]? " choice
case "$choice" in
[yY]*) reboot ;;
esac
else
echo "No LE image found on /flash! Exiting..."
fi
}
if [ ! -e /dev/boot -o ! -e /dev/system -o ! -e /dev/data -o ! -e /dev/dtb ]; then
echo "One of BOOT, SYTEM, DATA or DTB partitions is missing."
echo "Make sure that you are using a correct device tree and a device with internal memory!"
exit 0
fi
echo "This script will erase BOOT, SYSTEM, DATA and DTB on your device"
echo "and install LE that you booted from SD card/USB drive."
echo ""
echo "It will create a backup of device tree and recovery partition on your boot media."
echo ""
echo "The script does not have any safeguards!"
echo ""
read -p "Type \"yes\" if you know what you are doing or anything else to exit: " choice
case "$choice" in
yes) install_to_nand ;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment