TECH 으로 돌아가기
TECH HACKER NEWS 오늘 7분 읽기 26 READS

WSL을 리눅스에서: nsl, 호스트를 건드리지 않는 개발 머신

윈도우 사용자에게 WSL(Windows Subsystem for Linux)은 이제 익숙한 도구다. 호스트 운영체제를 그대로 둔 채 리눅스 배포판을 얹어 개발 도구를 설치하고, 세션이 끝나도 패키지와 파일이 보존되는 이 방식은 개발 환경 격리의 사실상 표준이 됐다. 그런데 정작 리눅스를 데스크톱으로 쓰는 사람에게는 이와 비슷하게 매끄러운 선택지가 마땅치 않았다. 최근 Hacker News에 'Show HN'으로 공개된 nsl은 바로 이 빈자리를 겨냥한다. 이름 그대로 'WSL for Linux', 즉 리눅스 호스트를 위한 WSL 스타일의 개발 머신을 표방한다.

핵심 발상은 단순하다. Debian이나 Fedora 같은 별도의 리눅스 머신 안에 개발 도구를 몰아 설치하고, 정작 호스트 시스템은 손대지 않은 채로 둔다. 각 머신은 패키지, 서비스, 파일을 세션 간에 유지하며, 필요할 때 켜진다. 구조적으로는 공유 VM 하나를 띄운 뒤 그 안에서 여러 머신을 systemd-nspawn 컨테이너로 돌리는 방식이다. 즉 VM의 커널 격리와 컨테이너의 가벼운 인스턴스 관리를 결합한 형태로, 호스트 커널을 직접 공유하는 순수 컨테이너보다는 경계가 뚜렷하다.

호스트와 자연스럽게 이어지는 작업 흐름

nsl이 WSL을 닮았다고 말하는 이유는 사용 감각에 있다. 프로젝트 디렉터리에서 nsl을 실행하면 기본 머신의 셸이 열리고, 같은 파일을 그대로 다룬다. 명령 하나만 실행하고 싶으면 nsl run을 쓰며, 그 종료 상태(exit status)가 호스트로 되돌아온다. 이는 셸 스크립트나 Makefile, CI 파이프라인에서 nsl을 중간 단계로 끼워 넣을 때 중요한 성질이다. 명령의 성공·실패가 그대로 전달돼야 자동화가 깨지지 않기 때문이다.

파일 접근 방식도 실무적으로 다듬어져 있다. 사용자의 $HOME, /run/media/USER, /mnt이 머신 안에서 /mnt/host 아래로 노출된다. 게다가 머신은 호스트와 동일한 사용자명, UID, GID를 쓰기 때문에 머신 안에서 만든 파일도 여전히 호스트에서 본인 소유로 남는다. 컨테이너 작업에서 흔히 겪는 root 소유 파일 문제나 UID 불일치로 인한 권한 꼬임을 구조적으로 피한 셈이다. 머신 안에서는 비밀번호 없는 sudo도 제공된다.

개발 서버를 다룰 때의 경험도 신경 썼다. 머신 안에서 개발 서버를 띄우면 포워딩된 포트를 호스트의 127.0.0.1에서 접근할 수 있다. 또 Waypipe를 통해 Wayland 애플리케이션이 호스트 데스크톱에 창을 열 수 있어, GUI 도구까지 격리된 머신 안에 두고 화면만 호스트로 끌어오는 구성이 가능하다.

이미지 선택과 신뢰 경계

배포판 선택지는 넓다. Debian, Ubuntu, Fedora, CentOS Stream, Arch, openSUSE Tumbleweed 또는 Leap 중에서 고를 수 있고, 이미지들은 매주 다시 빌드된다. 여기서 눈여겨볼 대목은 nsl이 이미지를 쓰기 전에 그것이 서명된 Frostyard 퍼블리싱 워크플로에서 나온 것인지 검증한다는 점이다. 공급망 신뢰를 이미지 배포 단계에서 확인하려는 설계로, 외부에서 받은 개발 환경 이미지를 무비판적으로 실행하는 관행에 견주면 진일보한 접근이다.

신뢰 수준을 사용자가 조절할 수 있다는 점도 특징이다. 믿기 어려운 소프트웨어를 다룰 때는 --isolated 옵션을 쓰면 해당 머신이 자체 VM을 갖고, 호스트 파일이나 데스크톱, 호스트 조작 권한에 접근하지 못한다. 편의성을 위해 열어둔 호스트 연동을 상황에 따라 완전히 끊어낼 수 있다는 뜻이다. 이처럼 nsl은 전체가 사용자 권한으로 실행되며, 호스트에 패키지를 설치하거나 장치 권한·그룹·sudoers를 바꾸지 않는다. 대신 호스트 쪽 사전 요구 사항은 사용자가 먼저 갖춰 둬야 한다.

아직은 실험 단계라는 전제

다만 도입을 고려한다면 성숙도에 대한 냉정한 판단이 필요하다. nsl은 아직 안정 릴리스가 없다. 현재의 v0.4.0이 이 설계의 첫 릴리스이며, v0.3.0 이전은 폐기된 프로토타입이라고 밝히고 있다. 검증된 호스트 환경 역시 상당히 좁아서, x86-64 위의 Snow Linux 13에 systemd 261.2, QEMU 10.0.13, virtiofsd 1.13.2, GNOME Wayland 조합에서 테스트됐다고만 명시돼 있다. 다시 말해 다른 배포판이나 하드웨어, 데스크톱 환경에서의 동작은 아직 보장 범위 밖이다.

그럼에도 이 프로젝트가 던지는 방향성은 분명하다. 리눅스 사용자에게 '호스트를 깨끗이 유지하면서 프로젝트별로 다른 개발 환경을 즉시 오갈 수 있는' 경험은 그동안 도커, 배포판 컨테이너 도구, 수동 VM 사이를 오가며 어렵게 조합해 온 것이었다. nsl은 그 조각들을 WSL이 정립한 사용성 언어로 다시 묶으려 한다. 현재로선 검증 환경이 좁고 안정 버전이 없어 프로덕션 투입 대상은 아니지만, 파일 소유권과 신뢰 경계를 처음부터 설계에 넣은 점은 비슷한 도구를 고민하는 실무자에게 참고할 가치가 있다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://frostyard.github.io/nsl/
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...