티스토리 뷰

윈도우 로고

HowTo - Windows 11 Android 윈도우 하위 시스템에 Google Play 스토어 설치 (GAPPS 패키지 설치)

 지난 포스팅에서 살펴본 Windows Subsystem for Android with GAPPS(Google Play 스토어) 설치 방법은 사용자 수정(사전 정의)된 패키지 파일을 이용하여 설치는 간편하며, 정확히 권장되지는 않지만 훨씬 쉽고 사용하기 쉽습니다.

 

 만약 Microsoft 공식 WSA 패키지 이용하여 GAPPS를 직접 설치하려는 경우 작업 과정이 상당히 복잡하기 때문에 사전에 이를 적용한 사용자 정의 WsaPackage를 설치하지 않고 직접 설치하는 것이 그만한 가치가 있는지 의문이 들수도 있습니다.

 

 그러나 혹시 모를 악성 코드 등 보안 위협으로부터 내 PC를 보호하기 위한 최선은 GAPPS 패키지를 직접 설치하여 PC에서 Android 윈도우 하위 시스템과 함께 Google Apps 및 Play 스토어를 얻는 것이 좋습니다. 

 

 물론 사전에 수정된 사용자 지정 패키지가 꼭 위험하다는 것은 아닙니다. 많은 분들이 이를 사용하고 검증하였기 때문이죠. 다만 나는 그 과정이 복잡하더라도 100% 안전한 것을 선택하고 싶다면 공식 WSA 설치 및 GAPPS 패키지를 적용해보시기 바랍니다.

보안이 우려된다면 공식 WSA 설치 및 GAPPS 패키지 적용하기

 시작하기 앞서 Windows 11 환경에서 Windows Subsystem for Android 구성을 한 번이라도 진행했다면 '가상 머신 플랫폼' 기능 켜기, 'WSA Msixbundle' 다운로드, 'ADB' 툴 다운로드 등 중복된 단계를 건너 뛰셔도 됩니다.

 

 

 

1 사전 준비 및 필요 패키지 다운로드

 Android 윈도우 하위 시스템의 MSIX 패키지가 이미 있는 경우 사용할 수 있으며, 그렇지 않은 경우 아래 단계에 따라 Microsoft 서버에서 공식적으로 패키지를 다운로드 합니다.

 

가상 머신 플랫폼

 UEFI 펌웨어에서 장치의 가상화가 활성화된 상태에서 윈도우 [시작] 버튼을 누른 뒤 "Windows 기능 켜기/끄기"를 검색하여 Windows 기능 창을 엽니다. 목록에서 "가상 머신 플랫폼" 옵션 체크 박스를 선택한 다음 [확인] 버튼을 클릭합니다.

 

 Amazon Appstore를 사용할 수 있는 Windows Subsystem for Android 설치를 한 번이라도 진행하셨다면 이미 활성화된 상태이므로 이 단계는 건너뛰셔도 됩니다.

 

store.rg-adguard.net

 "store.rg-adguard.net" 웹 사이트를 열고 "Online link generator for Microsoft Stroe" 섹션을 찾습니다.

 

9p3395vx91nr

 "ProductId"를 선택하고 Windows Subsystem for Android의 Microsoft Store 제품 아이디인 "9P3395VX91NR"을 입력합니다. 그런 다음 텍스트 입력 상자 옆의 드롭다운 메뉴에서 "Slow"를 선택하고 체크 버튼 [✓]을 클릭합니다.

 

Msixbundle 다운로드

 검색 결과 목록에서 스크롤을 아래로 내려 용량이 약 "1.2GB"".msixbundle" 파일을 찾습니다. 링크를 클릭하여 MSIX Bundle 파일을 다운로드합니다.

 

안전하게 다운로드할 수 없습니다.

 Microsoft Edge 등 일부 브라우저에서는 링크를 클릭해도 파일이 다운로드되지 않고 경고 메시지가 표시될 수도 있습니다. Microsoft 공식 업데이트 서버에서 다운로드 받는 것으로 아무런 문제가 없으며 Edge 브라우저를 예로 들면, 점 3개 모양의 [더보기] 버튼을 클릭한 뒤 [유지] 버튼을 클릭합니다.

 

