action.yml 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. name: Add zeromount
  2. description: add zeromount to kernel
  3. inputs:
  4. android_version:
  5. description: 'Android version (android14)'
  6. required: true
  7. kernel_version:
  8. description: 'kernel version (6.1)'
  9. required: true
  10. runs:
  11. using: composite
  12. steps:
  13. - name: clone zeromount
  14. shell: bash
  15. run: |
  16. git clone https://github.com/jimsterino98/Super-Builders.git
  17. ZEROMOUNT="$ROOT/Super-Builders"
  18. echo "ZEROMOUNT=$ZEROMOUNT" >> $GITHUB_ENV
  19. - name: apply zeromount patches
  20. shell: bash
  21. run: |
  22. echo "adding zeromount..."
  23. cd "$COMMON"
  24. cp "$ZEROMOUNT/${{ inputs.android_version }}-${{ inputs.kernel_version }}/WildKSU/patches/60_zeromount-${{ inputs.android_version }}-${{ inputs.kernel_version }}.patch" .
  25. #patch -p1 < 51_enhanced_susfs_gki-${{ inputs.android_version }}-${{ inputs.kernel_version }}.patch || true
  26. patch -p1 < 60_zeromount-${{ inputs.android_version }}-${{ inputs.kernel_version }}.patch || true
  27. rm -rf 60_zeromount-${{ inputs.android_version }}-${{ inputs.kernel_version }}.patch
  28. if [ -f fs/proc/task_mmu.c.rej ]; then
  29. echo "Fixing task_mmu.c..."
  30. sed -i '/pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT;/a\
  31. #ifdef CONFIG_ZEROMOUNT\
  32. \tzeromount_spoof_mmap_metadata(inode, \&dev, \&ino);\
  33. #endif' fs/proc/task_mmu.c
  34. fi
  35. if [ -f fs/stat.c.rej ]; then
  36. echo "fixing stat.c."
  37. if ! grep -q 'zeromount_stat_hook(dfd, filename, stat, request_mask, flags)' fs/stat.c; then
  38. 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
  39. fi
  40. fi
  41. if [ -f fs/Kconfig.rej ]; then
  42. echo "Applying Kconfig zeromount fix..."
  43. if ! grep -q '^config ZEROMOUNT$' fs/Kconfig; then
  44. 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
  45. fi
  46. fi
  47. #patch -p1 < 70_ksu_safety-wksu-${{ inputs.kernel_version }}.patch || true
  48. cd "$GITHUB_WORKSPACE"
  49. cat >> "$GKI_DEFCONFIG" << 'EOF'
  50. # Zeromount Configuration
  51. CONFIG_ZEROMOUNT=y
  52. EOF