Windows 11 안드로이드 어플리케이션 구동하기

얼마전 Windows 11이 출시되기 이전, 초기 버전에서는 안드로이드 앱 구동 지원이 안될 것이라는 뉴스가 있었습니다. 실제로 얼마전 출시된 Windows 11 정식 버전에서는 해당 지원이 빠져 있었습니다.

하지만 바로 몇 시간전, Windows Insider Preview 버전에서 안드로이드 어플리케이션을 구동할 수 있도록 베타 지원이 시작되었습니다. 아직 정식버전은 아니지만, 쓸만한 것일지 한번 설치해보고, 어플리케이션이 잘 열리는지 아주 간단히 테스트해보았습니다.

키워드: Windows 11 안드로이드, 윈도우11 안드로이드, Windows Subsystem for Android, WSA

요구 사항

아래 적힌 요구사항 중 “미국이어야 함” 조건은, Windows Store에서 앱을 다운로드하는데 필요한 조건입니다. 어플리케이션을 수동으로 설치하는 방법을 이용하면 미국으로 바꾸지 않으셔도 됩니다. 여기서는 국가가 한국인 설정 상태에서 미국으로 바꾸지 않고 진행하겠습니다. (그러면 어플리케이션은 adb를 이용해 수동으로 설치해야 합니다.)

  • Windows 11 Insider Preview (Build 22000.xxx) // 22000.282에서 테스트 완료
  • UEFI BIOS에서 가상화 기능 활성
  • PC의 지역이 미국이여야 하며 미국 Amazon 계정이 있어야 함
    → 이 부분의 경우 안드로이드 어플리케이션을 Microsoft Store에서 다운로드하는데만 필요함!
  • Windows 11 Insider Preview가 Beta 채널에 있어야 함 // Preview 채널에서 테스트 완료

먼저 Microsoft Store를 업그레이드하자(버전 22110.1402.6).

1. 먼저 Windows Store를 업그레이드하기 위해 MsixBundle 파일을 다운로드받아야 합니다.

2. 아래 사이트에 접속합니다.

https://store.rg-adguard.net/

3. 우측 드롭다운 메뉴의 “Slow“를 선택합니다.

4. 아래 Microsoft Store 링크를 입력하고 체크 표시를 클릭하여 검색합니다.
아래 링크는 “Microsoft Store” 앱을 설치할 수 있는 Microsoft Store 링크입니다. 재귀함수

https://www.microsoft.com/store/productId/9WZDNCRFJBMP

5. 검색 결과 리스트 아이템들 중 맨 아래에 있는 msixbundle 확장자의 파일을 다운로드합니다.
(미러도 제공해드립니다!)

맨 아래에 있는 76.02 MB의 msixbundle 파일.

6. 해당 파일을 설치하기 위해서 Powershell을 관리자 권한으로 Open합니다.

7. 다운로드받은 폴더를 C:\Users\jungin500\Downloads라고 했을 때, 아래와 같이 명령어를 입력하여 설치를 시작합니다.

> cd C:\Users\jungin500\Downloads\
> Add-AppxPackage .\Microsoft.WindowsStore_22110.1402.6.0_neutral___8wekyb3d8bbwe.Msixbundle

8. 마지막 명령어를 통해 설치가 시작됩니다.

다음으로 안드로이드 구동 패키지를 설치하자.

1. 이전 챕터와 비슷한 과정을 한번 더 진행합니다. 이번에는 1.2GB짜리 Msixbundle 파일을 설치합니다. 패키지에 들어있는 앱 이름은 “Windows Subsystem for Android™” 입니다.

안드로이드 구동을 위해 설치해야 하는 Windows App 패키지.
이렇게 생겼습니다.

2. 다운로드 위치는:

https://store.rg-adguard.net/

3. 그리고 Windows Store 링크는:

https://www.microsoft.com/store/productId/9P3395VX91NR

4. 마찬가지로 다운로드받아 아래 파일을 얻을 수 있습니다(Slow로 바꾸는 부분도 중요합니다!)(미러!)

MicrosoftCorporationII.WindowsSubsystemForAndroid_1.7.32815.0_neutral_~_8wekyb3d8bbwe.msixbundle

5. 동일하게 Powershell (관리자 실행)로 설치합니다. 그러면 시작 메뉴에 새로운 어플리케이션이 설치됩니다.

Android Studio는 제가 따로 설치한 것이니 무시해주세요.
안은 이렇게 생겼습니다.

사용법은?

