naroSEC
article thumbnail

들어가기 앞서

Windows 환경에서 Linux를 실행하는 방법은 크게 두 가지로 나뉜다. 첫 번째는 VMware나 VirtualBox와 같은 가상화 소프트웨어를 통해 리눅스 이미지를 설치하고 실행하는 방식이다. 이 방법은 리눅스의 모든 기능을 제약 없이 사용할 수 있으며, 하나의 호스트 시스템에서 여러 운영체제를 동시에 실행하고 각각을 독립적으로 운영할 수 있다는 장점이 있다. 그러나, 이 방식은 많은 시스템 자원을 소비하고, 호스트와 가상머신 간 파일 공유나 시스템 전환이 복잡하며, 실행 속도가 상대적으로 느리다는 단점이 있다.

두 번째 방법은 WSL(Windows Subsystem for Linux)을 이용하는 것이다. WSL은 가상화 소프트웨어에 비해 설치 및 설정이 매우 간단하며, Windows Store를 통해 리눅스 배포판을 쉽게 설치할 수 있어 별도의 이미지 파일을 찾는 번거로움을 덜어준다. 또한, Windows와 리눅스 간의 파일 시스템 접근이 원활하고, 두 운영체제의 애플리케이션을 통합하여 작업할 수 있는 환경을 제공한다. 다만, WSL은 Windows에 의존하는 구조이기 때문에 VMware나 VirtualBox처럼 완전히 독립된 운영체제로 사용할 수는 없다. 그럼에도 불구하고, Linux 서버 테스트나 Docker 사용 시에는 가상화 소프트웨어보다 WSL을 사용하는 것이 더 선호된다.

 

이번 포스팅에서는 Windows OS 환경에서 WSL 2를 설치한 후, 이를 VSCode와 연동하여 서버를 설정하는 방법에 대해 다뤄보겠다.


WSL이란?

WSL(Windows Subsystem for Linux, 이하 WSL)은 Windows OS(10, 11) 환경에서 Linux OS를 사용할 수 있도록 지원하는 기능이다. Winodws OS 설치 시 Microsoft에서 제공하는 모듈을 설치함으로써, Windows 운영체제에서 별도의 가상머신이나 듀얼 부팅 없이 Linux 배포판을 실행할 수 있게 해준다.

 

WSL에는 WSL 1과 WSL 2라는 두 가지 버전이 존재한다. 먼저 WSL 1은 Windows 커널에서 Linux 커널 시스템 호출을 번역해 실행하는 방식이다. 이는 가상화 기술을 사용하지 않기 때문에 저 사양 환경에서도 Linux를 실행할 수 있다는 장점이 있지만, Linux OS 커널 호환성 이슈가 있어 제한적인 사용이 가능하다.

 

반면, WSL 2는 가상화 환경에서 Linux 서버를 동작시키므로 완전한 커널 사용이 가능해 Docker와 같은 복잡한 시스템 수준의 소프트웨어도 원활하게 실행할 수 있다.


WSL 2 설치

1. 파워쉘(PowerShell) 터미널에서 [그림 1]과 같이 설치 명령어를 입력해준다.

  ※ 참고로, WSL 설치 시 디폴트 옵션으로 Ubuntu 24.xx 버전이 함께 설치된다.

wsl --install

[그림 1] WSL 설치

2. 설치가 되었다면, WSL 기본 버전을 2로 설정해준다.

wsl --set-default-version 2

[그림 2] WSL 기본 버전 지정

 

3. "Microsoft Store"에서 "Windows Terminal"을 설치해준다.

  ※ Windows Teminal 외 cmder 등 다른 명령 프롬프트 도구를 사용해도 무방하다.

[그림 3] Windows Terminal 설치

 

4.1 설치한 Windows Terminal을 실행한 다음에 [그림 4]와 같이 상단의 "+" 아이콘을 클릭한다. 이후, 디폴트 옵션으로 설치된 Ubuntu를 선택해주고 사용자 계정을 생성해주면 된다.

[그림 4] Ubuntu 실행

 

