Skip to content

WSL 개발 환경 구축

title

Table of Contents

  1. WSL이란?
    1. WSL 2
  2. WSL 및 Ubuntu 설치
  3. C 컴파일러 (gcc) 설치
  4. Visual Studio Code에서 열기
  5. C 프로젝트 빌드 및 실행

WSL이란?#

WSL(Linux용 Windows 하위 시스템)은 별도의 가상 머신 또는 이중 부팅 없이 Windows 컴퓨터에서 Linux 환경을 실행할 수 있는 Windows의 기능이다. WSL은 Windows와 Linux를 동시에 사용하려는 개발자에게 원활하고 생산적인 환경을 제공하도록 설계되었다.

WSL로 할 수 있는 일들은 아래와 같다.

  • Ubuntu, Debian, Kali 등과 같은 다양한 Linux 배포를 설치하고 실행한다.
  • 설치된 배포와 관련된 격리된 Linux 파일 시스템에 파일을 저장한다.
  • bash와 같은 명령줄 도구를 실행한다.
  • 아래와 같은 다양한 Bash 스크립트 및 GNU/Linux 명령줄 애플리케이션을 실행합니다.
    • 도구: vim, emacs, tmux
    • 언어: NodeJS, JavaScript, Python, Ruby, C/C++, C# & F#, Rust, Go 등
    • 서비스: SSHD, MySQL, Apache, lighttpd, MongoDB, PostgreSQL.
  • 자체 GNU/Linux 배포 패키지 관리자를 사용하여 추가 소프트웨어를 설치한다.
  • Unix와 같은 명령줄 셸을 사용하여 Windows 애플리케이션을 호출한다.
  • Windows에서 GNU/Linux 애플리케이션을 호출한다.
  • Windows 데스크톱에 직접 통합된 GNU/Linux 그래픽 애플리케이션을 실행한다.
  • 디바이스 GPU를 사용하여 Linux에서 실행되는 Machine Learning 워크로드를 가속화한다.

WSL 2#

WSL 2는 Hyper-V 기술을 바탕으로 WSL 1 아키텍처에 비해 파일 시스템 성능을 향상시키고 모든 리눅스 system call에 대한 호환성을 제공한다.

wsl architecture

Windows의 NT 커널 위에서 Linux 시스템 콜을 에뮬레이션하는 WSL 1과 달리, WSL 2는 Hyper-V 하이퍼바이저를 통해 가상 머신을 생성하고 그 위에서 실제 Linux 커널을 실행하는 방식으로 동작한다. 이러한 구조로 WSL 2는 WSL 1에 비해 매우 향상된 파일 입출력 성능을 보이고, 거의 모든 Linux system call에 대한 호환성을 가진다. 또한, Docker와 같은 컨테이너 기술을 완벽 지원하여, 컨테이너화된 개발 환경을 구축할 수 있다.

wslg architecture

WSL 2는 하위 기능인 WSLg를 통해 Wayland 창 관리자인 Weston과 X11 창을 Wayland로 변환시켜 주는 XWayland를 내장하고 있어, X11 및 Wayland 기반의 Linux GUI 앱을 실행할 수 있다. WSL 내의 GUI 화면은 FreeRDP를 통해 Windows의 호스트에 전달되며, Windows에서는 RDP Client 앱을 통해 Linux GUI 창과 기존 Windows의 창 시스템을 자연스럽게 호환시킨다.

WSL 및 Ubuntu 설치#

Warning

WSL 2는 Windows 10, 버전 1903, 빌드 18362 이상 또는 Windows 11에서만 사용할 수 있다.

WSL은 다양한 Linux 배포판을 지원한다. 우리는 그 중 Ubuntu 24.04 LTS를 설치할 것이다.

Info

설치 가능한 Linux 배포판을 모두 확인하려면 Powershell에 wsl -l --online을 입력한다.

아래 그림을 참고하여 Powershell을 열고, 아래 명령어를 입력한다.

wsl install

wsl --install Ubuntu-24.04

alt text

위와 같이 출력되면 컴퓨터를 재부팅하고, 같은 명령어를 한번 더 입력한다.

ubuntu install

위와 같이 "배포가 설치되었습니다." 메시지가 표시되면 설치가 완료된 것이다.

다음으로, 아래 명령어를 입력하여 WSL을 실행한다. 최초 실행 시, 사용자 이름과 비밀번호를 설정하는 창이 표시된다.