사실상 저 안을 들여다보면 어디에도 어플리케이션을 구동할 수 있는 것이 있어 보이지는 않습니다. 여기서부터, 안드로이드 어플리케이션 설치 방법이 두 가지로 나뉩니다.

  1. 지역이 미국이라면 Windows Store 안에서 Amazon Store 로그인 후 Android 어플리케이션을 다운로드받으실 수 있으실 것입니다 (아마도… 테스트해보지는 않았습니다.)
  2. adb를 이용해서 수동으로 어플리케이션을 설치합니다.

사실상 아직까지는 adb를 이용하는 방법밖에 없는 것 같습니다. 추후에 더 좋은 방법을 찾을 수도 있을것 같습니다. 이제 adb를 이용해서 apk 파일 하나를 설치 진행해보도록 하겠습니다.

adb로 어플리케이션 설치하기

먼저 설치할 어플리케이션의 apk가 필요합니다. apk는 각종 다운로드받는 사이트들에서 찾을수 있지만, 불법인곳도 많고 정식 apk인줄 알고 받았는데 알고보니 멜웨어… 일수도 있으니, 실제 스마트폰에 설치된 apk를 가져오는게 더 안전할듯 합니다.

저는 원신 apk를 준비했습니다.

apk 파일 설치에 앞서, 먼저 adb를 구합니다. adb는 Android Studio를 설치하고 Android SDK의 platform-tools를 설치하면 그 안에 있습니다.. 여기에 관련된 내용이 소개되어 있습니다.

아까 Windows Subsystem for Android™ 앱을 들어가면 “개발자 모드”가 있습니다. 이부분을 활성화 시켜줍니다. 그리고 바로 아래 “개발자 설정 관리”에 들어감과 동시에 Android가 부팅됩니다.

ADB 주소가 같이 뜹니다. 어차피 켤때마다 바뀔테니, 공개해도 괜찮겠죠.

이 주소로 adb를 연결해봅니다. 아래 명령어를 이용해 네트워크를 이용한 ADB 연결을 진행합니다. (마치 이 과정은 안드로이드 스마트폰을 USB에 연결하는 것과 비슷합니다.)

adb connect 127.0.0.1:58526

분명 포트는 다를테니, 한번 꼭 확인해보세요. 저 명령어로 연결이 되면 connected to 127.0.0.1:58526 라고 표시됩니다. 이제부터는 adb install이나 adb shell 같은 명령어를 사용할 수 있게 됩니다. 어플리케이션을 설치하려면 apk 파일이 있는 곳으로 이동하여 아래와 같이 입력합니다.

adb install "Genshin Impact 2.2.0.apk"

이 명령어가 잘 실행되었다면, 무려 윈도우 시작 메뉴에 Android 어플리케이션 바로가기가 나타납니다.

와! Android 원신이다!

결론

실제로 실행되는 어플리케이션이 대부분이겠지만, 아직은 베타니까 안되는 경우도 많을 것입니다. 원신의 경우도 계속 튕겨서 재시도해봤는데, 세번째로 켜니까 이제 되네요. 이것저것 한번 테스트해볼수 있을 것 같습니다.

안드로이드 어플리케이션이 윈도우에서 구동 가능하다면 이점들이 많을것 같습니다. 당장 생각나는건 게임뿐이지만, 생산성 관련한 어플리케이션 등을 설치해서 다양하게 활용할 수 있을것 같습니다.

문제점이 있거나 더 좋은 방식이 있다면 댓글로 남겨 주세요.

참고자료

[해결됨] WSL2 CUDA undefined symbol: devicesetgpcclkvfoffset 문제 해결하기

[추가] 현재는 Fix된 이슈임

Windows 11 Insider Preview Build 22000.51이 나온 뒤에는 해결된 문제입니다. 아래 환경에서 테스트하였으니 apt 패키지와 드라이버를 업데이트 해보시기 바랍니다.

  • OS: Windows 11 Insider Preview Build 22000.51
  • Driver: NVIDIA 470.76
  • APT Package Version List
Inst libnvidia-container1 (1.4.0-1 NVIDIA CORPORATION [email protected]:1.0/bionic [amd64])
 Inst libnvidia-container-tools (1.4.0-1 NVIDIA CORPORATION [email protected]:1.0/bionic [amd64])
 Inst nvidia-container-toolkit (1.5.1-1 NVIDIA CORPORATION [email protected]:1.0/bionic [amd64])
 Inst nvidia-container-runtime (3.5.0-1 NVIDIA CORPORATION [email protected]:1.0/bionic [amd64])
 Inst nvidia-docker2 (2.6.0-1 NVIDIA CORPORATION [email protected]:1.0/bionic [all])
 Conf libnvidia-container1 (1.4.0-1 NVIDIA CORPORATION [email protected]:1.0/bionic [amd64])
 Conf libnvidia-container-tools (1.4.0-1 NVIDIA CORPORATION [email protected]:1.0/bionic [amd64])
 Conf nvidia-container-toolkit (1.5.1-1 NVIDIA CORPORATION [email protected]:1.0/bionic [amd64])
 Conf nvidia-container-runtime (3.5.0-1 NVIDIA CORPORATION [email protected]:1.0/bionic [amd64])
 Conf nvidia-docker2 (2.6.0-1 NVIDIA CORPORATION [email protected]:1.0/bionic [all])

