Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/hakchi.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/mod
diff options
context:
space:
mode:
authormadmonkey <madfkingmonkey@gmail.com>2017-10-08 12:28:11 +0300
committermadmonkey <madfkingmonkey@gmail.com>2017-10-08 14:54:27 +0300
commit80a90c18a52f121db7d1945eed3d1ac46629789b (patch)
treed43598b9b35f5171cb8f1e134c0899211ef6cf37 /mod
parent78df6b1eee9d42b7e2244e422587a0726ba9d594 (diff)
second mount for squashfs
Diffstat (limited to 'mod')
-rw-r--r--mod/hakchi/rootfs/etc/preinit.d/b0010_functions33
-rw-r--r--mod/hakchi/rootfs/etc/preinit.d/b0020_backup30
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
+}