그래도 계속

 "이 파일을 안전하게 다운로드할 수 없습니다" 경고 메시지가 표시되면 [그래도 계속] 버튼을 클릭하여 다운로드를 진행합니다.

 

 

2 Windows Subsystem for Android 파일 관리

 Windows 11에서 공식 WSA 패키지를 사용하여 Google Play 스토어를 설치하는 데 필요한 파일을 추출하여 정리하도록 합니다. 참고로 여기서는 'WinRAR' 프로그램(평가판)을 이용하여 MSIX Bundle 파일을 열었으며, 그 외에도 무료로 이용할 수 있는 7-ZIP 프로그램 등 번들 파일을 열 수 있는 별도의 프로그램이 필요합니다.

 

Winrar Msixbundle

 이제 다운로드 폴더로 이동하여 msixbundle 파일을 마우스 오른쪽 버튼으로 클릭하고 WinRAR 프로그램으로 엽니다. PC에 WinRAR이 없는 경우 7-ZIP 등 번들 파일을 열 수 있는 다른 프로그램을 이용할 수 있습니다.

 

 번들 파일이 열리면 현재 시스템의 CPU 아키텍처와 일치하는지 확인합니다. 참고로 본문에 사용된 버전(1.7.32815.0)에서는 "WsaPackage_1.7.32815.0_x64_Release-Nightly.msix" 파일이 있습니다. (CRC EF1D6610)

 

WindowsSubsystemforAndroid 폴더

 일치하지 않는 경우 원하는 버전을 다시 다운로드하고, 일치할 경우 추출한 번들 파일을 저장할 대상으로 "WindowsSubsystemforAndroid" 라는 새 폴더를 생성합니다. 폴더 이름은 사용자가 식별하기 쉬운 이름으로 지정하셔도 됩니다.

 

일부 파일 제외

 이제 번들 파일에서 다음 폴더 및 파일을 제외한 모든 파일을 선택합니다.

 

  • AppxMetaData (파일 폴더)
  • [Content_Types].xml (XML 문서)
  • AppxBlockMap.xml (XML 문서)
  • AppxSignature.p7x (P7X 파일)

 참고로 작업을 쉽게하려면 WinRAR에서 키보드 단축키 Ctrl + A 키를 눌러 모든 파일을 선택한 다음 위 4가지 폴더 및 파일을 Ctrl 키를 누르고 선택하여 선택을 취소할 수 있습니다.

 

 선택한 모든 파일을 이전에 만든 새 폴더(C:\WindowsSubsystemforAndroid)에 추출하기 위해 마우스 오른쪽 버튼을 클릭하고 [Extract to a specified floder] 옵션을 선택합니다.

 

압축 해제

 WinRAR에서 "Extraction path and options" 창이 열리면 "Destination path" 또는 아래 폴더 트리 아이콘에서 새롭게 생성한 폴더를 선택한 다음 [확인] 버튼을 클릭하여 대상 폴더에 4가지 파일 및 폴더를 제외한 모든 파일을 추출(복사)합니다.

 

압축 해제 확인

 본문에서 설명한 것처럼 C 드라이브에 "WindowsSubsystemforAndroid" 폴더를 생성하여 파일을 추출하셨다면 위 이미지와 같이 파일이 정상적으로 해당 경로에 저장되었는지 확인합니다.

 

 

3 Github WSAGA 스크립트 다운로드

 ADeltaX에서 개발한 WSAGA 스크립트를 이용하여 Microsoft 공식 서버에서 다운로드한 WSA 패키지에 GAPPS(Google Play 스토어)를 포함하도록 이미지 파일을 편집할 수 있습니다.

 

WSAGA 스크립트 다운로드

 Github WSAGA 스크립트 페이지로 접속하여 [Code] 버튼을 클릭하고 [Download ZIP] 버튼을 눌러 스크립트 파일을 다운로드합니다.

 

Winrar WSAGA

 다운로드한 "WSAGAScript-main.zip" 파일을 압축 해제합니다. 이때 그냥 압축만 해제하는 것이 아니라 WinRAR 프로그램을 이용하여 압축 파일을 열고 "WSAGAScript-main" 폴더 안에있는 파일을 모두 선택하여 마우스 오른쪽 버튼을 누른 뒤 [Extract to a specified folder] 옵션을 사용하여 지정된 폴더에 압축을 풉니다.

 