Environment: Windows 10 Insider Preview Build 21376.1
WSL2 Ubuntu release: 20.04
NVIDIA Forum Links: https://forums.developer.nvidia.com/t/nvidia-container-cli-error/177403/2?u=ji5489

문제 제기

if I run sudo nvidia-container-cli -k -d /dev/tty info

I got this error
where is ‘devicesetgpcclkvfoffset’ symbol?

– WARNING, the following logs are for debugging purposes only –
I0509 06:20:58.858216 1009 nvc.c:372] initializing library context (version=1.4.0, build=704a698b7a0ceec07a48e56c37365c741718c2df)
I0509 06:20:58.858281 1009 nvc.c:346] using root /
I0509 06:20:58.858287 1009 nvc.c:347] using ldcache /etc/ld.so.cache
I0509 06:20:58.858293 1009 nvc.c:348] using unprivileged user 65534:65534
I0509 06:20:58.858311 1009 nvc.c:389] attempting to load dxcore to see if we are running under Windows Subsystem for Linux (WSL)
I0509 06:20:58.891385 1009 dxcore.c:226] Creating a new WDDM Adapter for hAdapter:40000000 luid:1e946dc
I0509 06:20:58.917427 1009 dxcore.c:267] Adding new adapter via dxcore hAdapter:40000000 luid:1e946dc wddm version:3000
I0509 06:20:58.917515 1009 dxcore.c:325] dxcore layer initialized successfully
W0509 06:20:58.918854 1009 nvc.c:397] skipping kernel modules load on WSL
I0509 06:20:58.919404 1010 driver.c:101] starting driver service
E0509 06:20:58.950931 1010 driver.c:168] could not start driver service: load library failed: /usr/lib/wsl/drivers/nv_dispi.inf_amd64_43efafcd74b2efc9/libnvidia-ml.so.1: undefined symbol: devicesetgpcclkvfoffset
I0509 06:20:58.951399 1009 driver.c:203] driver service terminated successfully
nvidia-container-cli: initialization error: driver error: failed to process request

해결방법

I’m currently installing WSL2 Ubuntu 20.04 within Windows 10 Insider Preview Build 21376.1, and faced same issue like below.

# sudo nvidia-container-cli -k -d /dev/tty info

-- WARNING, the following logs are for debugging purposes only --

I0512 07:05:58.485519 5592 nvc.c:372] initializing library context (version=1.4.0, build=704a698b7a0ceec07a48e56c37365c741718c2df)
I0512 07:05:58.485581 5592 nvc.c:346] using root /
I0512 07:05:58.485601 5592 nvc.c:347] using ldcache /etc/ld.so.cache
I0512 07:05:58.485604 5592 nvc.c:348] using unprivileged user 65534:65534
I0512 07:05:58.485659 5592 nvc.c:389] attempting to load dxcore to see if we are running under Windows Subsystem for Linux (WSL)
I0512 07:05:58.502183 5592 dxcore.c:226] Creating a new WDDM Adapter for hAdapter:40000000 luid:185673b
I0512 07:05:58.512924 5592 dxcore.c:267] Adding new adapter via dxcore hAdapter:40000000 luid:185673b wddm version:3000
I0512 07:05:58.512956 5592 dxcore.c:325] dxcore layer initialized successfully
W0512 07:05:58.513266 5592 nvc.c:397] skipping kernel modules load on WSL
I0512 07:05:58.513404 5593 driver.c:101] starting driver service
E0512 07:05:58.521931 5593 driver.c:168] could not start driver service: load library failed: /usr/lib/wsl/drivers/nv_dispi.inf_amd64_43efafcd74b2efc9/libnvidia-ml.so.1: undefined symbol: devicesetgpcclkvfoffset
I0512 07:05:58.522047 5592 driver.c:203] driver service terminated successfully
nvidia-container-cli: initialization error: driver error: failed to process request

and I found out that apt-get experimental repository and stable one is mixed out – failing to install WSL2 one (which is available in experimental repository). as stable package is released, experimental(=WSL2) package should be released, but It wasn’t. see apt-cache madison result below.

