MS 윈도, 리눅스 커널 품는다

진짜 커널 사용하는 WSL2 개발…도커 컨테이너 실행도 가능

컴퓨팅입력 :2019/05/08 07:06    수정: 2019/05/08 17:31

[시애틀(미국)=임민철 기자] 마이크로소프트(MS) 윈도 운영체제(OS)가 리눅스 커널을 품는다. MS가 다음달 중순 '리눅스용 윈도 서브시스템(WSL)' 새 버전을 선보이면서 다가올 변화다. 리눅스를 일부 흉내내던 윈도 내장 기능이 아예 리눅스 커널을 통해 실제 리눅스 OS로 작동한다는 소식이다.

MS는 지난 6일 미국 시애틀 워싱턴스테이트컨벤션센터에서 개발자컨퍼런스 '빌드2019'를 개최한 가운데, 실제 리눅스 커널을 사용해 완전히 새로운 아키텍처를 사용하는 'WSL2'를 개발 중이며 이걸 윈도에 탑재한다는 계획을 내놨다.

WSL2는 앞서 윈도10에 탑재된 WSL의 후속 버전이다. MS는 WSL 사용자 커뮤니티로부터 파일 시스템 성능을 높이고 더 많은 앱이 WSL 안에서 돌게 해달라는 요청을 받아 WSL2를 개발하게 됐다. WSL2 첫 빌드는 다음달말께 윈도 인사이더 테스트 프로그램 참가자 대상으로 나오는 시험판을 통해 배포될 예정이다.

기존 WSL 즉 'WSL1'은, 윈도 OS에서 일부 리눅스 바이너리 상호작용을 지원하는 호환 레이어로, 에뮬레이션 아키텍처 기반이었다. 이와 달리 WSL2는 리눅스 바이너리의 전체 시스템 콜을 처리할 수 있다. 즉 도커(Docker) 컨테이너의 리눅스 버전이라든지 여기에 마운트되는 사용자영역내 파일시스템(FUSE)같은 기술을 사용하는 리눅스 애플리케이션을 WSL2에서 구동할 수 있다.

마이크로소프트가 윈도 후속판에 리눅스커널 커스텀 버전을 탑재한다. 리눅스용 윈도 서브시스템(WSL) 2 버전에서 가상머신(VM) 형태로 모든 시스템 콜을 처리해 실행 가능한 리눅스 바이너리 제한을 없애고 성능도 끌어올렸다.

MS는 WSL2를 통해 윈도에 실제 리눅스 커널을 탑재한다. 이는 온전한 시스템 콜 호환성을 갖출 수 있게 만든다. 이날 MS 개발자 블로그를 통해 WSL2를 소개한 크레이그 로웬 MS 윈도 디벨로퍼 플랫폼 프로그램 매니저의 포스팅에 따르면, WSL2는 기존 윈도 환경에서 EFL64 리눅스 바이너리를 구동하기 위한 WSL를 실현하는 아키텍처의 새 버전이다. [원문보기 ☞ Announcing WSL 2]

설명에 따르면 WSL2는 실제 리눅스 커널을 사용한 완전히 새로운 아키텍처를 채택했다. 새 아키텍처는 이 리눅스 바이너리가 윈도 그리고 사용자의 컴퓨터 하드웨어와 상호작용하는 방식을 바꿨지만 기존 WSL1 버전과 동일한 사용자 경험을 제공한다. 개별 리눅스 배포판이 WSL1로 또는 WSL2 배포판으로 실행될 수도, 언제든 업그레이드되거나 다운그레이드될 수도, 두 버전 배포판이 함께 구동될 수도 있다.

MS는 이미 지난해 애저 스피어(Azure Sphere)라는 기술을 통해 리눅스 커널을 탑재한 제품을 선보이긴 했지만, 윈도 OS 제품에 리눅스 커널을 심는 건 처음이다. WSL2에 포함돼 최초 배포될 리눅스 커널은 4.19 버전 기반이다. MS는 이 커널을 WSL2 용도에 맞게 개조했다. 윈도에서 리눅스 경험을 제공하기 알맞게 크기와 성능을 조율한 결과물이다.

MS는 '윈도 업데이트'를 통해 이 리눅스 커널을 서비스할 계획이다. 다른 윈도OS 구성요소처럼, 최신 보안 픽스와 커널 개선 요소를 MS가 직접 만들어 제공하고 관리한다는 뜻이다. 또 MS는 이 리눅스 커널을 완전히 오픈소스로 제공할 예정이다. 일단 WSL2의 소스코드가 온전한 컨피규레이션과 함께 깃허브를 통해 온라인으로 공개되면 개발자들은 그 동작 방식을 확인하고 직접 빌드해 볼 수 있게 된다.

