浏览代码

Add zeromount action for kernel integration

This action adds zeromount functionality to the kernel by applying necessary patches and modifying configuration files based on the specified Android and kernel versions.
jimsterino98 4 月之前
父节点
当前提交
050b932b43
共有 1 个文件被更改,包括 55 次插入0 次删除
  1. 55 0
      .github/actions/zeromount/action.yml

+ 55 - 0
.github/actions/zeromount/action.yml

@@ -0,0 +1,55 @@
+name: Add zeromount
+description: add zeromount to kernel
+inputs:
+  android_version:
+   description: 'Android version (android14)'
+   required: true
+  kernel_version:
+   description: 'kernel version (6.1)'
+   required: true
+
+runs:
+ using: composite
+ steps:
+  - name: apply zeromount patches
+    shell: bash
+    run: |
+     echo "adding zeromount..."
+            
+      cd "$COMMON"
+      cp "$ZEROMOUNT/${{ inputs.android_version }}-${{ inputs.kernel_version }}/WildKSU/patches/60_zeromount-${{ inputs.android_version }}-${{ inputs.kernel_version }}.patch" .
+      #patch -p1 < 51_enhanced_susfs_gki-${{ inputs.android_version }}-${{ inputs.kernel_version }}.patch || true
+      patch -p1 < 60_zeromount-${{ inputs.android_version }}-${{ inputs.kernel_version }}.patch || true
+      rm -rf 60_zeromount-${{ inputs.android_version }}-${{ inputs.kernel_version }}.patch
+
+      if [ -f fs/proc/task_mmu.c.rej ]; then
+        echo "Fixing task_mmu.c..."
+
+        sed -i '/pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT;/a\
+        #ifdef CONFIG_ZEROMOUNT\
+        \tzeromount_spoof_mmap_metadata(inode, \&dev, \&ino);\
+        #endif' fs/proc/task_mmu.c
+      fi
+
+      if [ -f fs/stat.c.rej ]; then
+       echo "fixing stat.c."
+
+        if ! grep -q 'zeromount_stat_hook(dfd, filename, stat, request_mask, flags)' fs/stat.c; then
+          perl -0pi -e 's@(static int vfs_statx\(.*?\)\s*\{.*?orig_flow:\n#endif\n)@$1\n#ifdef CONFIG_ZEROMOUNT\n\tif (filename) {\n\t\tint zm_ret = zeromount_stat_hook(dfd, filename, stat, request_mask, flags);\n\t\tif (zm_ret != -ENOENT)\n\t\t\treturn zm_ret;\n\t}\n#endif\n\n@s' fs/stat.c
+        fi
+      fi
+
+      if [ -f fs/Kconfig.rej ]; then
+        echo "Applying Kconfig zeromount fix..."
+
+        if ! grep -q '^config ZEROMOUNT$' fs/Kconfig; then
+            perl -0pi -e 's@(config IO_WQ\n\tbool\n)@\1\nconfig ZEROMOUNT\n\tbool "ZeroMount Path Redirection Subsystem"\n\tdefault y\n\thelp\n\t  ZeroMount allows path redirection and virtual file injection\n\t  without mounting filesystems. Useful for systemless modifications.\n\n@' fs/Kconfig
+        fi
+      fi
+      #patch -p1 < 70_ksu_safety-wksu-${{ inputs.kernel_version }}.patch || true
+
+      cd "$GITHUB_WORKSPACE"
+      cat >> "$GKI_DEFCONFIG" << 'EOF'
+      # Zeromount Configuration
+      CONFIG_ZEROMOUNT=y
+      EOF