# apt-cache madison libnvidia-container1
libnvidia-container1 |    1.4.0-1 | https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/amd64  Packages
libnvidia-container1 |    1.3.3-1 | https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/amd64  Packages
libnvidia-container1 | 1.3.3~rc.2-1 | https://nvidia.github.io/libnvidia-container/experimental/ubuntu18.04/amd64  Packages
libnvidia-container1 | 1.3.3~rc.1-1 | https://nvidia.github.io/libnvidia-container/experimental/ubuntu18.04/amd64  Packages
libnvidia-container1 |    1.3.2-1 | https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/amd64  Packages
libnvidia-container1 |    1.3.1-1 | https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/amd64  Packages

The point is, we should install libnvidia-container1=1.3.3~rc.2-1 version rather than libnvidia-container1=1.4.0-1. but normal apt-get install nvidia-docker2 command would install 1.4.0-1 version, and It mostly like to fail in WSL2 environment.

I successfully installed older (WSL2-exclusive) packages via apt-get install command below:

apt-get install \
    libnvidia-container1=1.3.3~rc.2-1 \
    libnvidia-container-tools=1.3.3~rc.2-1 \
    nvidia-container-toolkit=1.4.1-1 \
    nvidia-container-runtime=3.4.1-1 \
    nvidia-docker2=2.5.0-1

Those commands will install older packages, and after sudo service docker stop and sudo service docker start, CUDA will work inside docker.

AMD Radeon 4500U 드라이버 업데이트 – 레노버 Thinkpad E15 Gen2 (Radeon Graphics 384SP)

르누아르 노트북의 GPU 드라이버를 최신으로 업데이트를 하고싶다면
이제는 가능합니다. 원래는 안됐었어요. 암튼 그럼.

최신 드라이버는 먹기 싫어요

최근, 쓰던 노트북이 맛가서 새로 Thinkpad E15 Gen2 노트북을 장만했습니다.
Lenovo 노트북은 각 디바이스 드라이버를 Lenovo 홈페이지나 “Lenovo Vantage”라는 Windows 10 App으로 통합 관리할 수 있게 되어있습니다.

르누아르 GPU가 나온지 얼마 되지 않았기에, Lenono에서 공식 제공하는 드라이버도 Release History 맨 끝에 초기 버전으로 나와 있더군요.

결국 공식 그래픽 드라이버를 설치하면, 구버전을 쓰게 된다는 결론입니다. 어림도 없지 어딜
그래서 최신 드라이버를 설치하기로 했습니다. 다만 이 같은일을 한달 전쯤에 이미 했었죠.
당시 결론은, “아직은 불안정하다”였습니다. 초기 Windows 부팅 시 드라이버 로드 시, TDR (Time Detection & Recovery) 관련 드라이버가 로드가 안되는 이슈였습니다. 그래서 부팅 시간이 짧게는 2분, 길게는 3분 이상도 딜레이가 되고 있었습니다. 노트북인데!! 노트북이라서 못봐줍니다!! 다만 달리 할 수 있는 일이 없었기에, 원래 버전으로 롤백했습니다. 그리고, 어제 또다시 시도를 해봤습니다.

결과: 대성공(?).

이번 2020년 11월 말에 출시한 Radeon Software 20.11.3 (2020-11-25)을, DDU를 하지 않고 기존 드라이버 위에 다시 설치해봤습니다. 어? 이번엔 이 이슈를 수정했나봅니다. 문제없이 빠른 부팅이 되고 있습니다.

아직 한 발 남았다

하지만, Lenovo사는 Windows Update에 자사의 공식 드라이버를 Release하고 있습니다. 이렇단 얘기는, 드라이버 버전이 구버전이거나 설치되어 있지 않다면, 자동으로 Windows Update가 공식 GPU 드라이버를 설치한다는 말이 됩니다. 좋은 기능이지만, 최신 버전의 드라이버 설치에도 불구하고 자동 업데이트 기능은 쉬지 않았습니다…. 최신 버전을 설치하고 난 뒤, Windows Update는 구버전으로 다시 롤백을 시도하고 있었습니다.

이제, Windows Update를 없애버릴 시간입니다 조금 손봐서, GPU 드라이버를 설치하지 않도록 해보겠습니다. Windows 10에서 설치할 업데이트중 일부를 무시할 수 있는데, MS사에서 제공한 공식 도구를 사용하면 됩니다.

