2022년 2월 26일 토요일

Linux용 Windows 하위 시스템을 쓰게 되다

올해에는 입문자를 위한 미생물 유전체 분석 강좌를 개설하기로 하였다. 마지막으로 강사 역할을 했던 것이 벌써 2019년 11월이니 3년이라는 세월이 흘렀다. 이런 강좌를 준비할 때마다 항상 실습 환경을 마련하는 것이 고민이다. 수강생들이 리눅스 경험을 갖고 있을까? 리눅스 환경에 어느 정도는 익숙하다는 것을 전제로 준비를 해야 할까, 아니면 아예 없다고 가정하고 준비를 해야 할까? 리눅스에 대한 흥미를 유발하게 한다면 더할 나위가 없겠지만, 시커먼 화면에 글씨만 보이는 터미널에 대해서 거부감을 갖는 사람들이 적지 않다는 것이 현실이다.

2019년 강좌에서는 KOBIC에서 마련해 준 서버(우분투)에 프로그램과 실습용 데이터를 미리 설치한 다음 수업을 진행했었다. 그러나 교육 기간이 끝나면 서버를 닫아야 하니 복습 또는 심화 학습을 하기기 어려웠다. 나는 이를 대비하여 VirtualBox ova 파일과 스크립트를 별도로 배포하여 교육 기간이 끝난 뒤에도 직접 분석 과정을 경험해 보도록 나름대로 배려를 하였다.

올해 계획하고 있는 교육은 리눅스 경험이 없는 사람을 대상으로 할 것이다. 수강생들은 각자 노트북 컴퓨터를 갖고 오게 될 것이고, 윈도우 + 인터넷 환경에서 미생물 유전체 분석 과정에 대한 맛보기를 경험하게 될 것이다. 사실 아무리 초급 수준의 생명정보학이라 해도 리눅스를 배제하고 할 수 있는 일은 그렇게 많지 않다. 교육을 마치고 돌아간 뒤, 하드웨어 사양이 좋은 컴퓨터를 구입하여 리눅스를 설치한 뒤 직접 미생물 유전체 해독 자료(fastq file)를 조립하는 일이 생길 것을 기대하는 것은 어려울 것이다. 그러나 이 일이 정말로 필요함을 느끼게 되고, 그 과정이 어떻게 돌아가는지를 최소한 교육장에서는 체험해 볼 수 있게 하는 것이 나의 목표이다.

NCBI에서 직접 내려받았거나 시퀀싱 서비스 업체에서 받은 미생물 genome assembly가 있다고 가정하자. Contig는 몇 개이고, 길이는 얼마나 되고, 예측된 유전자의 수는 어떻고... 이런 것들은 전부 리눅스에서 명령행 한 줄이면 해결이 될 일이다. 상용 genomics tool을 쓰지 않아도 얼마든지 가능하다. 이런 체험을 하기 좋은 환경은 무엇일까? 교육 기간이 끝나면 쓰지 못하는 서버에 의존할 것이 아니라, 수강생이 준비해 온 노트북 컴퓨터에서 간단히 해결할 방법은 없는 것일까? 

이번에도 Oracle VirtualBox를 생각해 보았지만, 명령행 환경만 체험하기 위한 용도로는 너무 무겁고, 다소 복잡해 보이는 세부 설정 과정이 초보자에게는 부담이 될 것이다. 그러다가 대안으로 발견한 것이 바로 Linux용 Windows 하위 시스템(Windows Subsystem for Linux, WSL)이었다. 사용이 몹시 불편하던 기존의 명령 프롬프트를 대체함과 동시에 WSL과 파웨셸까지 포함하게 된 Windows Terminal을 같이 사용하면 명령행 기반으로 돌아가는 리눅스 프로그램을 실행하는데 불편함이 없다. WSL 환경에 설치한 우분투에 Conda를 이용하여 실습에 필요한 프로그램과 데이터를 받은 뒤, 이를 tar 파일로 export하여 수강생에게 배포하면 된다. 동등한 수준의 프로그램과 데이터를 받은 VirtualBox 파일보다 크기도 훨씬 작은 것 같다. GUI를 갖춘 JAVA 프로그램은 윈도우에서 직접 돌리면 된다.


VirtualBox를 통해서 리눅스를 사용할 때 느꼈던 어색함도 없고, 상호 파일을 전송하기 위해 공유폴더를 설정할 일도 없다. 그저 윈도우에서 탐색기를 열고 주소창에 '\\wsl$'라고 치면 된다. 또는 리눅스 쪽의 명령행에서 'explorer.exe .'를 쳐도 된다.

호스트 측과 게스트 간에 서로 사용할 자원(CPU나 메모리 및 디스크 공간)에 대한 경계를 확실히 세워 두고 작동하는 VirtualBox(그것이 장점이 되고 또 필요한 순간도 있을 것임)과는 달리 윈도우 안에서 작동하므로 이질감이 적고, 시스템 자원에 대한 특별한 경계가 없으니 유연한 운용이 가능할 것이다. 물론 VirtualBox는 리눅스를 호스트로 하여 쓸 수도 있다는 것이 큰 장점이다.

이러다가는 Cygwin을 쓸 사람이 하나도 없을 것 같다. Windows 11부터는 리눅스용 GUI 프로그램도 돌릴 수 있다고 하니 말이다.

어제 오후부터 WSL을 익히면서 세상이 이렇게 편해졌다는 사실에 새삼 놀라고 감탄하였다. 윈도우의 환경변수(%USERPROFILE% 또는 PowerShell 입장에서는 $env:USERPROFILE)에 대한 지식은 그동안 백지 상태였다가 이번 기회에 그 의미를 제대로 익히게 되었다.

경계가 허물어지는 세상이다. 여기에 더하여 Docker에 익숙해지면 정말 재미난 세상이 펼쳐질 것 같다.


댓글 1개:

Unknown :

안녕하세요. 박사님 블로그 잘 보고 있는 사람입니다. 지나가다 본 포스트를 보고 아이디어가 하나 떠올라서 댓글 남깁니다. 여러 사이트를 기웃거리다가 katacoda를 이용한 강좌가 있으면 재밌겠다고 생각한 적이 있어서요. 강의하신다니 옵션으로 고려해시는것도 좋을 것같다고 생각합니다. 저는 사실 NASP( Northern Arizona SNP Pipeline)를 써보려고 깃헙을 보다가 사이트를 따라 가보니 docker와 웹 CLI까지 되는 것을 보고 조금 재밌었습니다. 강의 샘플사이트(https://katacoda.com/corburn/scenarios/nasp)