윈도우11 MagiskOnWSALocal WSA 빌드 및 설치 방법 (2309.40000.2.0)

이 가이드는 Windows 11에서 MagiskOnWSALocal WSA 빌드 및 설치 방법에 대해 살펴 봅니다.

Android용 Windows 하위 시스템, 이하 WSA는 Amazon Appstore가 기본으로 사용되며 Android 환경에서 보편적으로 사용되는 Play 스토어가 제공되지 않습니다.

따라서 Windows 환경에서 Google Play 스토어 사용을 원할 경우 사용자가 직접 WSA 패키지 파일에 GApps를 추가하여 패키징 하는 등 번거로운 작업이 필요합니다.

다행인 것은 이미 많은 분들이 이용하고 있는 MagiskOnWSALocal 도구를 통해 자동으로 Magisk 및 GApps를 통합하여 최신 업데이트 버전의 빌드 생성이 가능합니다.

Windows 11에서 MagiskOnWSALocal 도구를 사용하여 WSA 빌드 및 설치하기

Windows 11 환경에서 Android용 Windows 하위 시스템을 처음 설치하는 사용자를 위해 WSA 설치 전 사전 준비 작업부터 살펴보겠습니다.

01 Android용 Windows 하위 시스템 설치 전 사전 구성

현재 사용 중인 Windows 11 환경에서 Android용 Windows 하위 시스템을 한 번이라도 설치한 경우 이 단계는 건너 뛰셔도 됩니다.

STEP 01. 가상 머신 플랫폼 기능 활성화

가상 머신 플랫폼 활성화.
<Windows 기능 – 가상 머신 플랫폼>

Windows 시작 메뉴에서 “Windows 기능 켜기/끄기”를 검색하여 열고, “가상 머신 플랫폼” 항목을 선택하여 활성화 후 [확인] 버튼을 클릭합니다.

STEP 02. Windows 개발자 모드 활성화

개발자 모드 활성화.
<Windows 11 개발자 모드 활성화>

우리나라는 공식적으로 Android용 Windows 하위 시스템을 지원하지 않습니다.

따라서 Microsoft Store 앱을 통하지 않고 외부 경로를 통해 설치하기 위해서는 느슨한 파일을 포함하여 모든 원본의 앱을 설치할 수 있도록 개발자 모드를 활성화해야 합니다.

이를 위해 단축키 Win + I 키를 눌러 설정 앱을 열고 [시스템 > 개발자용] 메뉴 이동 후 “개발자 모드” 항목의 토글 스위치를 [켬]으로 변경하여 활성화합니다.

※ 참고 : MagiskOnWSALocal 빌드는 Windows 11에서 개발자 모드를 자동으로 활성화합니다. 따라서 이 단계는 건너 뛰어도 무방합니다.

STEP 03. Ubuntu 22.04 등 WSL2 배포판 설치

GitHub에서 수행되는 MagiskOnWSA 도구와 달리 MagiskOnWSALocal 도구는 사용자 시스템 리소스(WSL2)를 사용하여 빌드할 수 있습니다. 따라서 반드시 WSL2 설치가 필요합니다.

참고로 해당 프로젝트에서 권장하는 WSL2 리눅스 배포판은 Ubuntu, OpenSUSE, Devian 입니다.

본문에서는 Ubuntu 버전을 사용하며, WSA 빌드 시 2309.40000.2.0 등 최신 미리 보기 버전을 설치하고 싶다면 22.04 LTS 버전을 설치하시기 바랍니다.

터미널 or 터미널(관리자) 실행.

키보드 단축키 Win + X 키를 누르고 고급 사용자 메뉴에서 “터미널” 또는 “터미널(관리자)”를 선택하여 Windows 터미널 앱을 실행합니다.

PowerShell 명령으로 WSL2 배포판 설치.

다음 명령을 입력하여 사용 가능한 리눅스 배포판 목록을 확인합니다.

wsl --list --online

현재 시스템에 설치할 수 있는 목록 확인 후 원하는 배포판을 다음 명령으로 설치합니다.