주의할점이 있다면, 드라이버를 먼저 설치한 뒤에 Windows Update를 실행해 업데이트를 확인하고, GPU Driver를 설치할 것이라는 리스트가 뜨면 이를 일시 중지하고 진행해야 합니다. 진행할 업데이트가 없는데 이를 Block할 수는 없으므로, 조금 복잡한 위의 방법대로 하는게 탈이 없을것 같아 이렇게 진행했습니다. 아, Windows Update를 확인만 하고 리스트가 뜨면 바로 일시 중지해야 합니다. 그렇게 하지 않으면, 작업하던 중간에 구버전으로 드라이버가 다시 설치될지도…?

어쨌든, 다운로드 받은 프로그램 실행후 “Hide Updates”를 누르면 지금 진행하려는 GPU 업데이트 패키지가 리스트에 뜹니다. 제 기억상 Lenovo와 AMD라는 단어가 같이 들어가있었던것 같네요. 이를 체크하고 Hide합니다. 이렇게 하면 나중에도 GPU 업데이트는 되지 않습니다.

공식보다는 최신을 쓰고 싶은 분들을 위한 정리

  1. Radeon Software 20.11.3 이상을 다운로드한다.
  2. 기존 드라이버 위에 설치한다 (저는 초기화 진행했습니다)
  3. Windows Update 확인 버튼을 눌러준다.
  4. 확인이 끝나고 설치를 해버리기 전에 “7일 동안 업데이트 일시 중지”를 누른다.
  5. 위의 툴로 해당 드라이버를 숨긴다.
  6. Profit!

참고

  • Lenovo Thinkpad E15 Gen 2 has AMD Ryzen 4500U CPU, and integrated Radeon Graphics 384SP Vega Mobile GPU.

[TEST] Tensorflow 2.4.0-rc0 on RTX 3000 series (3070/3080/3090)

Tensorflow on RTX 3000 series (RTX 3070, RTX 3080, RTX 3090)

빌드 환경 (Build environment)

OS: Windows 10 Education (Build 19042.608)
Architecture: x86_64 (amd64)
Git branch: v2.4.0-rc0
Python: 3.7 (anaconda)
Target CUDA and CUDNN: CUDA 11.1 Update 1, CUDNN v8.0.5 (Novemvber 9th, 2020) (requires login)
Target arch: CC 8.6, 6.1 → Must be also usable on GTX 1000 series!
Numpy: 1.19.4 (Must be manually reinstalled back to version 1.19.3 before using!)

사용법 (Usage)

  1. Requirements: CUDA 11.1 Update 1, CUDNN v8.0.5 (Novemvber 9th, 2020) (requires login)
  2. Download tensorflow-2.4.0rc0-cp37-cp37m-win_amd64.whl
  3. Install within CMD or Powershell cmdline (where pip3 is available)
  4. Install tensorflow : pip install tensorflow-2.4.0rc0-cp37-cp37m-win_amd64.whl
  5. (Optional) Install additional requirements
  6. (Required) Roll back numpy version to 1.19.3: pip install numpy==1.19.3
  7. (Maybe optional) cupti library filename mismatch – add “C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\extras\CUPTI\lib64” to PATH and copy “cupti64_2020.2.1.dll” to “cupti64.dll” or “cupti.dll”.

제한 사항 (Restriction, To-Dos)

  • Higher GPU usage might be restricted – use those code to resolve SOME of those problems:
# Memory Pre-configuration
config = tf.compat.v1.ConfigProto(
    gpu_options=tf.compat.v1.GPUOptions(
        per_process_gpu_memory_fraction=0.8,
        allow_growth = True
    )
    # device_count = {'GPU': 1}
)
session = tf.compat.v1.Session(config=config)
tf.compat.v1.keras.backend.set_session(session)
  • Closing application while tensorflow library loads always failes – might be a buggy codes?
  • another unknown restriction would exist – this is a test build for my own use, so use with care! I will edit this article when tensorflow officially supports RTX3000 series (or tested).

WSL2 CUDA – Insider Preview 버전별 Support Matrix

내가 쓰는 Windows 10 Insider Preview 기준으로 WSL2와 CUDA가 잘 되는 버전들을 업데이트하고 있다.
※ 최신 버전: Windows 10 Insider Preview 21H1 Build 20241.1000 (2020-10-21)

Build 21H1 Release Date WSL2 CUDA
20241 2020-10-21 O O
20236 2020-10-16 O O
20231 2020-10-07 O X
20226 2020-09-30 O X
20215 2020-09-23 X X
20211 2020-09-16 X X
20206 2020-09-09 O O
20201 2020-08-26
20190 2020-08-12
20185 2020-08-05
20180 2020-07-29
20175 2020-07-22
20170 2020-07-15
20161 2020-07-01
20152 2020-06-24
20150 2020-06-17 O O

