Created
March 2, 2019 08:50
-
-
Save CvH/d49c9e3d54c5cb563e38420236a3d7a4 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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