GAPPSforWSA 폴더

 여기서는 Extraction path options 창에서 미리 만들어둔 C 드라이브의 "GAPPSforWSA" 폴더를 지정하여 [확인] 버튼을 클릭합니다. 대상 폴더는 마찬가지로 사용자가 식별하기 쉬운 이름으로 폴더명을 지정하셔도 됩니다.

 

압축 해제 확인

 압축을 해제한 뒤 해당 폴더를 살펴보면 "#GAPPS", "#IMAGES", "misc" 폴더 및 각종 스크립트 파일이 보입니다.

 

 

4 Open GApps 패키지 다운로드

 GAPPS 패키지를 다운로드하여 MSIXBundle 파일에서 추출한 이미지 파일을 삽입하여 Google Play 스토어가 포함된 WSA 패키지로 편집할 수 있습니다.

 

GAPPS 다운로드

 이제 Windows Subsystem for Android 설치를 위한 GAPPS를 다운로드합니다. OpenGApps 링크를 클릭하여 다음과 같이 옵션을 지정합니다.

 

  • Platform : x86_64
  • Android : 11.0
  • Variant : pico

 옵션을 지정한 다음 [다운로드] 아이콘을 클릭합니다.

 

Download will start

 다운로드 버튼을 클릭하면 'sourceforge.net' 사이트로 Redirection 되며 몇 초만 기다리면 다운로드가 자동으로 시작됩니다.

 

GAPPSforWSA 폴더에 저장

 다운로드한 Open GAPPS 파일은 WSAGA 스크립트 파일이 있는 "GAPPSforWSA" 폴더로 이동하여 "#GAPPS" 폴더에 저장합니다. 이때 압축 파일은 추출할 필요가 없습니다.

 

.img 파일 복사

 이제 "WindowsSubsystemforAndroid" 폴더에서 다음 4개의 이미지 파일을 복사합니다.

 

  • product.img
  • system.img
  • system_ext.img
  • vendor.img

 

IMAGES 폴더 붙여넣기

 복사한 4개의 이미지 파일을 "GAPPSforWSA" 폴더로 이동하여 "#IMAGES" 폴더에 붙여넣기 합니다.

 

 

5 WSA 패키지 수정을 위한 WSL 설치 및 실행

 모든 패키지 파일 편집 작업이 끝났다면 Windows 터미널에서 Linux(Windows Subsystem for Linux) 셸을 이용하여 Root 권한을 가진 Kernel로 변경 및 편집된 파일을 패키징할 수 있습니다.

 

선택적 기능

 먼저 Windows 11 PC에서 WSL을 사용하지 않고 있다면, 시스템에 "Linux용 Windows 하위 시스템"을 설치합니다. 키보드 단축키 Win + S 키를 눌러 "선택적 기능" 검색 후 검색 결과의 [선택적 기능] 앱을 클릭합니다.

 

기타 Windows 기능

 Windows 설정의 앱 > 선택적 기능 페이지로 접속되며, 아래로 스크롤하여 "관련 설정" 섹션에서 "기타 Windows 기능" 옵션을 선택합니다.

 

Linux용 Windows 하위 시스템

 접근 방법은 다르지만 가상 머신 플랫폼 활성화 단계와 동일하게 "Windows 기능 켜기/끄기" 새 창이 열립니다. 목록에서 "Linux용 Windows 하위 시스템" 체크 박스를 선택한 다음 [확인] 버튼을 클릭합니다.

 

다시 시작

 이제 Linux용 Windows 하위 시스템 이하 WSL이 PC에 설치됩니다. PC를 다시 부팅해야 한다는 메시지가 표시되면 [다시 시작(N)] 버튼을 클릭하여 재부팅합니다.

 

Microsoft Store WSL 설치

 참고로 WSL은 Microsoft Store를 통해서도 설치할 수 있으며, 관리자 권한으로 실행한 PowerShell에서 "wsl --install" 명령어로도 설치가 가능합니다.

 

Windows 터미널(관리자)

 시스템이 다시 시작되면 키보드 단축키 Win + X 키를 눌러 [Windows 터미널(관리자(A))]를 선택합니다.

 