참고자료

WSL2 CUDA – WSL2에서 Ubuntu와 CUDA 사용하기

Windows Insider Preview 버전 문제 (2020-10-16 빌드에서 해결됨)

Windows 10 Insider Preview 버전에 따라서, WSL2나 CUDA가 아예 동작하지 않는 경우가 많습니다. 여기에서 버전별 작동여부를 확인 후에 설치하시는것이 좋을것 같네요.

WSL2에서 Ubuntu와 CUDA 사용하기

이제 Windows 10 Build 2020에서는 Windows Subsystem for Linux 2와 GPU 가속 지원 기능을 함께 사용할 수 있습니다. 이 가이드에서는 Windows 10 디바이스에서 WSL2와 Ubuntu를 이용하여 CUDA 개발 환경을 구축할 수 있도록 합니다.

이 튜토리얼에서는 WSL에 Docker를 구동하여, 결과적으로 Jupyter Notebook 내에서 CUDA를 End-to-End로 실행할 수 있도록 합니다. 구체적으로는 아래와 같은 구성으로 진행됩니다.

In the Linux guest, the dxgkrnl driver creates the /dev/dxg device for user mode components to access. The requests that come from GPU applications get forwarded to the Windows host system via VMBus where for those the host dxgkrnl driver makes calls to the KMD (Kernel Mode Driver) DDI handlers.
WSL2에서 dxgkrnl(자세히 보기)을 통한 NVIDIA GPU 지원

Windows 10 Insider Preview 채널로 변경하기

이 과정에 앞서, 설치된 Windows 10을 2020년 6월 17일자로 릴리즈된 Windows 10 Insider 빌드로 업그레이드해야 합니다. 이를 위해서 Windows Insider에 가입하여, 사용중인 기기를 Dev Channel에 등록할 수 있습니다(주로 “Fast Ring” 또는 한국어로 “초기”라고도 쓰입니다). 이 후, Windows 10 빌드 20150 버전으로 업그레이드할 수 있습니다.

Windows Insider 프로그램에 가입해서 프리뷰 버전으로 업데이트하기

Windows 10 Insider Preview 빌드 시작 페이지 또는 Windows 10 21H1 빌드 배포 노트(홍차의 꿈님 블로그)를 참조하여 개발자 빌드에 참여하는 방법을 확인하세요.

WSL2 활성화하기 – Step #1

먼저, WSL Version 1을 먼저 활성화합니다. 이 과정 이후, 추후에 WSL2로 업그레이드를 합니다.

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
WSL1 활성화 과정

필요시 재부팅을 해야할 수 있습니다. 보통의 경우 바로 이어서 WSL2를 활성화할 수 있습니다.

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

이 뒤, Windows를 재시작합니다.

Restart-Computer

WSL2 활성화하기 – Step #2

이제 재부팅을 완료하면, 시스템이 WSL2를 구동할 수 있는 상태입니다. 다만, 아직은 호환성 등을 이유로 기본값은 WSL Version 1입니다. 아래 코드로 기본 버전을 변경할 수 있습니다(원할 시 Distro마다, 기존 Version 1으로 다시 설치할 수 있습니다)

wsl.exe --set-default-version 2
WSL2를 기본값으로 설정하기

Ubuntu를 WSL에 설치하기

Microsoft Store으로부터 Ubuntu를 설치할 수 있습니다(링크).

Microsoft Store으로부터 WSL Ubuntu 다운로드

WSL에 Ubuntu를 다른 방식으로 설치할 수 있습니다(링크, 영문).

(옵션) Windows Terminal 설치하기

Windows Terminal은 MS사에서 개발한 대체 터미널 어플리케이션입니다. 기존 MobaXterm이나 Cygwin, ConEmu 등의 솔루션을 대체할 수 있는 Lightweight한 오픈소스 터미널 도구입니다(링크 또는 GitHub). 화면 렌더링의 GPU 가속 및 커스터마이징 등, 다양한 기능들을 가지고 있으며 기존 Windows의 콘솔(cmd, powershell)을 이어 더 나은 사용성을 제공합니다.

Microsoft Store으로부터 Windows Terminal 다운로드

WSL에서 Ubuntu 설치하기

Windows의 시작 메뉴에서 Ubuntu를 선택하고, 초기 실행이므로 WSL내의 Ubuntu 사용자를 설정합니다. 이 Ubuntu 사용자Windows 사용자는 독립입니다(서로 관계가 없으며 이름이 같아도 됩니다).

WSL 초기 실행 시 Linux 계정(사용자) 생성하기

