수성컴전자방입니다. Windows PC에서 Linux를 써야 할 때 사용할 수 있는 방법은 가상 머신(VMware, Virtualbox 등)을 사용하는 방법과 듀얼부팅(멀티부팅)을 사용하는 방법이 있습니다. 오늘은 Microsoft에서 제공하는 기능인 WSL(Windows Subsystem for Linux)을 사용해 보겠습니다.
WSL은 버전에 따라 WSL1과 WSL2로 나뉩니다. WSL1은 가상 머신은 아니고 Windows NT 커널에서 리눅스 명령어가 동작하는 형태입니다.
오늘 설치할 것은 WSL2입니다.
(사진 출처: Microsoft Developer Youtube Channel. 2019.)
WSL2는 ‘Hyper-V’라는 가상화 소프트웨어를 통해서 동작합니다. 즉, 가상 머신을 만듭니다. 그러므로 WSL1에 비해 파일 시스템 성능과 호환성이 우수합니다. 그러면서도 WSL1의 사용성을 유지하여 Windows PC에서 Linux를 간편하게 이용할 수 있게 했습니다. 참고로 WSL2는 다른 가상화 소프트웨어와 달리 Hyper-V를 사용하여 Hypervisor 위에서 Windows NT 커널과 Linux 커널이 병렬적으로 올라갑니다.
여기까지 WSL2에 대한 소개였고, 이제 본격적으로 설치해 보겠습니다.
목차
1. 설치
2. Windows에서 WSL(Linux) 파일 접근
3. WSL(Linux)에서 Windows 파일 접근
4. 시작에서 WSL을 실행하는 방법
5. Windows Terminal에서 WSL을 사용하는 방법
6. Visual Studio Code에서 WSL을 사용하는 방법
1. 설치
1.1. 터미널을 실행합니다.
참고로 Windows Terminal 실행 방법은 시작 오른쪽 클릭(Windows+X)→터미널(I)입니다.
1.2. wsl --install 명령을 실행하면 WSL로 Ubuntu 최신 LTS 버전이 설치됩니다.
만약 다른 배포판을 설치하고 싶으시면 wsl --install <배포판 NAME>을 입력합니다.
설치할 수 있는 배포판 목록은 wsl --list --online 명령으로 확인하실 수 있습니다.
(참고: --list는 -l로, --online은 -o로 축약 가능)
1.3. ‘이 앱이 디바이스를 변경할 수 있도록 허용하시겠어요?’(한 번은 ‘Linux용 Windows 하위 시스템’, 다른 한 번은 ‘Host Process for Windows Services’)라는 창이 뜨면 예를 클릭합니다.
1.4. 가상 머신 플랫폼, Linux용 Windows 하위 시스템, Ubuntu가 설치되었습니다. 시스템을 다시 시작하면 변경 사항이 적용된다고 뜹니다.
PC를 재부팅합니다.
다시 시작하면 Ubuntu 창이 자동으로 열립니다(최초 1회).
1.5. Ubuntu에서 사용할 username을 입력합니다(Windows 계정명과 달라도 됨).
1.6. Ubuntu에서 사용할 비밀번호를 입력합니다(Windows 비밀번호와 달라도 됨). 키보드를 눌러도 화면에 아무 변화가 없을 텐데 실제로는 비밀번호가 입력되고 있으니 주의합니다.
1.7. 비밀번호 재확인합니다.
Ubuntu 설치가 완료되었습니다.
PowerShell 또는 CMD에서 wsl –list –verbose(--verbose 대신 -v를 써도 됨.) 명령을 실행하시면 설치된 Ubuntu의 WSL 버전을 확인하실 수 있습니다. 원하는 바와 같이 WSL2로 잘 설치되었네요.
1.*. 만약 WSL1으로 설치되었다면 --set-version Ubuntu 2 명령을 실행하여 WSL2로 변경할 수 있습니다.
1.**. WSL 버전 기본값을 변경하려면 --set-default-version <1 또는 2> 명령을 실행합니다.
2. Windows에서 WSL(Linux) 파일 접근
2.1. Windows 파일 탐색기 좌측에 있는 Linux를 클릭합니다.
2.2. Ubuntu로 들어갑니다.
2.3. 그러면 WSL로 설치한 Ubuntu 가상 머신의 파일들을 확인하실 수 있습니다.
참고로 \\wsl.localhost\Ubuntu로도 접근할 수 있습니다.
3. WSL(Linux)에서 Windows 파일 접근
WSL에서 Windows의 드라이브들은 /mnt/c, /mnt/d 등과 같이 마운트됩니다.
- C: → mnt/c
- D: → mnt/d
- E: → mnt/e
- …
WSL에서 cd 명령어를 사용하여 Windows 드라이브에 접근할 수 있습니다.
예) WSL에서 C 드라이브에 접근할 때: cd /mnt/c
위의 스크린샷은 Linux 명령어인 touch를 사용하여 Windows 파일 시스템에 빈 파일을 만든 모습입니다.
또는
PowerShell 또는 CMD에서 원하는 경로로 이동하신 후 wsl 명령을 실행하시면 해당 경로에서 WSL이 실행됩니다. 여러 배포판을 설치한 경우 아래를 참고하여 원하는 배포판으로 실행할 수 있습니다.
- wsl 명령 실행: 기본값 배포 실행
- wsl --distribution <배포판 NAME> 명령 실행: 배포판 NAME에 따른 배포 실행
- 예) wsl --distribution Ubuntu: Ubuntu 실행
- --distribution은 -d로 축약 가능
- wsl --set-default <배포판 NAME> 또는 wsl -s <배포판 NAME>: 배포 기본값 설정
4. 시작에서 WSL을 실행하는 방법
시작에서 Ubuntu 앱을 실행하시면
Ubuntu 창이 열립니다. 저는 기본 터미널 프로그램이 Windows Terminal로 되어 있어서 위와 같이 뜨는데, 기본이 Windows 콘솔 호스트로 되어 있으신 분들은 CMD처럼 창이 열릴 것입니다.
5. Windows Terminal에서 WSL을 사용하는 방법
터미널에서 새 탭을 열 때 펼침 메뉴를 클릭하여 WSL로 설치한 배포판(위의 스크린샷에서는 Ubuntu)를 실행하면 Windows Terminal에서 WSL을 실행할 수 있습니다.
이렇게 Ubuntu 터미널이 Windows Terminal 창에 나타났습니다. 그런데 모양 설정이 기본값대로 되지 않고 배경은 보라색, 커서는 블럭이 되었습니다. 모양 설정을 바꾸어 보겠습니다.
먼저 터미널에서 펼침 메뉴를 클릭하여 설정으로 들어갑니다.
5.1. 터미널 설정 좌측 프로필 목록에 있는 Ubuntu를 클릭합니다. Ubuntu가 2개 있는데, 이 중 주황색 로고가 있는 Ubuntu를 클릭합니다. 참고로 우리가 지금 편집할 프로필은 위의 스크린샷에서 하늘색으로 표시한 것같이 ‘드롭다운에서 프로필 숨기기’가 끔으로 되어 있습니다.
5.2. 모양으로 들어갑니다.
5.3. 원하시는 대로 설정하고 저장을 클릭합니다.
참고로 저는 커서 모양을 ‘막대’로 바꿨습니다.
이제 다시 Ubuntu 탭을 보시면 설정이 적용된 것을 보실 수 있습니다.
6. Visual Studio Code에서 WSL을 사용하는 방법
Visual Studio Code의 터미널 기능으로도 WSL을 사용할 수 있습니다.
wsltest.c에 테스트 코드를 작성해서 컴파일 해보겠습니다.
6.1. 터미널(T)을 클릭합니다.
6.2. 새 터미널을 클릭합니다.
6.3. 새 탭 여는 단추 옆 v를 클릭합니다.
6.4. WSL로 설치한 배포판(위의 스크린샷에서는 Ubuntu)를 클릭합니다.
6.5. WSL이 VS Code 터미널에서 실행되었습니다. 저는 터미널을 더 크게 보기 위해서 터미널을 오른쪽으로 옮기겠습니다.
GCC 설치가 안 되어 있어서 먼저 설치하겠습니다.
sudo apt update
sudo apt install gcc
gcc wsltest.c -o hellowsl.out 명령을 실행했더니 hellowsl.out 파일이 생성되었습니다.
*.out 파일을 Windows에서 실행할 수 없으니 WSL에서 실행해야 합니다.
./hellowsl.out 명령을 실행했더니 출력 결과가 나왔습니다.
7. 글 마무리
제 글을 읽어 주셔서 감사합니다. 참고로 WSL은 탭을 닫거나 exit 명령을 실행하면 자동으로 꺼집니다. (엄밀히 말하면 state가 running에서 stopped로 바뀜. wsl --list --verbose 실행 결과 참고.) 따라서 poweroff 등의 명령을 실행할 필요가 없습니다. 오늘 준비한 내용은 여기까지입니다. 다음에 만나요!
8. 참고 자료
1) Microsoft Developer. 2019. “The new Windows subsystem for Linux architecture: a deep dive - BRK3068
“, YouTube. (2023. 10. 14. 방문). https://youtu.be/lwhMThePdIo?si=W8TiPQ_7QfGkovo0
2) craigloewen-msft 외 16명. 2023. “Linux용 Windows 하위 시스템이란?”, Microsoft. (2023. 10. 14. 방문). https://learn.microsoft.com/ko-kr/windows/wsl/about