윈도10 속 리눅스커널로 되는 것, 안 되는 것

WSL2, 하이퍼V 기반·서드파티 가상화SW 및 GPU 자원 접근 제한

컴퓨팅입력 :2019/05/20 11:30    수정: 2019/05/20 13:11

윈도10에 진짜 리눅스 커널이 탑재된다. 이달초 마이크로소프트(MS)가 소개한 '리눅스용 윈도 서브시스템(WSL) 2' 버전이 리눅스 커널을 포함한다. 이로써 사용자가 다른 가상화 소프트웨어(SW)를 안 쓰고 리눅스 바이너리를 실행할 수 있게 된다. WSL2는 다음달 중순께 나온다.

기존 WSL1 버전도 일부 리눅스 바이너리 기능을 구동할 수 있었지만 시스템 콜을 에뮬레이션해 윈도 운영체제(OS)가 처리하는 방식이었다. 모든 시스템 콜을 처리할 수 없었다. WSL2는 실제 리눅스 커널을 가상머신(VM)으로 구동해 처리한다. 모든 시스템 콜을 처리할 수 있게 된다. [관련기사 ☞ MS 윈도, 리눅스 커널 품는다]

윈도를 일상 용도로 쓰면서 동시에 리눅스 OS를 주 개발환경으로 쓰고 있는 개발자들은 이 소식에 환영하는 분위기다. 리눅스 시스템 콜을 윈도 OS에서 온전히 처리할 수 있게 되면 두 OS를 오가는 불편을 상당히 줄일 수 있기 때문이다.

마이크로소프트 로고. 미국 워싱턴주 레드몬드 본사 캠퍼스 중 방문자 센터 건물 진입로 옆에 있는 조형물이다.

다만 현시점에 구현된 WSL2는 만능이 아니다.

MS는 WSL2 개발 계획을 내놓은 뒤 개발자 커뮤니티로부터 쏟아진 문의를 수렴해 답변하는 성격의 기술적인 세부정보를 공개했다. 그 내용에 따르면 초기 버전의 WSL2를 사용중일 땐 타사 가상화SW를 못 쓸 수 있으며, VM 방식이라 로컬호스트로 동작하지 않는 등의 제약이 있다.

WSL2를 처음 소개했던 크레이그 로웬 MS 윈도 디벨로퍼 플랫폼 프로그램 매니저는 지난 13일 MS 개발자 블로그를 통해 윈도10의 WSL2 구현 방식과, 곧 제공될 이 기능이 지원할 수 있는 동작과 그렇지 않은 동작을 자세히 설명했다. [원문보기 ☞ WSL 2 Post BUILD FAQ]

■ WSL2는 하이퍼V 기반이다

첫 WSL2 소개 당시 리눅스 커널을 구동하는 방식을 놓고 여러 추측이 있었다. 이미 MS가 만든 가상화 기술 '하이퍼V'를 활용했다는 보도가 있었지만 MS가 다른 별개의 가상화 기술을 썼다고 들었다는 소문도 돌았다.

로웬 매니저는 "WSL2는 그 가상화를 구현하기 위해 하이퍼V 아키텍처를 썼다"며 "이 아키텍처는 하이퍼V 기능의 서브셋에 해당하는 선택적 구성요소(optional component) 형태가 될 것"이라고 밝혔다. 이 선택적 구성요소는 '윈도10 홈' 에디션을 포함한 모든 SKU에 쓸 수 있게 된다.

■ WSL1도 유지된다

MS는 WSL2를 내놓으면서 WSL1을 동시에 실행할 수 있다고 밝혔다. 그 때 WSL2가 WSL1을 대체하는 것이냐는 질문을 던진 개발자들이 많았다. WSL1 역할을 WSL2가 대신할 수 있다면 WSL1은 '버려지는 게 아니냐'는 의문을 제기한 것이다.

이에 로웬 매니저는 "현시점에 WSL1을 폐기(deprecate)할 계획은 없다"고 밝혔다. 또 "여러분은 WSL1과 WSL2 배포판을 함께 실행하고, 어떤 배포판이든 아무 때나 업그레이드 및 다운그레이드할 수 있다"고 덧붙였다. 이어 "WSL2를 새 아키텍처로 추가하는 건 WSL팀이 WSL를 윈도에서 리눅스 환경을 실행하는 훌륭한 방법으로 만들어 줄 기능을 제공하려 함을 보여 준다"고 설명했다.

■ VM웨어와 동시에 못 쓴다

WSL2와 관련된 제약사항 가운데 하나로 'VM웨어'나 특정 버전 '버추얼박스'를 함께 쓸 수 없다는 점이 드러났다. WSL2가 하이퍼V 가상화 아키텍처를 사용하기 때문에, 이 기술과 양립할 수 없는 서드파티 가상화 기술을 동시에 실행할 수 없다는 얘기다.

로웬 매니저는 VM웨어나 버추얼박스6을 제외한 그 이전 버전과 같은 "일부 서드파티 애플리케이션은 하이퍼V 사용중일 때 작동하지 않는다"며 "이는 WSL2가 켜져 있을 때 구동될 수 없음을 뜻한다"고 밝혔다.

이어 "문제 해결을 도울 방법을 조사 중"이라면서 "서드파티 가상화 공급업체가 그 SW를 하이퍼V와 호환되게 만들도록 쓸 수 있는 '하이퍼바이저 플랫폼' API셋을 내놓고 있는데 이는 구글 안드로이드 에뮬레이터나 버추얼박스6처럼 하이퍼V에 호환되게 만들어 준다"고 밝혔다.

GPU 자원은 못 쓴다

또 로웬 매니저에 따르면 WSL2 초기 버전의 하드웨어 액세스 지원이 제한돼, 일단 "GPU, 시리얼(포트), USB"에 접근할 수 없다. 로웬 매니저는 후속 개발을 통해 WSL2의 장치 지원 수준을 개선할 예정이며, WSL2의 지원 수준이 개선되기 전까지 WSL1을 대안으로 쓸 수 있다고 표현했다.

■ 네트워킹은 VM처럼 동작한다

관련기사

네트워킹 애플리케이션 구동시 WSL1과 WSL2의 동작에 차이가 있을 것이라는 점도 강조됐다. 일단 WSL2는 WSL1처럼 네트워킹 애플리케이션을 지원한다. 더불어 WSL2는 에뮬레이션이 아니라 온전한 시스템 콜 호환성을 갖춘 시스템이라 더 빠르고 안정적인 작동을 보장한다. 하지만 WSL2 아키텍처는 가상화 네트워킹 구성요소를 사용한다.

가상화 네트워킹 구성요소를 쓴다는 건 WSL2의 초기버전에서 네트워크 자원을 다루는 방식이 VM과 유사하다는 걸 의미한다. 로웬 매니저는 "예를 들어 WSL2는 호스트머신과 다른 IP주소를 갖게 된다"고 언급했다. 다만 그는 개발팀이 WSL1과 WSL2를 같은 느낌으로 쓸 수 있게 만들고자 하기 때문에, 조만간 리눅스와 윈도에서 모든 네트워킹 애플리케이션이 로컬호스트에 접근할 수 있도록 만들 계획이라 밝혔다.