wsl -d Ubuntu-24.04

set name

위 그림을 참고하여 사용자 이름과 비밀번호를 설정한다. 사용자 이름은 공백이나 한글을 제외한 영문자를 사용할 수 있으며, 꼭 Windows의 사용자 이름과 일치할 필요는 없다. 비밀번호 역시 Windows의 로그인 비밀번호와 일치하지 않아도 된다.

Danger

비밀번호 설정 시에, 입력 중인 비밀번호가 화면에 표시되지 않지만, 오류나 시스템 프리징이 아니고 정상적으로 입력되고 있는 상황이다.

만약 비밀번호를 잘못 입력해서 문제가 발생한 경우, wsl --unregister Ubuntu-24.04 명령어를 통해 Ubuntu를 제거하고, 위 과정을 반복하여 다시 설치하면 된다.

위 그림의 마지막 부분처럼, 초록색과 파란색 글자가 있는 bash 터미널이 표시된다면 설치가 정상적으로 완료된 것이다.


Ubuntu 설치가 완료되면, bash에 아래 2개의 명령어를 차례로 입력해 전체 패키지를 업데이트한다.

sudo apt update

apt update

sudo apt upgrade -y

apt upgrade

만약 WSL Bash 터미널 창을 닫았는데 다시 열고 싶다면, Windows의 시작 화면에서 'Ubuntu 24.04 LTS'를 찾아 실행하면 된다.

C 컴파일러 (gcc) 설치#

C 프로젝트의 빌드를 위해서는 C 컴파일러가 필요하다. 우리는 리눅스에서 일반적으로 사용되는 GCC(GNU Compiler Collection)를 사용할 것이다.

Bash에 아래 명령어를 입력한다.

sudo apt install build-essential

C 프로젝트 빌드에 필요한 기본적인 툴들인 gcc, make 등이 설치된다.

Visual Studio Code에서 열기#

터미널의 CLI만을 이용하여 모든 개발 작업을 진행하는 것은 번거롭고 불편하므로, 대신 Visual Studio Code를 사용할 것이다.

Windows에 Visual Studio Code가 설치되어 있지 않다면, Powershell을 열고 아래 명령어를 입력하여 Visual Studio Code를 설치한다.

winget install Microsoft.VisualStudioCode

이 명령은 WSL의 Bash가 아닌 Windows의 Powershell에서 실행해야 한다.

설치가 완료되면, Visual Studio Code를 실행한다.

왼쪽 탭의 'Extension'을 클릭하고, 'WSL' 확장 프로그램을 설치한다.

install vscode extension

화면 왼쪽 아래의 'Open a Remote Window' 클릭 → Connect to WSL using Distro → Ubuntu-24.04 순으로 클릭하여 VSCode에서 WSL 세션을 실행한다.

connect wsl to vscode

화면 왼쪽의 Explorer 탭 → 'Open Folder' → 'Ok' 순으로 클릭하여 WSL의 홈 디렉토리를 VSCode에서 연다.

open folder

C 프로젝트 빌드 및 실행#

해당 디렉토리에서 간단한 C 코드를 작성하고 빌드 및 실행해볼 것이다.

화면 왼쪽의 Explorer 탭 → 빈 공간 우클릭 → 'New File'을 클릭하여 새로운 파일을 만든다. 파일 이름은 main.c로 설정한다.

new file

아래 hello, world! 예제를 작성한다.

#include <stdio.h>

int main()
{
    printf("hello, world!\n");
    return 0;
}

상단 메뉴의 'Terminal' → 'New Terminal' (또는 단축키 Ctrl+Shift+`) 을 눌러 새로운 터미널을 열고, bash 터미널에 아래 명령을 입력하여 컴파일을 수행한다.

gcc -o main main.c

Tip

gcc -o main main.c 명령의 각 부분의 의미는 아래와 같다.

  • gcc: GCC 컴파일러를 실행하는 명령의 이름이다.
  • -o main: 출력 파일의 이름을 main으로 지정한다.
  • main.c: 컴파일할 소스 파일의 이름이다.

build

왼쪽의 탐색기 화면에 main 실행 파일이 생성되었음을 확인한다.

bash 터미널에 아래 명령을 입력하여 main 파일을 실행한다.

./main

run

References#