mirror of
https://github.com/MustardChef/WSABuilds.git
synced 2024-11-22 19:29:18 +01:00
Initial commit
This commit is contained in:
parent
9209f83ed2
commit
9789c3f69c
167
.github/workflows/magisk.yml
vendored
Normal file
167
.github/workflows/magisk.yml
vendored
Normal file
@ -0,0 +1,167 @@
|
|||||||
|
name: Magisk
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
magisk_apk:
|
||||||
|
description: 'Download link to magisk apk.'
|
||||||
|
required: true
|
||||||
|
arch:
|
||||||
|
description: 'Architecture to build. Should be x64 or arm64.'
|
||||||
|
required: true
|
||||||
|
default: 'x64'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
steps:
|
||||||
|
- name: Dependencies
|
||||||
|
run: |
|
||||||
|
pip3 install beautifulsoup4 lxml
|
||||||
|
sudo apt-get update && sudo apt-get install setools
|
||||||
|
- name: Download AWS
|
||||||
|
shell: python
|
||||||
|
run: |
|
||||||
|
import requests
|
||||||
|
from bs4 import BeautifulSoup
|
||||||
|
import re
|
||||||
|
import zipfile
|
||||||
|
import os
|
||||||
|
import urllib.request
|
||||||
|
|
||||||
|
res = requests.post("https://store.rg-adguard.net/api/GetFiles", "type=CategoryId&url=858014f3-3934-4abe-8078-4aa193e74ca8&ring=WIS&lang=en-US", headers={
|
||||||
|
"content-type": "application/x-www-form-urlencoded"
|
||||||
|
})
|
||||||
|
html = BeautifulSoup(res.content, "lxml")
|
||||||
|
a = html.find("a", string=re.compile("MicrosoftCorporationII\.WindowsSubsystemForAndroid_.*\.msixbundle"))
|
||||||
|
link = a["href"]
|
||||||
|
|
||||||
|
print(f"downloading link: {link}", flush=True)
|
||||||
|
|
||||||
|
out_file = "wsa.zip"
|
||||||
|
|
||||||
|
arch = "${{ github.event.inputs.arch }}"
|
||||||
|
|
||||||
|
if not os.path.isfile(out_file):
|
||||||
|
urllib.request.urlretrieve(link, out_file)
|
||||||
|
|
||||||
|
zip_name = ""
|
||||||
|
with zipfile.ZipFile(out_file) as zip:
|
||||||
|
for f in zip.filelist:
|
||||||
|
if f.filename.__contains__(arch):
|
||||||
|
zip_name = f.filename
|
||||||
|
if not os.path.isfile(zip_name):
|
||||||
|
print(f"unzipping to {zip_name}", flush=True)
|
||||||
|
zip.extract(f)
|
||||||
|
|
||||||
|
with zipfile.ZipFile(zip_name) as zip:
|
||||||
|
if not os.path.isdir(arch):
|
||||||
|
print(f"unzipping from {zip_name}", flush=True)
|
||||||
|
zip.extractall(arch)
|
||||||
|
print("done", flush=True)
|
||||||
|
- name: Download Magisk
|
||||||
|
shell: python
|
||||||
|
run: |
|
||||||
|
import urllib.request
|
||||||
|
import zipfile
|
||||||
|
import os
|
||||||
|
|
||||||
|
magisk_apk = """${{ github.event.inputs.magisk_apk }}"""
|
||||||
|
|
||||||
|
out_file = "magisk.zip"
|
||||||
|
|
||||||
|
arch = "${{ github.event.inputs.arch }}"
|
||||||
|
|
||||||
|
abi_map={"x64" : ["x86_64", "x86"], "arm64" : ["arm64-v8a", "armeabi-v7a"]}
|
||||||
|
|
||||||
|
if not os.path.isfile(out_file):
|
||||||
|
urllib.request.urlretrieve(magisk_apk, out_file)
|
||||||
|
|
||||||
|
def extract_as(zip, name, as_name, dir):
|
||||||
|
info = zip.getinfo(name)
|
||||||
|
info.filename = as_name
|
||||||
|
zip.extract(info, dir)
|
||||||
|
|
||||||
|
with zipfile.ZipFile(out_file) as zip:
|
||||||
|
extract_as(zip, f"lib/{ abi_map[arch][0] }/libmagisk64.so", "magisk64", "magisk")
|
||||||
|
extract_as(zip, f"lib/{ abi_map[arch][1] }/libmagisk32.so", "magisk32", "magisk")
|
||||||
|
extract_as(zip, f"lib/{ abi_map[arch][0] }/libmagiskinit.so", "magiskinit", "magisk")
|
||||||
|
- name: Expand images
|
||||||
|
run: |
|
||||||
|
e2fsck -yf ${{ github.event.inputs.arch }}/vendor.img
|
||||||
|
resize2fs ${{ github.event.inputs.arch }}/vendor.img 320M
|
||||||
|
- name: Mount images
|
||||||
|
run: |
|
||||||
|
sudo mkdir system
|
||||||
|
sudo mount -o loop ${{ github.event.inputs.arch }}/system.img system
|
||||||
|
sudo mount -o loop ${{ github.event.inputs.arch }}/vendor.img system/vendor
|
||||||
|
- name: Modify images
|
||||||
|
run: |
|
||||||
|
sudo mkdir system/sbin
|
||||||
|
sudo chcon --reference system/init.environ.rc system/sbin
|
||||||
|
sudo chown root:root system/sbin
|
||||||
|
sudo chmod 0700 system/sbin
|
||||||
|
sudo cp magisk/* system/sbin/
|
||||||
|
sudo find system/sbin -type f -exec chmod 0755 {} \;
|
||||||
|
sudo find system/sbin -type f -exec chown root:root {} \;
|
||||||
|
sudo find system/sbin -type f -exec chcon --reference system/product {} \;
|
||||||
|
ln -s magiskinit magisk/magiskpolicy
|
||||||
|
chmod +x magisk/magiskpolicy
|
||||||
|
echo '/dev/wsa-magisk(/.*)? u:object_r:magisk_file:s0' | sudo tee -a system/vendor/etc/selinux/vendor_file_contexts
|
||||||
|
sudo ./magisk/magiskpolicy --load system/vendor/etc/selinux/precompiled_sepolicy --save system/vendor/etc/selinux/precompiled_sepolicy --magisk "allow * magisk_file lnk_file *"
|
||||||
|
sudo tee -a system/system/etc/init/hw/init.rc <<EOF
|
||||||
|
|
||||||
|
on post-fs-data
|
||||||
|
start logd
|
||||||
|
start adbd
|
||||||
|
mkdir /dev/wsa-magisk
|
||||||
|
mount tmpfs tmpfs /dev/wsa-magisk mode=0755
|
||||||
|
copy /sbin/magisk64 /dev/wsa-magisk/magisk64
|
||||||
|
chmod 0755 /dev/wsa-magisk/magisk64
|
||||||
|
symlink ./magisk64 /dev/wsa-magisk/magisk
|
||||||
|
symlink ./magisk64 /dev/wsa-magisk/su
|
||||||
|
symlink ./magisk64 /dev/wsa-magisk/resetprop
|
||||||
|
copy /sbin/magisk32 /dev/wsa-magisk/magisk32
|
||||||
|
chmod 0755 /dev/wsa-magisk/magisk32
|
||||||
|
copy /sbin/magiskinit /dev/wsa-magisk/magiskinit
|
||||||
|
chmod 0755 /dev/wsa-magisk/magiskinit
|
||||||
|
symlink ./magiskinit /dev/wsa-magisk/magiskpolicy
|
||||||
|
mkdir /dev/wsa-magisk/.magisk 700
|
||||||
|
mkdir /dev/wsa-magisk/.magisk/mirror 700
|
||||||
|
mkdir /dev/wsa-magisk/.magisk/block 700
|
||||||
|
rm /dev/.magisk_unblock
|
||||||
|
start FAhW7H9G5sf
|
||||||
|
wait /dev/.magisk_unblock 10
|
||||||
|
rm /dev/.magisk_unblock
|
||||||
|
|
||||||
|
service FAhW7H9G5sf /dev/wsa-magisk/magisk --post-fs-data
|
||||||
|
user root
|
||||||
|
seclabel u:r:magisk:s0
|
||||||
|
oneshot
|
||||||
|
|
||||||
|
service HLiFsR1HtIXVN6 /dev/wsa-magisk/magisk --service
|
||||||
|
class late_start
|
||||||
|
user root
|
||||||
|
seclabel u:r:magisk:s0
|
||||||
|
oneshot
|
||||||
|
|
||||||
|
on property:sys.boot_completed=1
|
||||||
|
start YqCTLTppv3ML
|
||||||
|
|
||||||
|
service YqCTLTppv3ML /dev/wsa-magisk/magisk --boot-complete
|
||||||
|
user root
|
||||||
|
seclabel u:r:magisk:s0
|
||||||
|
oneshot
|
||||||
|
EOF
|
||||||
|
- name: Umount images
|
||||||
|
run: |
|
||||||
|
sudo umount system/vendor
|
||||||
|
sudo umount system
|
||||||
|
- name: Remove signature
|
||||||
|
run: |
|
||||||
|
rm -rf ${{ github.event.inputs.arch }}/\[Content_Types\].xml ${{ github.event.inputs.arch }}/AppxBlockMap.xml ${{ github.event.inputs.arch }}/AppxSignature.p7x ${{ github.event.inputs.arch }}/AppxMetadata
|
||||||
|
- name: Upload WSA
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: WSA-with-Magisk
|
||||||
|
path: './${{ github.event.inputs.arch }}/*'
|
14
README.md
Normal file
14
README.md
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
## Magisk on WSA
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
1. Fork this repo
|
||||||
|
1. Go to Action tab and select workflow `Magisk`, click the run button and enter the needed infomation (architecture and magisk apk download link)
|
||||||
|
1. Wait the action complete and download the artifact
|
||||||
|
1. Uninstall WSA
|
||||||
|
1. Unzip the artifact
|
||||||
|
1. Enable deveop mode on Windows
|
||||||
|
1. Open powershell with admin permission and run `Add-AppxPackage -Register .\AppxManifest.xml` under the unzipped artifact directory
|
||||||
|
1. Launch WSA and enable develop mode, launch the file manager, and wait until the file manager popup
|
||||||
|
1. `adb connect localhost:58526` to connect` to connect to WSA and install Magisk canary app (23010) (the attached magisk.apk) and launch it
|
||||||
|
1. Fix the environment as Magisk app will prompt and reboot
|
||||||
|
1. Enjoy by installing Riru and LSPosed
|
Loading…
Reference in New Issue
Block a user