Windows Subsystem for Linux
Windows Subsystem for Linux(WSL)는 Microsoft에서 개발한 기능으로, Windows 운영 체제에서 Linux 환경을 직접 실행할 수 있게 해준다. 이는 별도의 가상 머신이나 이중 부팅 설정 없이도 가능하며, 개발자들이 Windows와 Linux의 장점을 동시에 활용할 수 있도록 설계되었다는 점에서 의미가 있다.
WSL은 2016년 Windows 10의 Anniversary Update에서 처음 도입되었다. 초기 버전인 WSL 1은 Windows 커널 위에 Linux 커널 인터페이스를 구현하여 Linux 바이너리를 실행할 수 있도록 했다고 한다. 그러나 시스템 호출 호환성에 제한이 있어 일부 Linux 애플리케이션의 실행에 어려움이 있었다는 단점이...
2019년, Microsoft는 WSL 2를 발표하며 기존 아키텍처를 개선했다. WSL 2는 실제 Linux 커널을 경량 가상 머신 내에서 실행하여 전체 시스템 호출 호환성을 제공하며, 파일 I/O 성능도 크게 향상되었다. 지금 내가 쓰는 우분투도 이 WSL2에 해당한다.
Linux 배포판 지원
Ubuntu, Debian, Kali Linux 등 다양한 배포판을 Microsoft Store를 통해 설치할 수 있다.
빠른 부팅과 적은 메모리 사용
WSL은 가상 머신보다 빠른 부팅 속도와 적은 메모리 사용량을 자랑한다.
Windows와의 통합
Windows 파일 시스템에 접근하거나, Windows와 Linux 간의 파일을 공유하기 용이하다.
특징 | WSL 1 | WSL 2 |
---|---|---|
아키텍처 | Windows 커널 위에 Linux 커널 인터페이스 구현 | 경량 가상 머신 내에서 실제 Linux 커널 실행 |
시스템 호출 호환성 | 제한적 | 전체 시스템 호출 호환성 제공 |
파일 I/O 성능 | 일반적 | 향상된 성능 |
네트워크 | Windows 네트워크 스택 사용 | Linux 네트워크 스택 사용 |
메모리 사용량 | 적음 | 다소 높음 |
WSL 활성화
관리자 권한으로 PowerShell을 실행하고 다음 명령어를 입력:
이 명령어는 WSL과 기본 Linux 배포판(Ubuntu)을 설치.
wsl --install
wsl --set-default-version 2
Linux 배포판 설치
Microsoft Store를 열고 원하는 Linux 배포판(Ubuntu, Debian 등)을 검색하여 설치
배포판 초기 설정
설치된 배포판을 처음 실행하면 사용자 이름과 비밀번호를 설정하라는 메시지가 나타난다.
이를 설정하면 기본적인 설치는 완료!
개발 환경 구축
Linux 기반의 개발 도구와 환경을 Windows에서 직접 사용할 수 있어 개발자들에게 유용하다.
아직 리눅스에 완전히 종속적인 도구는 몇개밖에 다뤄본 적 없어서... 엄청나게 체감되는 부분은 아니긴 하다.
스크립트 실행
Bash 스크립트나 기타 Linux 명령어를 Windows에서 실행할 수 있다.
개인적으로는 이 리눅스 명령어가 더 사용하기 편하기에... 프로젝트 파일 등은 일부러라도 WSL 상에서 다루고 있다.
교육 목적
Linux 환경을 학습하거나 테스트할 때 유용하다.
1학년 때 미리 써본 덕분에 어셈블리 실습에서 조금 더 편했던 게 생각난다...
파일 시스템 차이
Windows와 Linux의 파일 시스템 구조와 권한 관리 방식이 다르므로, 파일을 공유하거나 접근할 때 주의가 필요하다.
chmod를 자유자재로 쓰고, 1/2/4 가 대충 뭔지 안다면 이해했다고 말할 수 있지 않을까?
네트워크 설정
WSL 2는 가상 머신 기반이므로 네트워크 설정이 WSL 1과 다를 수 있다. 특히 포트 포워딩이나 네트워크 인터페이스 설정 시 주의해야 한다.
물론 주의 안 하면 애초에 설정하기가 어렵다...
호환성 문제
일부 Linux 애플리케이션은 WSL에서 완벽하게 동작하지 않을 수 있으므로, 사용 전에 테스트가 필요하다.
오늘의 주제는 개발자라면 익숙할 WSL 이었다. 처음엔 CLI라는 익숙하지 않은 환경에 매력을 느껴 발을 들였다가, 명령어로 작업을 처리하는 날 것(?)의 맛에 빠져 아직까지 사용 중이다. 가끔 연동되는 새로운 프로그램을 깔 때마다 설정이 제 혼자 날뛰어 곤란할 때가 있지만... 아직도 내 주요한 작업 공간이다.
오늘은 주제에 대해 깊게 들어가지는 않았지만, 어느 정도 생각해볼 만큼은 다뤘다 생각한다. 추후에 기회가 된다면 이쁘장하게 꾸미는 방법이나... 파일 시스템 등 조금 심오한 주제도 다뤄볼 생각이다. 물론 이 부분은 리눅스 공부가 조금 더 필요하겠지만...