이전 단계에서 Windows Terminal을 다운로드받았다면, 사용자를 생성했던 이전 콘솔을 닫고, + 아이콘을 눌러 새로운 Ubuntu 콘솔을 열 수 있습니다:

새로운 Ubuntu 콘솔 열기

이제, 설치가 완료되었으므로 Ubuntu가 WSL2에서 구동되는지 확인해봅니다:

uname -r
Ubuntu의 커널 버전 확인

커널 버전을 확인했을 때, 4.19.121보다 높아야 합니다.
※ 그렇지 않다면, 아래 명령어를 cmd 또는 powershell 터미널에서 실행해보세요:

wsl.exe --update

위 명령어를 실행한 뒤에도 동일한 커널 버전으로 나타난다면(WSL이나 Windows를 재시작해야할 수도 있습니다), Windows Updates 설정에서 “고급 옵션 > Windows를 업데이트할 때 다른 Microsoft 제품에 대한 업데이트 받기”가 켜져 있는지 확인합니다:

Windows Update “고급 옵션” 창
(변경할 설정확인이 쉽도록 한글로 써 두었습니다.)

이 뒤에, Windows Update를 다시 확인합니다.

Windows 업데이트 시 “Windows Subsystem for Linux Update” 표시

Windows 10용 NVIDIA 드라이버 설치

CUDA on WSL용 NVIDIA 그래픽 드라이버(WDDM 2.9) 다운로드(링크)

이 다음, 시스템에 설치된 GeForce 또는 Quadro 그래픽카드에 따라 적절한 드라이버를 다운로드합니다. 몇 달 내로 Windows Update를 통해 드라이버가 배포될 예정이지만, 그 때까지는 직접 설치하는 과정이 필요합니다.

드라이버를 얼리-엑세스로 다운로드하기 위해서는 NVIDIA Developer Program에 가입되어 있어야 합니다. NVIDIA 개발자 블로그(영문)에서 CUDA on WSL에 관련한 기술적 내용을 찾아볼 수 있습니다.

WSL에 Docker 설치

기본적으로 Canonical에서 제공하는 Docker를 설치할 수 있습니다(Docker Hub에서 제공하는 최신 Docker Engine을 설치하기 위해서는 아래 명령어 대신 이 링크의 튜토리얼을 따라하시면 됩니다. 영어입니다.)

sudo apt -y install docker.io
WSL2 Ubuntu에 Canonical 기본 레포지토리 Docker(docker.io 패키지) 설치

sudo 없이 docker 명령어를 이용하기 위해서는, 추가로 아래 명령어를 입력할 수 있습니다(보안상 이슈가 있을 수 있으며, 선택입니다):

sudo adduser $USER docker

NVIDIA Container Toolkit 설치

변수 distribution을 설정하고, NVIDIA 레포지토리 GPG 키를 가져온 뒤, NVIDIA 레포지토리를 Ubuntu의 apt 패키지 매니저에 추가합니다.

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -

curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

curl -s -L https://nvidia.github.io/libnvidia-container/experimental/$distribution/libnvidia-container-experimental.list | sudo tee /etc/apt/sources.list.d/libnvidia-container-experimental.list
Apt 패키지 매니저에 NVIDIA 레포지토리 추가

Ubuntu의 기본 레포지토리를 한국 서버로 변경합니다. apt updateapt upgrade 등의 작업이 훨씬 빨라집니다.

sudo sed -i "s/archive.ubuntu.com/mirror.kakao.com/g" /etc/apt/sources.list

Ubuntu의 apt 레포지토리를 초기화한 뒤, NVIDIA 런타임을 설치합니다.

sudo apt update && sudo apt install -y nvidia-docker2
apt 패키지 매니저를 통한 NVIDIA 컨테이너 런타임 설치 과정

설치 완료 시, 모든 Ubuntu 터미널을 종료하고, Powershell 터미널을 열어 모든 Ubuntu WSL 인스턴스를 종료합니다:

wsl.exe --shutdown Ubuntu
WSL Ubuntu 인스턴스 종료

GPU 컴퓨팅 테스트

새로운 Ubuntu 터미널을 열어, Docker 서비스를 시작합니다.

sudo service docker start

그리고 아래 명령어를 실행합니다:

sudo docker run --gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark

모든 과정이 이상없이 진행되었다면, 아래와 같이 GPU의 성능 정보들이 정상적으로 표시됩니다:

CUDA sample 코드 실행 결과

Tensorflow 컨테이너 시작하기

새로운 Ubutnu 터미널을 열어, 아래 명령어를 실행합니다:

docker run -u $(id -u):$(id -g) -it --gpus all -p 8888:8888 tensorflow/tensorflow:latest-gpu-py3-jupyter
Tensorflow 실행 가능한 Jupyter Notebook가 GPU와 함께 구동

또다른 새로운 Ubuntu 터미널을 열어, wslview를 입력 후, 그 뒤에 Jupyter Notebook URL을 입력합니다. 단, 여기서 127.0.0.1localhost로 바꿔 입력합니다!

wslview http://localhost:8888/?token=a83a1ad288a7bf1bd1deb694c8a7f19223c8d0baa7d5fb3c

기본 브라우저에 Jupyter Notebook이 실행되고, 이를 통해 GPU 가속이 가능한 Tensorflow 라이브러리를 사용할 수 있습니다! 이제 Tensorflow, CUDA를 WSL에서 사용할 수 있습니다.

Related blog posts

Additional resources

번역 원본

https://ubuntu.com/blog/getting-started-with-cuda-on-ubuntu-on-wsl-2

WD Backup 어플리케이션 사용기

결론부터 시작하는 이야기

외장하드 백업 어플리케이션으로 잘 사용하고 있던 WD Backup.

image.PNG
백업이 삭제되었습니다.

왜?

분명 지난주에, Redstone 5 업그레이드에 문제가 생겨 클-린 설치를 한 뒤에 파일 복원을 했을 터인데, 어째서인지 파일들이 보이지 않았다. 왜지? 그래서 Search Everything 으로 찾아봤다. 어라? 파일이 어찌 깊숙히 보관되어 있었다(이 글을 쓴 시점엔 이미 백업파일을 지워버렸다). 그러니까 복원을 제대로 못한것. 아니면 내가 파일을 실수로 지웠던가.
그래서 이번에 Inconsistancy때문인가, 이러고 폴더를 지워버렸다어차피 필요한 파일은 다 챙겨먹었으니. 무려 40기가나 먹고있던거….. 이제 다시 백업 설정하고, 나중에 또 테스트해봐야지. 또 문제생기면 다른 백업 솔루션을 장만해야하나..?

WD Backup의 좋은점(?)

image2.PNG
Dropbox와 외장HDD에 백업이 가능하다.

예전에 군머 다녀오기 전에 Dropbox를 많이 써서 남은 용량을 빈곤하게 한 바람에 이 옵션은 손을 못댔다. 대신 작은 문서파일들 백업용으로는 짱인건 틀림없다. 성능은 안써봐서 모르겠다. 그리고 굳이 Dropbox 어플리케이션을 깔면 되는데 이걸또..? 아니지, WD는 주기적으로 자동으로 파일을 백업해주니까.

내가 생각한 단점

  • 파일을 그냥 복사한다.
    이건 단점이라고 하기는 어떻게 보면 장점일수도 있다. 파일을 직접 검색해서 바로 열어볼 수 있으니까. 그런데 압축이라는건 없다구. 삭제할때 본 40기가는 정말 어마어마한 용량이었다 좋지 않아. 증분 압축이라던가 이런게 있었으면 정말 좋았을거 같다. 작은 파일을 그대로 복사하는건 용량 측면에서나 효율성 측면에서나 좋지 않은 방법인것 같다.
  • 자-꾸 알림을 띄우는데…
    이건 내가 귀찮아서 알림을 안끈게 잘못이 크다. 알림창 끌어서 닫는게 더 귀찮은데 WD 자체 설정에서는 불가능한거 같고, Windows 알림에서 집중 모드를 설정하거나 알림 자체를 블록해버리자.

그러면 어떻게 쓰는게 좋을까

  • 조금 큰 파일들이나, 작은 파일들인데 꼭 백업이 필요한 것들을 설정하자.
    어차피 WD 외장하드는 거의 내장HDD처럼 쓰고있는지라, 백업은 큰 의미가 없지만(랜섬웨어라도 걸리면..어휴), 어쨌든 증분 백업은 하는것같다. 그러니까 큰 파일은 한번 백업하면 이제 옮기거나 하지 않는이상 두번은 옮기지 않는거같다. 큰 파일들 한번에 백업해두고, 그리고 매 시간 백업하면 알림이 진짜 매 시간마다 날 귀찮게 한다… (하지만 게임같은거 하고있으면 집중 모드라는걸로 안 울린다!)

결론

여러분, WD 외장하드 쓰세요. 용량 크고 좋아요. 짱짱.
근데 외장하드랑 같이주는 S/W는…음… 나름 쓸만은 한데, 굉-장한 정도는 아니고, 그냥 있으면 나중에 복원할때 편리하다 정도.