diff options
author | madmonkey <madfkingmonkey@gmail.com> | 2017-10-08 12:28:11 +0300 |
---|---|---|
committer | madmonkey <madfkingmonkey@gmail.com> | 2017-10-08 14:54:27 +0300 |
commit | 80a90c18a52f121db7d1945eed3d1ac46629789b (patch) | |
tree | d43598b9b35f5171cb8f1e134c0899211ef6cf37 /mod | |
parent | 78df6b1eee9d42b7e2244e422587a0726ba9d594 (diff) |
second mount for squashfs
Diffstat (limited to 'mod')
-rw-r--r-- | mod/hakchi/rootfs/etc/preinit.d/b0010_functions | 33 | ||||
-rw-r--r-- | mod/hakchi/rootfs/etc/preinit.d/b0020_backup | 30 |
2 files changed, 54 insertions, 9 deletions
diff --git a/mod/hakchi/rootfs/etc/preinit.d/b0010_functions b/mod/hakchi/rootfs/etc/preinit.d/b0010_functions index 432e23b..8480541 100644 --- a/mod/hakchi/rootfs/etc/preinit.d/b0010_functions +++ b/mod/hakchi/rootfs/etc/preinit.d/b0010_functions @@ -1,11 +1,30 @@ +squashDevice(){ + echo "$(mount | grep -F squashfs | head -n1 | awk '{print $1;}')" +} + +umountSquash(){ + mountpoint -q "$squashfs" && umount "$squashfs" +} + +mountSquash(){ + [ -d "$(dirname "$squashfs")" ] || return 1 + umountSquash + mkdir -p "$squashfs" + local sdev="$(squashDevice)" + [ -z "$sdev" ] && return 1 + mount -o ro,noatime "$sdev" "$squashfs" +} + mount_base(){ mount -t tmpfs -o mode=0755,nosuid,nodev tmpfs "$mountpoint/var" mkdir -p "$mountpoint/var/lib" mount -o defaults,nosuid,nodev,noatime /dev/nandc "$mountpoint/var/lib" + mountSquash } umount_base(){ sync + umountSquash umount "$mountpoint/var/lib" umount "$mountpoint/var" } @@ -39,8 +58,6 @@ mod_repair_modules(){ } remount_root(){ - [ -z "$(mount | grep -F loop)" ] || return 1 - local tmpmount="/var" mkdir -p "$tmpmount" mount --move "$mountpoint/var" "$tmpmount" @@ -54,12 +71,16 @@ remount_root(){ } load_firmware(){ + [ -z "$(mount | grep -F loop0)" ] || return 1 + [ -d "$firmwarepath" ] || return 0 local firmware="$(find "$firmwarepath" -type f -name "*.hsqs" | sort | head -n 1)" [ -f "$firmware" ] || return 0 mod_repair_modules - remount_root "$firmware" || return 0 + umountSquash + remount_root "$firmware" cryptsetup close root-crypt + mountSquash mod_repair_etc if [ ! -d "$mountpoint/lib/modules/$(uname -r)" ]; then if [ -d "$rootfs/lib/modules/$(uname -r)" ]; then @@ -110,7 +131,11 @@ copy_mask(){ } restore(){ - copy "$mountpoint$1" "$rootfs$1" + if mountpoint -q "$squashfs" && [ -e "$squashfs$1" ]; then + copy "$squashfs$1" "$rootfs$1" + else + copy "$mountpoint$1" "$rootfs$1" + fi } mount_bind(){ diff --git a/mod/hakchi/rootfs/etc/preinit.d/b0020_backup b/mod/hakchi/rootfs/etc/preinit.d/b0020_backup index e10c2dc..65e99c9 100644 --- a/mod/hakchi/rootfs/etc/preinit.d/b0020_backup +++ b/mod/hakchi/rootfs/etc/preinit.d/b0020_backup @@ -5,14 +5,18 @@ backup_one(){ } backup_nandb(){ - mkdir -p "$backuppath" - local nandb_filename="$(cat $mountpoint/etc/clover/boardtype)-$(cat $mountpoint/etc/clover/VERSION).hsqs" - if [ ! -f "$backuppath/$nandb_filename" ]; then + [ -f /dev/mapper/root-crypt ] || return 1 + mkdir -p "$backuppath" || return 1 + cd "$mountpoint/etc/clover" || return 1 + local nandb_filename="$(cat boardtype)-$(cat VERSION)-$(cat REGION).hsqs" + nandb_filename="$(echo "$nandb_filename" | tr '[:upper:]' '[:lower:]')" + cd "$backuppath" || return 1 + if [ ! -f "$nandb_filename" ]; then echo "backup $nandb_filename" dd if=/dev/mapper/root-crypt bs=4k \ count=$((($(hexdump -e '1/4 "%u"' -s $((0x28)) -n 4 /dev/mapper/root-crypt)+0xfff)/0x1000)) \ - > "$backuppath/$nandb_filename" - md5sum "$backuppath/$nandb_filename" > "$backuppath/$nandb_filename.md5" + > "$nandb_filename" && \ + md5sum "$nandb_filename" > "$nandb_filename.md5" fi } @@ -33,8 +37,24 @@ backup(){ fi [ "$cf_backup" == "y" ] || return 0 backup_nandb + cd / [ "$cf_backup_dummy" == "y" ] || return 0 backup_one nanda backup_one nandd backup_one nande } + +dumpFirmware(){ + if [ -z "$1" ]; then + echo "specify path" + return 1 + fi + local backuppath="$1" + if backup_nandb; then + cd / + return 0 + fi + echo "whoopsie" + cd / + return 1 +} |