wsl --install -d DISTROS_NAME

예를 들어 Ubuntu 22.04 LTS 버전을 설치하고 싶다면 다음 명령을 사용할 수 있습니다.

wsl --install -d Ubuntu-22.04

STEP 04. Microsoft UI Xaml 2.8 설치

Android용 Windows 하위 시스템을 실행하기 위해 필요한 프레임워크가 포함된 Microsoft UI Xaml 설치가 필요합니다.

Windows 참가자 프로그램에 참여 중인 Insider Preview(Beta 및 Dev 채널) 버전에는 기본으로 설치되어 있으나, 안정화 버전에서는 설치가 필요합니다.

Microsoft Store - Generation Project 사이트에서 9P3395VX91NR 검색.
<Microsoft Store – Generation Project>

Microsoft Store Generation Project 사이트 접속 후 첫 번째 Type 옵션은 “ProductId”, 검색어 다음 ID를 입력하고, Ring 옵션은 “RP” 선택 후 ☑ 버튼을 클릭합니다.

9P3395VX91NR

※ 참고 : Android용 Windows 하위 시스템의 Microsoft Product ID 입니다.

Microsoft.UI.Xaml.2.8_8.2306.22001.0_x64__8wekyb3d8bbwe.appx 다운로드.

검색 결과 중 다음 파일을 찾아서 다운로드 후 설치합니다.

Microsoft.UI.Xaml.2.8_8.2306.22001.0_x64__8wekyb3d8bbwe.appx

※ 참고 : MagiskOnWSALocal 빌드 생성 시 자동으로 다운로드 및 설치하며, WSL 시스템의 다운로드 디렉터리에 포함되어 있습니다. 따라서 이 단계도 건너 뛰셔도 무방합니다.

/home/<user_id>/MagiskOnWSALocal/download

02 Android용 Windows 하위 시스템 백업

MagiskOnWSALocal 또는 MagiskOnWSA 버전의 Android용 Windows 하위 시스템을 이미 사용하고 있다면, 신규 버전 설치 시 모든 사용자 데이터를 유지한 상태로 업데이트 됩니다.

따라서 Microsoft Store를 통해 간편하게 업데이트가 가능한 Amazon Appstore 버전의 공식 WSA와 동일하게 기존 데이터는 보관, 유지한 상태로 버전 업데이트가 가능합니다.

그러나 공식 WSA 버전 사용자의 경우 MagiskOnWSALocal WSA 빌드 및 설치 전 반드시 기존 하위 시스템을 제거해야 합니다.

데이터를 보존하고 싶은 경우 제거 전 백업을 진행합니다.

공식 WSA 백업 수행.
<이전 버전 Android용 Windows 하위 시스템 백업>

키보드 단축키 Win + E 키를 눌러 파일 탐색기를 열고, 다음 경로로 이동합니다.

%LOCALAPPDATA%\Packages\MicrosoftCorporationII.WindowsSubsystemForAndroid_8wekyb3d8bbwe\LocalCache\

해당 경로에 있는 데이터(userdata.vhdx)를 별도 저장소에 보관하고, 호환성 문제 등 불가피하게 이전 버전의 WSA로 복원이 필요할 때 동일 위치에 데이터를 복원하여, 이전 버전의 WSA로 복구할 수 있습니다.

03 MagiskOnWSALocal WSA 패키지 생성

MagiskOnWSALocal 프로젝트는 GitHub 컴퓨팅 자원을 사용했던 이전 프로젝트와 달리 단순히 코드만 사용자 시스템의 WSL2 환경으로 복사하여 직접 빌드할 수 있습니다.

STEP 01. MagiskOnWSALocal 프로젝트 로컬 복제

MagiskOnWSALocal 저장소를 로컬 저장소로 복제.

Windows 11 환경에서 WSL2(Ubuntu 배포판) 실행 후 다음 명령으로 MagiskOnWSALocal Repository를 로컬 저장소에 복제합니다.

git clone https://github.com/LSPosed/MagiskOnWSALocal.git --depth 1
MagiskOnWSALocal 빌드 스크립트 업데이트 수행.

