82 lines
2.4 KiB
Bash
82 lines
2.4 KiB
Bash
#!/system/bin/sh
|
|
############################################
|
|
# meta-overlayfs metainstall.sh
|
|
# Module installation hook for ext4 image support
|
|
############################################
|
|
|
|
# Constants
|
|
IMG_FILE="/data/adb/metamodule/modules.img"
|
|
MNT_DIR="/data/adb/metamodule/mnt"
|
|
|
|
# Ensure ext4 image is mounted
|
|
ensure_image_mounted() {
|
|
if ! mountpoint -q "$MNT_DIR" 2>/dev/null; then
|
|
ui_print "- Mounting modules image"
|
|
mkdir -p "$MNT_DIR"
|
|
mount -t ext4 -o loop,rw,noatime "$IMG_FILE" "$MNT_DIR" || {
|
|
abort "! Failed to mount modules image"
|
|
}
|
|
ui_print "- Image mounted successfully"
|
|
else
|
|
ui_print "- Image already mounted"
|
|
fi
|
|
}
|
|
|
|
# Determine whether this module should be moved into the ext4 image.
|
|
# We only relocate payloads that expose system/ overlays and do not opt out via skip_mount.
|
|
module_requires_overlay_move() {
|
|
if [ -f "$MODPATH/skip_mount" ]; then
|
|
ui_print "- skip_mount flag detected; keeping files under /data/adb/modules"
|
|
return 1
|
|
fi
|
|
|
|
if [ ! -d "$MODPATH/system" ]; then
|
|
ui_print "- No system/ directory detected; keeping files under /data/adb/modules"
|
|
return 1
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
# Post-installation: move partition directories to ext4 image
|
|
post_install_to_image() {
|
|
ui_print "- Copying module content to image"
|
|
|
|
set_perm_recursive "$MNT_DIR" 0 0 0755 0644
|
|
|
|
MOD_IMG_DIR="$MNT_DIR/$MODID"
|
|
mkdir -p "$MOD_IMG_DIR"
|
|
|
|
# Move all partition directories
|
|
for partition in system vendor product system_ext odm oem; do
|
|
if [ -d "$MODPATH/$partition" ]; then
|
|
ui_print "- Copying $partition/"
|
|
cp -af "$MODPATH/$partition" "$MOD_IMG_DIR/" || {
|
|
ui_print "! Warning: Failed to move $partition"
|
|
}
|
|
fi
|
|
done
|
|
|
|
# Set permissions
|
|
set_perm_recursive "$MOD_IMG_DIR" 0 0 0755 0644
|
|
set_perm_recursive "$MOD_IMG_DIR/system/bin" 0 2000 0755 0755
|
|
set_perm_recursive "$MOD_IMG_DIR/system/xbin" 0 2000 0755 0755
|
|
set_perm_recursive "$MOD_IMG_DIR/system/system_ext/bin" 0 2000 0755 0755
|
|
set_perm_recursive "$MOD_IMG_DIR/system/vendor" 0 2000 0755 0755 u:object_r:vendor_file:s0
|
|
|
|
ui_print "- Module content copied"
|
|
}
|
|
|
|
ui_print "- Using meta-overlayfs metainstall"
|
|
|
|
install_module
|
|
|
|
if module_requires_overlay_move; then
|
|
ensure_image_mounted
|
|
post_install_to_image
|
|
else
|
|
ui_print "- Skipping move to modules image"
|
|
fi
|
|
|
|
ui_print "- Installation complete"
|