터미널 Ubuntu

 Windows 터미널 창에서 [V] 버튼을 클릭한 뒤 [Ubuntu]를 선택합니다. 참고로 설치한 WSL 배포판에 따라 OpenSUSE, Debian 등 이름은 다를 수 있습니다.

 

 

6 Google Apps를 포함하도록 WSA 패치

 GApps로 WSA를 편집 작업을 수행합니다. Github에서 다운로드한 WSAGA Script 수행(*.img)하기 위해서는 Root Access 권한이 필요하며, Kernel 파일을 교체하여 권한을 얻을 수 있습니다.

 

root 권한

 GAPPS로 WSA를 수정하기 위해서 Root 권한이 필요합니다. WSL 터미널 창에서 "sudo su" 명령을 입력하고, 비밀번호를 입력한 뒤 Root Access 권한을 부여합니다.

 

GAPPSforWSA 폴더 이동

 이제 "GAPPSforWSA" 폴더로 경로를 이동합니다. "cd /mnt/c/GAPPSforWSA" 명령어로 이동할 수 있으며, WSL의 경로는 /mnt/ 이후 드라이브 문자 및 폴더 구조를 그대로 따릅니다.

 

 즉, C 드라이브에 있는 GAPPSforWSA 폴더는 Windows에서는 C:\GAPPSforWSA로 표현되지만, WSL에서는 /mnt/c/GAPPSforWSA가 됩니다.

 

lzip unzip 설치

 이제 "apt install lzip unzip" 명령을 입력하여 WSA 수정 작업에 필요한 lzip 및 unzip 패키지를 설치합니다. 만약 위와 같이 패키지 설치 중 사용할 수 없는 패키지 오류 메시지가 표시되면, 업데이트를 수행합니다.

 

오류 발생시 업데이트

 WSL 패키지 업데이트는 "sudo apt-get update -y" 명령어로 수행할 수 있습니다.

 

업데이트 완료

 패키지 업데이트 수행이 완료되면 "Reading package lists.. Done" 메시지와 함께 프롬프트가 떨어집니다.

 

lzip 설치 완료

 이제 정상적으로 LZIP 및 UNZIP 패키지 설치가 이루어집니다.

 

dos2unix 설치

 WSA 수정 작업에 필요한 "dos2unix"를 설치합니다. "atp install dos2unix" 명령을 사용하여 설치를 진행합니다.

 

WSA 이미지 수정

 모든 준비가 완료되면 이제 WSA 이미지를 수정할 차례입니다. 터미널 창에서 다음 명령어(스크립트)를 순서대로 하나씩 입력하여 실행합니다.

 

  • dos2unix ./apply.sh
  • dos2unix ./extend_and_mount_images.sh
  • dos2unix ./extract_gapps_pico.sh
  • dos2unix ./unmount_images.sh
  • dos2unix ./VARIABLES.sh

이제 스크립트를 실행합니다. 다음과 같은 순서대로 입력하고 실행합니다.

 

  • ./extract_gapps_pico.sh
  • ./extend_and_mount_images.sh
  • ./apply.sh
  • ./unmount_images.sh

extract_gapps_pico 스크립트 실행
./extract_gapps_pico.sh 실행
GApps folder ready
GApps folder ready 메시지 확인
extend_and_mount_images 스크립트 실행
./extend_and_mount_images.sh 실행
Images mounted
Images mounted 메시지 확인
apply.sh 스크립트 실행
./apply.sh 실행 및 Apply complted 메시지 확인
unmount_images 스크립트 실행
./unmount_images.sh 실행
Unmounting completed
Unmounting completed 메시지 확인

 이제 콘솔 작업이 완료되었으며 다음과 같이  편집된 이미지 파일을 Windows Subsystem for Android 파일에 적용합니다.

 

수정된 이미지 복사

 "GAPPSforWSA" 폴더로 이동하여 "#IMAGES" 안에 있는 다음 4개 이미지 파일을 복사합니다.

 

  • product.img
  • system.img
  • system_ext.img
  • vendor.img

 이제 "WindowsSubsystemforAndroid" 폴더로 이동하여 복사한 모든 이미지 파일을 붙여넣습니다.

 

WindowsSubsystemforAndroid 폴더 덮어쓰기

 "WindowsSubsystemforAndorid" 폴더에 붙여넣기 할 때 대상 폴더에 동일한 파일이 존재한다는 메시지가 표시됩니다. "대상 폴더의 파일 덮어쓰기(R)" 옵션을 선택하여 복사한 파일로 대체합니다.

 