기존 MagiskOnWSALocal 사용자라면 다음 명령을 이용하여 빌드 스크립트 업데이트가 가능합니다.

git pull

STEP 02. WSL2 배포 OS 패키지(종속성) 설치

필요 패키지 설치.

다음 명령으로 MagiskOnWSALocal 빌드에 필요한 패키지를 설치합니다.

sudo apt install setools lzip wine patchelf e2fsprogs aria2 python3

만약 위와 같이 오류가 발생한다면 설치 가능한 패키지 목록을 업데이트하여 해결할 수 있습니다.

패키지 업데이트.

다음 명령을 입력하고 Enter 키를 눌러 설치 가능한 패키지 목록을 최신화 할 수 있습니다.

sudo apt update

STEP 03. MagiskOnWSALocal WSA 빌드 옵션 선택

빌드 스크립트 수행.

모든 준비가 완료되면 MagiskOnWSALocal WSA 빌드 및 설치 과정을 시작합니다.

Ubuntu 등 WSL2 리눅스 배포판의 사용자 기본 경로는 “/home/<user_id>” 입니다.

따라서 로컬 저장소에 복제한 MagiskOnWSALocal 경로는 사용자가 별도로 지정하지 않았을 경우 다음 경로에 있습니다.

/home/<user_id>/MagiskOnWSALocal/

해당 경로에서 “scripts” 디렉터리 이동 후 “run.sh” 스크립트를 실행합니다.

cd MagiskOnWSALocal/scripts
./run.sh
안내 사항 확인.

MagiskOnWSA 도구에 대한 간단한 설명을 확인합니다.

  • 방향 이동 : 키보드  or   
  • 항목 선택 : 키보드 Space 
  • 확인 <Ok> : 키보드 Enter 
Build Arch 선택.

빌드하려는 아키텍처를 선택합니다.

일반적으로 “x64”를 선택하시면 됩니다.

WSA release type 선택.

WSA 릴리스 타입을 선택합니다.

일반적으로 안정화 버전인 “retail(Stable Channel)”을 선택합니다.

그러나 본문에서는 WSA Preview 버전을 사용하기 위해 “insider fast(Dev Channel)”을 선택합니다.

※ 참고 : 현재 MagiskOnWSA 프로젝트 업데이트가 이루어지지 않고 있어 여러가지 오류가 나타날 수 있습니다. 예를 들어 Ubuntu WSL 20.04 버전에서 스크립트 실행 오류가 발생하거나, v2309 등 WSA 미리 보기 릴리스 유형을 선택하더라도 v2305로 생성되는 등 문제가 발생할 수 있습니다.

모든 이미지가 EROFS에서 EXT4로 전환되어 발생하는 오류 등의 문제를 해결하기 위한 "build.sh" 스크립트 수정, Ubuntu WSL 22.04 업그레이드, wsa-WIF.zip 변경 등 자세한 내용은 관련 작업 수행 단계에서 다시 설명하도록 하겠습니다.
Root 여부 선택.

Android용 Windows 하위 시스템의 루팅 여부를 선택합니다.

Root Solution 선택.

Root WSA 선택 시 다음 중 하나를 선택할 수 있습니다.

  • Magisk : 핵심 시스템 파일은 변경하지 않고 부팅 이미지를 수정하는 루트 솔루션
  • KernelSU : 루트 권한을 부여하기 위해 커널 소스 코드를 수정하는 커널 기반 루트 솔루션

개인적으로 Magisk 모듈을 더 선호하는 편입니다. Google은 SafetyNet이라는 것을 사용하여 기기 루팅 여부를 감지하고 이러한 기능에 대한 액세스를 차단합니다.

흔히 뱅킹 앱 등에서 루팅 여부를 검사하고 접근을 차단하죠? Magisk는 이러한 SafetyNet을 우회할 수 있습니다.

Magisk version 선택.

Magisk 버전을 선택합니다.

  • Magisk에는 WSA에서 실행되지 않는 버그가 있습니다. 따라서 해당 버그가 해결된 Magisk v24 이상을 사용하시기 바랍니다.
