본문 바로가기

Windows on ARM 이야기

프로젝트 볼테라 (Project Volterra - Windows Dev Kit 2023)에 대해.. ② ARM 기반의 윈도우 사용 시 주의점!

반응형

 

오늘.. 볼테라에 대한 2번째 이야기, ARM 기반 윈도우을 사용할 때의 주의점들에 대해 적어보고자 합니다.

 

일단 볼테라를 포함한 ARM 기반 윈도우 PC의 설정 방법은 일반 윈도우 PC나 태블릿에서 설정하는 방법과 크게 다르지 않습니다. 그러니 여기서 설정 방법을 쓰지는 않겠습니다. 하지만 지난 번에 말씀드렸던 점, 그리고 여러분들께서 경험해보시면 아실 수 있겠지만, 일반적인 윈도우와 많이 다르다는 것을 알아두셔야 합니다.

 

 

윈도우 정보를 보면 분명 64비트 운영체제인 것은 맞는데, 일반 윈도우 PC, AMD나 인텔 PC였다면 아마 x64 기반 프로세서라고 적혀있었을텐데... 자세히 보시면 ARM 기반 프로세서라고 적혀있는 게 보이시죠?

 

자, 이게 무슨 말이냐면, CPU 아키텍쳐의 차이 때문에 대부분의 PC 앱들이나 드라이버가 호환되지 않는다는 말입니다. 이건 절반은 맞고 절반은 틀린 말인데, 절반이 틀린 이유는 앱의 경우, 윈도우 11에 탑재된 "ARM64EC(Emulation Compatible)"라는 기술 때문에 대부분의 앱의 구동을 보장해주기 때문입니다.

 

이걸 설명하려면 윈도우의 역사 얘기를 조금 꺼내야 하는데요.

 

우리들이 쓰고 있는 운영체제들 중, 윈도우 10이나 11 이전에 나온 윈도우 버전들 중, 윈도우 8, RT(ARM Architecture Edition)가 있었는데, 약자를 보시면 아실 수 있겠지만, 이 버전이 최초로 모바일 기기에 들어가는 ARM 프로세서를 지원하는 데스크탑 버전의 윈도우였습니다. 이 RT에는 윈도우 스토어(지금의 Microsoft Store)에 들어가는 메트로 앱이 윈도우 폰, 윈도우 RT에 호환이 되는 반면, 대부분의 데스크탑 앱은 네이티브 x86 또는 x64에 맞게 만들어진 것(컴파일)들이 대부분이라서, 이걸 RT에서 쓰려면 따로 리컴파일링 작업을 거쳐줘야하는데 조건이 까다롭고 어렵다는 게 문제였다고 합니다. 그 조건이라는 게, 닷넷(.NET)  또는 어도비 에어 기반이 아니면 불가능하다는 것이었던데다, 윈도우 폰에서는 데스크탑 앱이 돌아가지 않는 탓에 문제가 심각했고, 그 윈도우폰은 iOS와 안드로이드 사이에서 지지부진하다가 결국 사라졌고요.

 

(Ballmer Demonstrates Windows and Office on ARM Processor Devices at CES 2011 - YouTube)

 

결국 마소는 윈도우폰을 포기하는 지경까지 가게 되었지만, ARM 기기에 윈도우를 포팅하는 노력은 포기하지 않고 계속해왔고, 윈도우 RT를 반면교사로 삼아, ARM용 윈도우 10을 공개했는데, 기존에 존재했던 x86용 PC 앱들을 에뮬레이팅을 통해 ARM 환경에서 실행할 수 있게 만들었습니다.

Windows 10 Runing On Qualcomm 820 Processor|Performance Review|Laptop with Qualcomm Chipset (SoC) (youtube.com)

 

하지만 과거의 인텔의 아이태니엄 사례가 증명했듯, 모든 앱들이 구동 가능했던 것이 아니었던데다, 현 시대의 x64 앱들은 구동할 수 없었고, 에뮬레이션 성능이 떨어졌기에, 갈 길이 멀었던 게 사실입니다.

 

이걸 개선하여 만든 것이 바로 윈도우 11의 ARM64EC입니다.

 

 

전에 서술했듯, 기존의 일반적인 코드인 x86-x64 코드를 ARM용 PC에서 쓰려면, ARM 네이티브 코드를 새로, 별도로 짜야했지만, ARM64EC라는 것은 간단하게 정리하면 그럴 필요가 없게 만들어주는 기술이라는 소리지요. 이젠 어떤 코드를 넣어도 ARM 네이티브로 만들거나, 에뮬레이팅 모드로 구동하는 것이 가능하다는 것입니다. 네이티브로 변환할 수 있는 부분은 그렇게 해서 속도 향상이 가능하고, 그렇게 빌드할 수 없는 소수의 전문가용 서드파티 플러그인들이나 큰 앱들도 문제없이 대처할 수 있게 되었다는 겁니다.

 

물론 에뮬레이션 성능이 좋아졌다고는 해도, 일부 앱들은 여전히 구동되지 않을 수 있습니다.

거기엔 게임들(최소 구동 조건 : OpenGL 3.3 이상)이야 말할 것 없을테고, 일부 바이러스 백신 프로그램들, IME(입력 방법 편집기)나 클라우드 스토리지 앱 등도 있고요. 이건 에뮬레이션과 별개의 이야기입니다만, ARM 기반의 윈도우는 팩스 및 스캔 기능을 지원하지 않는 의외의 문제점도 있다는 것 염두해두시고요.

 