커널 파일 복사

 다음으로 "GAPPSforWSA" 폴더로 이동하여 "misc" 폴더 안에 있는 "kernel-x86_64" 파일을 복사합니다.

 

커널 원본 이름 변경

 "WindowsSubsystemforAndroid" 폴더로 이동하여 "Tools" 폴더에 있는 "kernel" 파일 이름을 "kernel_bak"으로 변경합니다.

 

커널 붙여넣기

이제 복사한 "kernel-x86_64" 파일을 동일한 위치에 붙여넣고, 동일한 방법으로 "kernel-x86_64" 파일 이름을 "kernel"로 변경합니다.

 

커널 이름 변경 완료

 "C:\WindowsSubsystemforAndroid\Tools" 폴더에서 작업된 결과물은 "kernel(변경 전 파일명 kernel_x86_64)""kernel_bak(변경 전 파일명 kernel)" 파일입니다. 혼동하지 않도록 주의합니다.

 

 

7 WSA with Google Play 스토어 설치

 이제 Windows 11에서 Android 앱을 쉽게 설치하고 Google 계정을 이용하여 로그인할 수 있도록 Play 스토어를 설치할 수 있습니다. 계속 진행하려면 다음 단계를 진행하세요.

 

개발자용 설정

 먼저 Windows 11에서 WSA 설치를 위해 개발자 모드를 활성화해야 합니다. 단축키 Win + I 키를 이용하여 설정 앱을 열고 "업데이트 및 보안 > 개발자용"을 클릭합니다.

 

외부 앱 설치 허용

 "개발자 모드" 토글 스위치를 [켬]으로 변경하면 "개발자 기능 사용" 관련 주의 팝업 메시지가 표시됩니다. [예] 버튼을 클릭합니다.

 

개발자 모드 켬

 개발자 모드는 느슨한 파일을 포함하여 모든 원본의 앱을 설치할 수 있으며, Android용 Windows 하위 시스템을 구동할 때 Google Play 스토어를 사용할 수 있습니다. 또한 ADB 도구를 사용하여 APK 파일을 사용자가 직접 사이드로드할 때 필요합니다.

 

수정된 WSA 패키지 설치

 Windows 터미널에서 [V] 버튼을 클릭하여 "Windows PowerShell"을 선택하고, 다음 명령을 실행하여 수정된 Android용 Windows 하위 시스템을 설치합니다.

 

Add-AppxPackage -Register C:\WindowsSubsystemforAndroid\AppxManifest.xml

 참고로 경로는 본문에서 예시로 설명드리며 새 폴더로 생성한 "WindowsSubsystemforAndroid"이며, 만약 다른 경로를 지정하셨다면 그에 맞는 경로로 수정하여 설치하시기 바랍니다.

 

설치 완료

 명령 실행 시 WSA 배포 작업이 진행되며, 수정된 Android용 Windows 하위 시스템이 PC에 설치됩니다.

 

WSA 실행

 설치가 완료된 후 윈도우 [시작] 버튼을 누르고 "Windows Subsystem for Android" 앱을 실행합니다.

 

WSA Developer mode 켬

 Windows Subsystem for Android 앱 설정에서 "Developer mode" 토글 스위치를 [켬]으로 변경합니다.

 

WSA 실행

 상단의 [Files]를 클릭하여 PC에서 Android용 Windows 하위 시스템을 시작합니다. PC 성능에 따라 WSA 구동에 소요되는 시간은 다를 수 있습니다.

 

파일 앱 닫기

 잠시 기다린 후 "파일" 앱이 열리면 창을 닫고, 기존에 사용중이던 ADB 툴을 실행하거나 새롭게 ADB 툴을 다운로드 합니다. ADBKit 또는 ADB and Fastboot 등 다양한 프로그램 중 원하는 도구를 선택하여 다운로드 후 실행합니다.

 

WSA IP Address 복사

 WSA 설정 화면으로 돌아와 "IP address" 항목의 [Copy] 버튼을 클릭하여 IP 주소를 클립 보드에 복사합니다.

 