GApps 설치 여부 선택.

GApps 설치 여부를 선택합니다. Amazon Appstore 대신 Google Play 스토어 서비스 이용을 위해 반드시 필요합니다. (MindGapps 단일 제공)

  • OpenGApps는 Android 12L 및 13용으로 빌드된 버전을 출시하지 않았습니다. 따라서 현재 WSA 빌드 단계에서 MindTheGapps 및 OpenGApps 중 하나를 선택할 수 없습니다.
Amazon Appstore 제거 여부 선택.

Amazon Appstore 유지(제거) 여부를 선택합니다.

빌드 후 파일 압축 여부 선택.

Magisk 및 GApps 등 통합 작업 후 WSA 빌드 파일의 압축 여부를 선택합니다.

Compress format 선택.

압축 파일의 형식을 선택합니다.

  • 현재 Windows 11에서도 7z 압축 포맷을 기본으로 지원하고 있으므로 7-ZIP 압축 해제를 위해 별도 타사 도구가 필요하지 않습니다.

STEP 04. MagiskOnWSALocal WSA 빌드 수행

빌드 스크립트 수행.

MagiskOnWSA 도구에서 구성 설정이 완료되면 WSA 빌드 작업이 시작됩니다.

빌드 스크립트 수행.

Android용 Windows 하위 시스템 빌드 통합 작업을 위한 파일 다운로드 등이 진행되며, 인터넷 및 시스템 환경에 따라 시간은 다소 소요될 수 있습니다.

작업 결과 확인.

작업이 완료되면 다음 경로에 빌드된 WSA 설치 파일이 저장됩니다.

/home/<user_id>/MagiskOnWSALocal/output

다만 선택한 Dev Channel의 WSA 릴리스 버전이 이상합니다.

파일 탐색기에서 WSL 경로 이동 후 WSA 파일 확인.

파일 탐색기를 통해 확인해봐도 WSL2 Android용 Windows 하위 시스템 2309.40000.8.0 버전이 아닌 2305.40000.6.0 버전으로 생성된 것을 확인할 수 있습니다.

※ 참고 : 만약 안정화 버전의 WSA 설치를 원할 경우 “STEP 05” 단계는 건너 뛰고 WSA 설치 또는 업데이트 수행 단계로 넘어가시기 바랍니다.

04 v2309.40000.2.0 ~ 8.0 빌드 방법 (build.sh 수정 작업)

WSA 빌드 스크립트 실행.

WSA 빌드 구성 단계에서 실수한 것인지 테스트를 위해 동일한 과정을 거쳐 다시 수행해봅니다.

  • Generating WSA download link : arch=x64 release_type=Insider Fast
  • WSA Build Version=2309.40000.8.0

선택한 빌드 버전은 정확하지만 결과물은 여전히 동일합니다.

이러한 문제는 앞서 언급했던 것처럼 WSA의 모든 이미지가 다시 EROFS에서 EXT4로 전환 되었기 때문에 발생하는 것으로 보입니다.

STEP 01. MagiskOnWSALocal 다운로드 항목 제거

MagiskOnWSALocal 다운로드 폴더의 모든 항목 제거.

해당 문제를 해결하기 위해 WSA 다운로드 및 Build.sh 스크립트 수정 작업이 필요합니다.

먼저 WSL2(Ubuntu-20.04)에서 MagiskOnWSALocal 다운로드 폴더 내의 모든 항목을 삭제합니다.

파일 탐색기에서 WSL 파일을 관리하고 싶다면 탐색기 왼쪽 창에서 [Linux] 항목을 선택하고, 작업을 수행한 Linux 배포판 폴더를 선택하거나, 주소 표시줄에 다음 경로를 입력하여 이동할 수 있습니다.

\\wsl$\

WSL2에서 MagiskOnWSALocal 다운로드 폴더 경로는 다음과 같습니다.

/home/<user_id>/MagiskOnWSALocal/download

STEP 02. 최신 버전 WSA Msixbundle 파일 다운로드

