#!/bin/sh # Copyright (C) 2012-2014 OpenWrt.org move_config() { local cmdline uuid disk dev if read cmdline < /proc/cmdline; then case "$cmdline" in *block2mtd=*) disk="${cmdline##*block2mtd=}" disk="${disk%%,*}" ;; *root=*) disk="${cmdline##*root=}" disk="${disk%% *}" ;; esac case "$disk" in PARTUUID=[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]-02) uuid="${cmdline#PARTUUID=}" uuid="${uuid%-02}" for disk in /dev/sd[a-z]; do set -- $(dd if=$disk bs=1 skip=440 count=4 2>/dev/null | hexdump -v -e '4/1 "%02x "') if [ "$4$3$2$1" = "$uuid" ]; then dev="${disk}1" break fi done ;; /dev/*) dev="${disk%[0-9]}1" ;; esac fi if [ -n "$dev" ]; then mount -t ext4 -o rw,noatime "$dev" /mnt mv -f /mnt/sysupgrade.tgz / umount /mnt fi } boot_hook_add preinit_mount_root move_config