ADB 작업 수행

 이제 Windows PowerShell로 돌아와 다음 명령을 차례대로 입력하여 Root Access 권한을 획득한 뒤 Permissive Mode로 변경을 완료합니다.

 

  • .\adb connect 172.22.16.112(IP address 변경)
  • .\adb shell
  • su
  • setenforce 0

 

8 Windows 11에서 Google Play 스토어 실행

 이제 Google Play 스토어를 실행하고 Google 계정을 이용하여 로그인할 수 있습니다. 또한 스토어에서 직접 Android 앱을 설치하여 사용할 수 있습니다.

 

Play 스토어 실행

 이제 키보드 단축키 Win + S 키를 누르고 "Play 스토어"를 검색한 다음 검색 결과에서 "Play 스토어" 앱을 클릭하여 실행합니다.

 

Play 스토어 로그인

 Play 스토어 앱이 열리면 [로그인] 버튼을 클릭하고 사용하려는 Google 계정으로 로그인합니다.

 

Play 스토어 실행 성공

 Google Play 스토어에 로그인하면 기본적으로 연락처, 캘린더 이벤트, 브라우저 기록 등을 포함하여 Google 데이터를 Windows에서 동기화하는 'Google 동기화' 역시 활성화됩니다. 로그인에 성공하면 Play 스토어를 닫고 다음 단계에 따라 원래 커널을 복원해야 합니다.

 

 

9 Android용 Windows 하위 시스템 Kernel 복원

 모든 작업이 완료되면 로그인한 뒤 Play 스토어 앱을 종료하고 원래 Kernel 파일로 복원해야 합니다. 이를 위해 현재 실행되고 있는 Windows Subsystem for Android 설정 창을 열고 종료합니다.

 

WSA Turn off

 Windows Subsystem for Android 설정 화면에서 "Turn off Windows Subsystem for Android" 옵션의 [Turn off] 버튼을 클릭하여 WSA의 백그라운드 실행을 중지합니다. 이때 로딩 이미지가 잠시 표시되며, 이 표시가 사라질 때까지 기다려야 합니다.

 

커널 이름 원복

 WSA 백그라운드 프로세스 종료 후 C 드라이브의 "WindowsSubsystemforAndroid" 폴더로 이동하여 "Tools" 폴더를 엽니다. 여기에서 ①kernel 파일은 ①kernel_root, ②kernel_bak 파일은 ②kernel로 이름을 변경합니다.

 

커널 이름 원복 확인

 위 화면과 같이 커널 파일 이름을 변경하여 기존 커널 파일로 복원했다면, 이제 작업 중이던 모든 창을 닫을 수 있습니다. 커널 파일을 원복한 이후 시스템을 다시 시작하는 것이 좋습니다.

 

Google Play 스토어 앱 설치 성공

 이제 Google 계정으로 로그인한 상태에서 Google Play 스토어를 사용할 수 있습니다. Google Play 스토어에서 공식적으로 앱을 다운로드할 수 있을 뿐만 아니라 Google Play 서비스에 종속된 앱을 사용할 수도 있습니다.

 

 확실히 사용자 정의(수정)된 WSA 패키지 파일을 이용하는 것보다 까다롭고 절차도 복잡합니다. 그러나 Microsoft 공식 WSA 패키지 파일을 이용하여 GAPPS를 적용한만큼 혹시 모를 보안 우려는 덜 수 있습니다.


 다만 본문에 소개된 작업 절차를 도저히 수행하기 어렵다고 느끼시는 분들은 다음 글을 참조하여 사전 정의된 WSA 패키지를 이용하여 간편하게 Windows 11에서 Google Play 스토어가 포함된 Android용 Windows 하위 시스템을 설치할 수 있습니다.

 

[IT/How to] - 윈도우11 WSA Google Play스토어 설치 방법 (GAPPS 및 스토어 사전 설치 버전)

 

윈도우11 WSA Google Play스토어 설치 방법 (GAPPS 및 스토어 사전 설치 버전)

HowTo - Windows 11 WSA Amazon 대신 Google Play 스토어 설치 및 사용하기  Windows 11에서 Andorid 앱을 직접 설치하고 사용할 수 있는 기능을 발표했을 때 모든 사람이 Andorid 앱, 게임 등을 컴퓨터에서 직..

forbes.tistory.com

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함