## 0.1 Windows Subsystem for Linux 2 (WSL2) 환경의 심층 최적화

## 0.1 Windows Subsystem for Linux 2 (WSL2) 환경의 심층 최적화

기업과 연구소의 인프라 특성상 윈도우 OS 데스크톱을 포기할 수 없는 개발자들에게, 과거의 사이그윈(Cygwin)이나 버추얼박스(VirtualBox) 급의 무거운 가상머신은 최악의 빌드 컴파일 지연을 안겨주는 파멸의 길이었다. 그러나 마이크로소프트의 WSL2 (Windows Subsystem for Linux 2) 하드웨어 하이퍼바이저 아키텍처가 등장하면서, 윈도우 유저도 네이티브 리눅스 대비 95% 이상의 파괴적인 툴체인 성능을 뿜어낼 수 있는 합법적 루트가 뚫렸다. 이 강력한 WSL2 잠재력을 한계점까지 끌어올리는 심층 마이그레이션 기법을 분해한다.

디스크 계층 병목: /mnt/c 의 덫에서 탈출하기
WSL2 초심자들이 가장 흔히 저지르는 끔찍한 실책은, 윈도우 호스트의 텍스트 편집기(VS CODE 등) 접근성을 높이겠답시고 바탕화면 공간이나 C 드라이브 어딘가에 소스 코드를 클론해두고, 리눅스 터미널에서 /mnt/c/Users/... 경로를 타고 들어가 빌드를 강행하는 행위이다.
WSL2 아키텍처는 리눅스 내장 9P 파일 시스템 위주로 최적화되어 있다. 리눅스가 타국의 윈도우 포맷인 NTFS 파일 시스템(/mnt/c/) 경계(Boundary)를 넘어 수천 개의 타겟 텍스트 파일과 목적 파일(.o) I/O 스트림을 주고받을 때 극심한 **프로토콜 번역 병목(Translation Bottleneck)**이 발생한다. 1분이면 끝날 Ninja 빌드가 이 경계선을 타는 순간 10분~수십 분으로 수직 하락한다. 타겟 코드는 반드시 리눅스(WSL2)의 홈 디렉토리(~ 또는 /home/user/) 내부, 즉 ext4.vhdx 가상 하드디스크 심연에만 보관해야 압도적인 하드 드라이브 IOPS의 가속을 100% 흡수할 수 있다.

USB Passthrough: usbipd-win을 통한 하드웨어 장벽 돌파
빌드는 무결하게 끝났지만, 컴파일 완료된 기계어(.px4)를 QGroundControl 없이 콘솔 다이렉트로 날려 꽂으려(make px4_fmu-v6c upload) 할 때 거대한 장벽이 가로막는다. WSL2는 기본적으로 호스트 머신의 물리적인 USB 버스(Bus) 인터페이스를 가상 공간으로 직통 패스스루(Passthrough) 해주지 않는다.
이를 뚫어내기 위해서는 Microsoft의 공식 오픈소스 툴킷인 usbipd-win을 윈도우 호스트 권한으로 장착해야 한다. 이 데몬은 윈도우 포트에 꽂힌 드론 기판(Pixhawk 장치)의 혈관을 가로채어, TCP/IP 네트워크 소켓 계층을 타고 WSL2 내부의 커널 우주 공간으로 다이렉트 바인딩시켜 버린다. usbipd bind -b <busid> 명령이 발포되는 순간 리눅스 머신 내부에 기적처럼 /dev/ttyACM0 노드가 팝업되며, 개발자는 네이티브 우분투와 완벽히 동일한 콘솔 플래싱의 짜릿한 속도를 쟁취하게 된다.