에뮬레이션 얘기로 다시 돌아가서, 아무리 그 성능이 좋아졌다고 네이티브로 구동하는 것보다는 못한 것이 사실이라, 앱들을 개발할 때는 ARM 네이티브로 만들 필요가 있는 것은 사실이고, 어디까지나 앱들에 대한 에뮬레이션을 통한 구동을 지원하는 것이라서 드라이버는 별개라는 거...

 

여기서 드라이버는 별개라는 얘기는.. 그 기종에 맞는 걸로 끼리끼리 맞추라는 뜻입니다. 이종결합 불가라는 거죠.

 

 

x86-64는 거기에 맞는 드라이버가 있고, ARM64 역시 거기에 맞는 드라이버가 있어서, 그걸로 설치해야 한다는 얘기이니, 즉, ARM용 윈도우에 x86-64 드라이버를 설치할 수는 없다는 소립니다. 물론 ARM64 지원을 하는 기기들도 있기에, 그러한 기기를 찾는 것이 가능할 수 있겠습니다만, 문제는 옛날 기기들.. 프린터나 스캐너 등은 호환 안될 가능성이 매우 높다는 것이지요. 더구나 오픈소스 프린터도 현 시점에서는 찾기 매우 힘드니... 그러한 이유로 모두의 프린터 같은 건 먹히지 않을 가능성이 크다는 겁니다.

 

그래서 여기서 주의할 점 첫 번째.

처음 글에서 말씀드렸다시피 드라이버와 앱 호환성 여부를 꼭 확인해야 한다는 것입니다. 이건 여러 번 강조해도 지나침이 없을 정도로 중요한 부분인데, 드라이버 특히 신경쓰셔야 하고, 앱도 동작 여부를 확인해보시고 설치하는 것이 좋겠습니다.

 

두 번째 특징은 현재 시점에서는 ARM 기반의 윈도우 내에서 OS 가상화 및 네이티브로 리눅스 가동하는 것이 매우 어려운 조건이라는 것입니다.

 

지금 현재까지는 VMWare나 VirtualBox, QTM, QEMU 등의 가상화 툴을 지원하지 않습니다. 이 도구들이 ARM64를 공식적으로 지원하고 있는 것은 Apple M1 이후의 실리콘 맥들이지, 제가 지금 쓰고 있는 볼테라 같은 애들에게 지원되는 것은 아니라는 것이죠. 실제로 설치를 해보시면 이 가상화 툴에 들어가는 드라이버 자체가 x64, x86용이어서 볼테라나 서피스 프로 9 5G 같은 윈도우 PC와 아예 호환이 되지 않는다는 것을 확인하실 수 있으실 겁니다. 더구나 QEMU는 일반 사용자들이 쓰기엔 좀 어려운 가상화 툴이기도 한데다가, x86, x64용이라 원하는 성능을 기대하기도 어렵다고 생각하셔야 합니다.

 

또, 일단은 Dev Kit이니, 리눅스를 통한 개발도 지원할 것이라는 희망적인 상상을 할 수 있을텐데, 안타깝게도 그건 절반은 맞고 절반은 틀립니다. 그 이유는 네이티브로 리눅스를 설치하는 것 자체가 매우 어렵거나 불가능하기 때문입니다. Alex Ellis님의 블로그 내용에 따르면, OpenESD로 리눅스를 설치하는 것은 가능했어도, 일반적인 방법으로 리눅스를 설치하는 것은 불가능하였다고 합니다. 물론 포기하지 않으신 분들도 있어서 결국 이렇게 우분투를 올리신 분들도 있긴 합니다. 하지만 어렵다는 거... (https://blog.alexellis.io/linux-on-microsoft-dev-kit-2023/)

 

(Windows Dev Kit 2023 Boot Work · Issue #43 · linux-surface/surface-pro-x · GitHub)

 

그러면 초보자 분들이 접근할 방법이 아예 없을까요? 그건 아닙니다. 절반이 맞는 이유는 윈도우 11이 WSL과 WSA를 지원하기 때문입니다. Windows Subsystem for Linux를 이용하면, 윈도우 안에 우분투 같은 리눅스 배포판을 설치하는 것이 가능하고, 안드로이드 역시 Windows Subsystem for Android로 윈도우 안에 안드로이드를 구동하는 것이 가능하지요.

 

그리고 세 번째 주의점은 PCIe 확장이 거의 불가능하다는 것입니다.

 

사실 이건 C-타입을 사용하는 ARM PC들도 그렇고, 일부 인텔 및 AMD PC도 마찬가지긴 합니다만, 이러한 PC들의 경우 썬더볼트나 USB4를 지원하지 않는 탓에 eGPU 등을 활용한 방법은 불가능하다는 얘깁니다. eGPU가 설령 된다고 해도 그래픽 드라이버가 ARM64용으로 나온 게 없다보니 큰 의미 없는 이야기겠지만요.

 

자세한 것은 이 페이지를 참고하시면 도움이 되리라 생각합니다.

(Windows Arm 기반 PC FAQ - Microsoft 지원)

 

 

자, 이렇게 ARM 기반 윈도우를 사용할 때 유념해야 하는 주의점에 대해 살펴보았습니다. 이 점들을 유념하셨다면 정말 ARM 기반의 윈도우를 사용할 준비가 되었다고 할 수 있겠습니다. 다음 글에서는 ARM 기반 윈도우을 잘 사용할 수 있는 방법들에 대해 알아보도록 하겠습니다. 이것에 대해서는 글이 꽤 길어질 것 같습니다만, 기대해주시고요!

 

글 읽어주셔서 감사합니다!

반응형