최신 버전 or 설치 원하는 버전의 WSA msixbundle 파일 다운로드.

Android용 Windows 하위 시스템 파일을 다운로드 하는 방법 (원본 – Amazon Appstore)

  • Microsoft Store Generation Project 사이트에서 WSA Product ID “9P3395VX91NR”를 이용하여 검색 후 WSA 파일을 다운로드 할 수 있습니다. (Fast 옵션 선택)
  • 또는 @MustardChef 아카이브 파일을 제공하고 있으므로 링크를 통해 다운로드 할 수 있습니다.

WSA 버전 2309.40000.4.0 ~ 7.0에서 안드로이드 앱 실행 시 스크롤 막대가 보이지 않는 버그가 있는 것으로 보고되어, 여기서는 v2309.40000.2.0 파일을 다운로드하여 진행했으니 참고하시기 바랍니다.

현재 이 글을 작성하는 시점의 가장 최신 버전은 2309.40000.8.0 입니다.

STEP 03. 최신 버전 WSA Msixbundle 파일 이름 변경

파일 탐색기에서 다운로드한 WSA msixbundle 파일을 WSL 다운로드 폴더로 이동.

다운로드한 WSA 파일을 다운로드 폴더로 이동합니다.

WSA msixbundle 파일 이름을 'wsa-WIF.zip' 이름으로 변경.

WSA 파일을 선택하고 F2 키를 눌러 파일 이름을 “wsa-WIF.zip”으로 변경합니다. 이때 확장명을 변경하면 파일을 사용할 수 없게 될 수도 있다는 주의 메시지가 표시됩니다.

아무런 문제가 없으니 [예(Y)]를 선택하여 변경합니다.

MagiskOnWSALocal 빌드 스크립트 수행 시 에러 발생 (erofs)

이제 “build.sh” 스크립트 파일을 수정해야 합니다.

만약 수정 작업 없이 빌드 수행 시 위와 같이 “failed to read erofs supef block” 오류가 발생합니다.

STEP 04. MagiskOnWSALocal ‘build.sh’ 스크립트 수정

scripts/build.sh 스크립트 파일 수정.

“MagiskOnWSALocal\scripts” 디렉터리로 이동 후 “build.sh” 스크립트를 vi 편집기로 수정합니다.

vi /home/<user_id>/MagiskOnWSALocal/scripts/build.sh

스크립트 파일을 다음과 같이 수정합니다. 기존 코드(-)를 새로운 코드(+)로 변경하시면 됩니다.

Line+ / –Code
651if [[ “$WSA_MAJOR_VER” -ge 2304 ]]; then
+if [[ “$WSA_MAJOR_VER” -ge 2304 && “$WSA_MAJOR_VER” -lt 2306 ]]; then
675if [[ “$WSA_MAJOR_VER” -lt 2304 ]]; then
+if [[ “$WSA_MAJOR_VER” -lt 2304 || “$WSA_MAJOR_VER” -ge 2306 ]]; then
909if [[ “$WSA_MAJOR_VER” -ge 2304 ]]; then
+if [[ “$WSA_MAJOR_VER” -ge 2304 && “$WSA_MAJOR_VER” -lt 2306 ]]; then
scripts/build.sh 스크립트 파일 수정.

먼저 다음 명령을 입력하여 편집기에 라인 번호를 표시하도록 설정합니다.

:set number
scripts/build.sh 스크립트 파일 수정.

이제 위의 표를 참고하여 해당 라인의 코드를 수정합니다.

예를 들어 “651” 라인의 코드를 수정한다고 가정해봅니다. 라인 이동은 숫자를 입력하고 Shift + G 키를 누르면, 입력한 숫자에 해당하는 행으로 이동하게 됩니다.

라인 이동 후 D 키를 두 번 눌러 기존 코드 줄을 제거하고 커서를 “650” 라인으로 이동 후 O 키를 눌러 다음 줄에 코드를 입력합니다.

참고로 vi 편집기에서 커서 이동은 아래 방향 J 키, 위 방향은 K 키를 이용합니다.

scripts/build.sh 스크립트 파일 수정.

