mirror of
https://github.com/LSPosed/MagiskOnWSALocal.git
synced 2025-05-06 23:06:34 +08:00
Prevent system partition from containing duplicate data from other partitions
This is caused by using Overlayfs mounts Even though this has no side effects, it will consume more disk space
This commit is contained in:
parent
9b117b8c94
commit
fddfd7954c
@ -40,6 +40,13 @@ VENDOR_MNT_RO="$ROOT_MNT_RO/vendor"
|
|||||||
PRODUCT_MNT_RO="$ROOT_MNT_RO/product"
|
PRODUCT_MNT_RO="$ROOT_MNT_RO/product"
|
||||||
SYSTEM_EXT_MNT_RO="$ROOT_MNT_RO/system_ext"
|
SYSTEM_EXT_MNT_RO="$ROOT_MNT_RO/system_ext"
|
||||||
|
|
||||||
|
# upperdir
|
||||||
|
ROOT_MNT_RW="$WORK_DIR/upper"
|
||||||
|
VENDOR_MNT_RW="$ROOT_MNT_RW/vendor"
|
||||||
|
PRODUCT_MNT_RW="$ROOT_MNT_RW/product"
|
||||||
|
SYSTEM_EXT_MNT_RW="$ROOT_MNT_RW/system_ext"
|
||||||
|
SYSTEM_MNT_RW="$ROOT_MNT_RW/system"
|
||||||
|
|
||||||
# merged
|
# merged
|
||||||
ROOT_MNT="$WORK_DIR/system_root_merged"
|
ROOT_MNT="$WORK_DIR/system_root_merged"
|
||||||
SYSTEM_MNT="$ROOT_MNT/system"
|
SYSTEM_MNT="$ROOT_MNT/system"
|
||||||
@ -48,6 +55,7 @@ PRODUCT_MNT="$ROOT_MNT/product"
|
|||||||
SYSTEM_EXT_MNT="$ROOT_MNT/system_ext"
|
SYSTEM_EXT_MNT="$ROOT_MNT/system_ext"
|
||||||
|
|
||||||
declare -A LOWER_PARTITION=(["zsystem"]="$ROOT_MNT_RO" ["vendor"]="$VENDOR_MNT_RO" ["product"]="$PRODUCT_MNT_RO" ["system_ext"]="$SYSTEM_EXT_MNT_RO")
|
declare -A LOWER_PARTITION=(["zsystem"]="$ROOT_MNT_RO" ["vendor"]="$VENDOR_MNT_RO" ["product"]="$PRODUCT_MNT_RO" ["system_ext"]="$SYSTEM_EXT_MNT_RO")
|
||||||
|
declare -A UPPER_PARTITION=(["zsystem"]="$SYSTEM_MNT_RW" ["vendor"]="$VENDOR_MNT_RW" ["product"]="$PRODUCT_MNT_RW" ["system_ext"]="$SYSTEM_EXT_MNT_RW")
|
||||||
declare -A MERGED_PARTITION=(["zsystem"]="$ROOT_MNT" ["vendor"]="$VENDOR_MNT" ["product"]="$PRODUCT_MNT" ["system_ext"]="$SYSTEM_EXT_MNT")
|
declare -A MERGED_PARTITION=(["zsystem"]="$ROOT_MNT" ["vendor"]="$VENDOR_MNT" ["product"]="$PRODUCT_MNT" ["system_ext"]="$SYSTEM_EXT_MNT")
|
||||||
DOWNLOAD_DIR=../download
|
DOWNLOAD_DIR=../download
|
||||||
DOWNLOAD_CONF_NAME=download.list
|
DOWNLOAD_CONF_NAME=download.list
|
||||||
@ -59,6 +67,9 @@ umount_clean() {
|
|||||||
for PART in "${LOWER_PARTITION[@]}"; do
|
for PART in "${LOWER_PARTITION[@]}"; do
|
||||||
sudo umount -v "$PART"
|
sudo umount -v "$PART"
|
||||||
done
|
done
|
||||||
|
for PART in "${UPPER_PARTITION[@]}"; do
|
||||||
|
sudo rm -rf "${PART:?}"
|
||||||
|
done
|
||||||
for PART in "${MERGED_PARTITION[@]}"; do
|
for PART in "${MERGED_PARTITION[@]}"; do
|
||||||
sudo umount -v "$PART"
|
sudo umount -v "$PART"
|
||||||
done
|
done
|
||||||
@ -147,19 +158,20 @@ vhdx_to_raw_img() {
|
|||||||
rm -f "$1" || return 1
|
rm -f "$1" || return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
mk_overlayfs() {
|
mk_overlayfs() { # label lowerdir upperdir merged
|
||||||
local lowerdir="$1"
|
local context own
|
||||||
local upperdir workdir merged context own
|
local workdir="$WORK_DIR/worker/$1"
|
||||||
merged="$3"
|
local lowerdir="$2"
|
||||||
upperdir="$WORK_DIR/upper/$2"
|
local upperdir="$3"
|
||||||
workdir="$WORK_DIR/worker/$2"
|
local merged="$4"
|
||||||
echo "mk_overlayfs: label $2
|
|
||||||
|
echo "mk_overlayfs: label $1
|
||||||
lowerdir=$lowerdir
|
lowerdir=$lowerdir
|
||||||
upperdir=$upperdir
|
upperdir=$upperdir
|
||||||
workdir=$workdir
|
workdir=$workdir
|
||||||
merged=$merged"
|
merged=$merged"
|
||||||
sudo mkdir -p -m 755 "$workdir" "$upperdir" "$merged"
|
sudo mkdir -p -m 755 "$workdir" "$upperdir" "$merged"
|
||||||
case "$2" in
|
case "$1" in
|
||||||
vendor)
|
vendor)
|
||||||
context="u:object_r:vendor_file:s0"
|
context="u:object_r:vendor_file:s0"
|
||||||
own="0:2000"
|
own="0:2000"
|
||||||
@ -180,11 +192,14 @@ mk_overlayfs() {
|
|||||||
sudo mount -vt overlay overlay -olowerdir="$lowerdir",upperdir="$upperdir",workdir="$workdir" "$merged"
|
sudo mount -vt overlay overlay -olowerdir="$lowerdir",upperdir="$upperdir",workdir="$workdir" "$merged"
|
||||||
}
|
}
|
||||||
|
|
||||||
mk_erofs_umount() {
|
mk_erofs_umount() { # dir imgpath upperdir
|
||||||
sudo "../bin/$HOST_ARCH/mkfs.erofs" -zlz4hc -T1230768000 --chunksize=4096 --exclude-regex="lost+found" "$2".erofs "$1" || abort "Failed to make erofs image from $1"
|
sudo "../bin/$HOST_ARCH/mkfs.erofs" -zlz4hc -T1230768000 --chunksize=4096 --exclude-regex="lost+found" "$2".erofs "$1" || abort "Failed to make erofs image from $1"
|
||||||
sudo umount -v "$1"
|
sudo umount -v "$1"
|
||||||
sudo rm -f "$2"
|
sudo rm -f "$2"
|
||||||
sudo mv "$2".erofs "$2"
|
sudo mv "$2".erofs "$2"
|
||||||
|
if [ "$3" ]; then
|
||||||
|
sudo rm -rf "$3"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
ro_ext4_img_to_rw() {
|
ro_ext4_img_to_rw() {
|
||||||
@ -644,10 +659,10 @@ if [[ "$WSA_MAIN_VER" -ge 2304 ]]; then
|
|||||||
mount_erofs "$WORK_DIR/wsa/$ARCH/system_ext.img" "$SYSTEM_EXT_MNT_RO" || abort
|
mount_erofs "$WORK_DIR/wsa/$ARCH/system_ext.img" "$SYSTEM_EXT_MNT_RO" || abort
|
||||||
echo -e "done\n"
|
echo -e "done\n"
|
||||||
echo "Create overlayfs for EROFS"
|
echo "Create overlayfs for EROFS"
|
||||||
mk_overlayfs "$ROOT_MNT_RO" system "$ROOT_MNT" || abort
|
mk_overlayfs system "$ROOT_MNT_RO" "$SYSTEM_MNT_RW" "$ROOT_MNT" || abort
|
||||||
mk_overlayfs "$VENDOR_MNT_RO" vendor "$VENDOR_MNT" || abort
|
mk_overlayfs vendor "$VENDOR_MNT_RO" "$VENDOR_MNT_RW" "$VENDOR_MNT" || abort
|
||||||
mk_overlayfs "$PRODUCT_MNT_RO" product "$PRODUCT_MNT" || abort
|
mk_overlayfs product "$PRODUCT_MNT_RO" "$PRODUCT_MNT_RW" "$PRODUCT_MNT" || abort
|
||||||
mk_overlayfs "$SYSTEM_EXT_MNT_RO" system_ext "$SYSTEM_EXT_MNT" || abort
|
mk_overlayfs system_ext "$SYSTEM_EXT_MNT_RO" "$SYSTEM_EXT_MNT_RW" "$SYSTEM_EXT_MNT" || abort
|
||||||
echo -e "Create overlayfs for EROFS done\n"
|
echo -e "Create overlayfs for EROFS done\n"
|
||||||
elif [[ "$WSA_MAIN_VER" -ge 2302 ]]; then
|
elif [[ "$WSA_MAIN_VER" -ge 2302 ]]; then
|
||||||
echo "Remove read-only flag for read-only EXT4 image"
|
echo "Remove read-only flag for read-only EXT4 image"
|
||||||
@ -890,9 +905,9 @@ fi
|
|||||||
|
|
||||||
if [[ "$WSA_MAIN_VER" -ge 2304 ]]; then
|
if [[ "$WSA_MAIN_VER" -ge 2304 ]]; then
|
||||||
echo "Create EROFS images"
|
echo "Create EROFS images"
|
||||||
mk_erofs_umount "$VENDOR_MNT" "$WORK_DIR/wsa/$ARCH/vendor.img" || abort
|
mk_erofs_umount "$VENDOR_MNT" "$WORK_DIR/wsa/$ARCH/vendor.img" "$VENDOR_MNT_RW" || abort
|
||||||
mk_erofs_umount "$PRODUCT_MNT" "$WORK_DIR/wsa/$ARCH/product.img" || abort
|
mk_erofs_umount "$PRODUCT_MNT" "$WORK_DIR/wsa/$ARCH/product.img" "$PRODUCT_MNT_RW" || abort
|
||||||
mk_erofs_umount "$SYSTEM_EXT_MNT" "$WORK_DIR/wsa/$ARCH/system_ext.img" || abort
|
mk_erofs_umount "$SYSTEM_EXT_MNT" "$WORK_DIR/wsa/$ARCH/system_ext.img" "$SYSTEM_EXT_MNT_RW" || abort
|
||||||
mk_erofs_umount "$ROOT_MNT" "$WORK_DIR/wsa/$ARCH/system.img" || abort
|
mk_erofs_umount "$ROOT_MNT" "$WORK_DIR/wsa/$ARCH/system.img" || abort
|
||||||
echo -e "Create EROFS images done\n"
|
echo -e "Create EROFS images done\n"
|
||||||
echo "Umount images"
|
echo "Umount images"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user