4.2 "Windows Terminal" 외 다른 명령 프롬프트 도구를 사용하는 경우 [그림 5]와 같이 콘솔 창에서 "wsl" 명령어를 입력하면 된다. 이후, [4.1] 과정과 동일하게 기본 사용자 계정을 생성해주면 된다.

[그림 5] 터미널 외 다른 명령 프롬프트 도구 사용 시 wsl 접근 방법

 

5. 위 과정이 정상적으로 완료되면, [그림 6] 처럼 Ubuntu에 정상적으로 접근할 수 있음을 확인할 수 있다.

[그림 6] WSL을 통해 접근한 Ubuntu 서버


VScode 연동

호스트 환경에서 WSL을 통해 Linux 서버에 접근할 때, 터미널에서 간단한 명령어로 쉽게 접근할 수 있다는 장점이 있지만, 파일 공유 및 코드 작성과 같은 개발 작업에서는 불편함이 있을 수 있다. 따라서 개발 목적으로는 주로 VSCode와 연동하여 사용하는 것이 일반적이다.

 

1. VSCode 플러그인에서 "WSL"을 검색하여 설치해준다.

[그림 7] VSCode 확장에서 WSL 플러그인 설치

 

2. 이후, VSCode에서 WSL을 연동하는 방법은 두 가지로 나눌 수 있다. 첫 번째 방법은 [그림 8]과 같이 터미널을 통해 WSL에서 설치된 리눅스 배포 서버에 먼저 접속한 후, 작업하고자 하는 디렉터리 위치에서 "code ." 명령어를 입력하는 것이다.

[그림 8] VSCode 연동 첫 번째 방법

 

3. 두 번째 방법은 터미널을 사용하지 않고 VSCode에서 직접 연결하는 방법이다. ① VSCode 하단에 있는 원격 연결 아이콘을 클릭한다. ② "WSL에 연결" 옵션을 선택한다.

[그림 9] 원격 연결 시도

 

4. 리눅스 서버와 정상적으로 연결되면, [그림 10]과 같이 VSCode의 "폴더 열기" 기능을 사용하여 원하는 작업 디렉터리로 이동하면 된다.

[그림 10] WSL 연동 후, 디렉터리 이동

 

5. [그림 11]과 같이 이동한 디렉터리에 위치한 파일들을 확인할 수 있다.

[그림 11]


VSCode WSL 연동 오류

간혹 VSCode에서 WSL 연동 시 [그림 12]와 같은 연결 관련 오류가 발생한다.


libstdc++ is required to run the VSCode Server:
Please open an Alpine shell and run 'apk update && apk add libstdc++'

[그림 12] WSL 연동 오류

 

이 오류는 WSL에 Ubuntu 외에 다른 배포 이미지가 설치된 경우, VSCode가 Ubuntu가 아닌 다른 리눅스 서버로 연결을 시도하면서 발생하는 문제이다.
대표적으로, 해당 오류는 WSL을 통해 Ubuntu 서버를 설치하기 전에 Docker Desktop을 사용했던 사용자들에게서 주로 나타난다.


1. 먼저, 터미널에서 아래 명령어를 입력하여 WSL에 설치된 배포 이미지를 확인한다. 이때, Ubuntu 외 다른 이미지에 "기본값"이 설정되어 있다면, 이를 변경해야 한다.

wsl --list --all

[그림 13] WSL에 설치된 배포 이미지 확인

 

2. 아래의 명령어를 통해 설치된 "Ubuntu" 서버를 기본 배포판으로 설정해준다.

wsl --set-defualt Ubuntu

[그림 14] 기본 배포판 이미지 변경

 

3. VSCode 하단의 원격 연결 아이콘을 클릭 후, "WSL에 연결" 옵션이 아닌 "배포판을 사용하여 WSL에 연결"을 선택한다.

[그림 15] 배포판을 이용한 WSL 연

 

4. [그림 13]에서 설정한 기본 배포판 이미지인 "Ubuntu"를 선택하면, 원격 연결이 정상적으로 이루어진다.

[그림 16] 원격 서버 선택

profile

naroSEC

@naroSEC

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...