651번 라인 코드를 위와 같이 수정했다면, 동일한 과정으로 675, 909번 라인의 코드를 수정하고 저장합니다.

참고로 vi 편집기에서 입력 모드(insert mode)에서 명령 모드(command mode)로 변경하려면 ESC 키를 누르면 됩니다.

명령 모드에서 다음 명령을 입력하여 변경 내용을 저장하고 편집기를 종료할 수 있습니다.

:wq!

※ build.sh 스크립트 파일 수정이 어려우신 분은 첨부파일을 다운로드하여 WSL2에서 기존 MagiskOnWSALocal 스크립트 파일 위치에 덮어쓰기 하시기 바랍니다.

STEP 05. MagiskOnWSALocal 빌드 작업 수행

MagiskOnWSALocal 빌드 시 최신 or 사용자가 선택한 버전으로 WSA 파일 생성 완료.

모든 단계를 완료하고 “run.sh” 스크립트를 다시 실행하면, WSA 빌드 시 사용자가 추가한 WSA msixbundle 파일 버전에 맞게 Magisk 및 GApps 통합 작업이 정상적으로 완료됩니다.

05 WSA 설치 또는 업데이트 수행

파일 탐색기에서 WSL2의 MagiskOnWSALocal output 폴더 경로로 이동 후 WSA 압축 해제.

키보드 단축키 Win + E 키를 눌러 파일 탐색기를 열고 생성된 WSA 설치 파일을 확인합니다.

앞서 언급했던 것처럼 탐색기 왼쪽 창에서 “Linux” 항목을 선택하거나, 주소 표시줄에 “\\wsl$\” 경로를 입력하고 Enter 키를 눌러 MagiskOnWSALocal 빌드 시 사용한 WSL2 리눅스 배포판으로 이동할 수 있습니다.

참고로 Windows 11 기본 압축 프로그램으로 압축 해제 시, 예를 들어 탐색기 상단의 [압축 풀기] 버튼을 눌렀을 때 압축 해제 중 오류가 발생한다면 7-Zip 프로그램을 다운로드하여 사용해보시기 바랍니다.

WSA 압축 해제 후 "Run.bat" 원 클릭 스크립트 파일 실행.

생성된 WSA 파일의 압축을 해제하고 “Run.bat” 파일을 두 번 클릭합니다.

※ WSL2 경로에서 파일 실행 시 오류가 발생할 수 있으므로, 압축 해제 시 Windows 11 저장 경로로 지정하시기 바랍니다.

"Run.bat" 원 클릭 설치 or 기존 WSA 업데이트 수행.

원 클릭 스크립트로 Android용 Windows 하위 시스템 설치가 이루어집니다.

만약 MagiskOnWSA 기존 사용자라면 이전 버전에서 사용 중인 사용자 데이터를 보존하면서 새 버전으로 업데이트가 가능합니다.

Windows Subsystem for Android 앱 실행 후 버전 확인.

설치 or 업데이트 완료 후 Android용 Windows 하위 시스템을 실행하여 버전을 확인합니다.

Windows Subsystem for Android 실행 및 Google Play 스토어 실행 완료.

설치 완료 후 Google Play 스토어도 정상적으로 동작하는 것을 확인할 수 있습니다. 또한 이전 버전 WSA에서 설치된 Android 앱 등 사용자 데이터는 보존되어 있습니다.

마치며

MagiskOnWSALocal 도구를 사용하여 WSA 빌드 작업 시 사용자가 직접 GApps 통합 작업 등 번거로운 과정 없이 간편하게 설치 파일을 생성하실 수 있습니다.

다만 본문에서 살펴본 것처럼 현재 해당 프로젝트 업데이트가 원활히 이루어지지 않고 있어, 소소한 오류가 발생할 수 있습니다.

그러나 관련 프로젝트 커뮤니티를 통해 여러 가지 이슈가 해결되고 있으므로 MagiskOnWSALocal WSA 빌드 및 설치 중 발생할 수 있는 문제 대부분이 해결이 가능합니다.

Leave a Comment