WSL2의 아키텍처는 기존 버전과 어떻게 다를까. 가상머신(VM)을 사용하는데, 일반 VM처럼 관리 및 성능 부담을 갖지 않고 기존 WSL처럼 간편하게 쓸 수 있다. 로웬 매니저의 설명에 따르면 다음과 같다.

WSL2는 그 내부에 지닌 경량 유틸리티 VM으로 리눅스 커널을 구동하는데, 이 때 일반적인 VM의 단점을 띠지 않는다. 통상 VM은 느리게 기동하고 격리된 환경에서 돌아가며 많은 컴퓨터 자원과 관리 시간을 소모하게 만드는데 WSL2은 그렇지 않다는 얘기다. WSL1이 그랬듯 윈도와 리눅스간의 고수준 통합, 빠른 부팅 시간, 적은 자원 점유량을 유지하고 VM에 따라오는 구성과 관리 불편이 없다.

리눅스 바이너리는 파일 접근, 메모리 요청, 프로세스 생성과 같은 여러 기능을 수행하기 위해 시스템 콜을 사용한다. MS는 WSL1를 만들기 위해 이런 시스템콜 대부분을 해석하는 일종의 번역 레이어를 만들고 그걸 윈도NT 커널 위에서 동작하게 했다. 그러나 이런 식으로 모든 시스템콜을 구현하기는 어려웠고 어떤 앱은 WSL1에서 쓸 수 없었다. WSL2는 자체 리눅스 커널을 써서 온전한 시스템 콜 호환성을 갖췄다.

MS는 WSL2의 성능을 강조했다. 특히 git clone, npm install, apt update, apt upgrade같은 파일처리 집약적 명령을 빠르게 처리할 수 있다고 밝혔다. 실제 속도는 사용자가 구동하는 앱과 거기서 파일시스템에 상호작용하는 방식에 달려 있지만, 초기 테스트에선 WSL1 대비 WSL2의 tar 압축파일 해제 속도는 20배 이상 빨랐고 git clone, npm install, 여러 프로젝트의 cmake 명령은 2~5배 더 빨랐다는 설명이다.

이날 MS는 윈도에 리눅스 커널을 담아 배포한다는 소식을 따로 정리해 개발자 블로그에 별도 포스팅으로 게재했다. 잭 해먼스 MS 리눅스시스템즈그룹 프로그램 매니저의 포스팅에 따르면 MS는 최신 WSL 버전에 MS가 직접 빌드한 리눅스커널이 쓰였으며 이는 올여름 배포되는 윈도 인사이더 시험판부터 탑재된다. [원문보기 ☞ Shipping a Linux Kernel with Windows]

MS는 WSL2에 탑재하는 커스텀 리눅스커널을 개발하면서 오픈소스 프로젝트의 업스트림 코드에 기여하기 시작했다. 해먼스 매니저는 "MS에서 중요한 리눅스 철학 하나가 모든 변화를 업스트림으로 보내는 것"이라며 "다운스트림 패치 관리는 복잡성을 늘리고 오픈소스 커뮤니티에 기여하는 표준 활동도 아니다"라고 썼다. 업스트림 코드 기여는 오픈소스 활동에 신뢰를 더하고 직접 변화를 창출한다는 지적이다.

관련기사

해먼스 매니저는 다만 신기능 구현이나 업스트림의 문제 해결을 위한 로컬 패치 작업이 필요한 개발기간이 존재하기 때문에, MS는 이런 제품 요구사항을 충족하는 패치를 만들거나 찾고 커뮤니티와 협력해 가급적 빨리 그 코드가 통합되도록 노력하겠다고 덧붙였다. 신기능같은 일부 패치는 LTS 브랜치의 안정성 보호 차원에서 커널의 미래 버전에만 포함되고 현재 시점 LTS 버전에 이식되지 않을 수 있다.

MS는 직접 밝히지 않았지만, 7일(현지시간) IT미디어 아스테크니카 보도에 따르면 WSL2의 리눅스커널은 MS의 가상화 기술 '하이퍼V' 기반 VM으로 구동된다. 그리고 리눅스커널은 GPL 오픈소스라이선스 기반이다. GPL 기반 코드를 변경해 만든 어떤 코드든지 함께 GPL로 배포돼야 한다. MS는 이를 수용할 예정이다. [원문보기 ☞ Windows 10 will soon ship with a full, open source, GPLed Linux kernel]