ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [WSL]윈도우에서 리눅스 시스템 사용하기
    개발환경 구축 2023. 12. 22. 22:13

     

     원도우가 GUI가 잘되어 있어 일반적인 목적으로는 사용하기 편리하지만, 개발을 하기에는 불편한 점이 많다. 리눅스를 사용해보았다면 알 수 있겠지만, 명령줄(Command Line)에서 작업할 일이 많은 특성상 리눅스가 개발하기에는 편리하다는 생각이 든다. 대표적으로 운영체제에 GCC, Python 등이 내장되어있을 뿐만이 아니라 커맨드라인에서 시리얼 통신을 하는 minicom(윈도우에서는 PuTTY, VScode 확장등의 프로그램을 별도로 설치해야 하거나, IDE에서 제공하는 것을 사용해야한다.)이 이를 잘 보여준다. 덧붙여 최근에 winget의 등장으로 CLI 환경에서 프로그램 설치가 쉬워지긴 하였지만, sudo apt install 프로그램1, 프로그램2 ... 이런 식으로 입력하고 잠시 눈붙이면 되는 리눅스와 다르게 윈도우는 winget을 사용하더라도 중간중간 사람이 콤보 박스를 선택하거나 동의 버튼을 눌러주기 위해서 하염없이 기다릴 수 밖에 없다. 이번 포스팅에서는 가상머신처럼 무겁지 않으면서, Windows Subsystem for Linux (WSL)를 사용해 윈도우에서 리눅스 명령을 사용하는 방법을 소개하고자 한다.

     

     1.Window Terminal

    윈도우 11이면 기본으로 설치되어 있으니 진행할 필요가 없으며, 필수 사항은 아니지만 매우 사용하기 편리하기에 설치하는 것을 추천한다.(명령줄 사용이 불편하다면 Microsoft Store에서 Window Terminal과 PowerShell을 검색해서 다운받으면 된다.)

    win + X키를 누른 뒤 A키를 눌러 관리자 권한으로 Windows PowerShell을 실행시킨다.

    winget install Microsoft.WindowsTerminal
    #또는
    winget install --id Microsoft.WindowsTerminal

    (참고로 winget install 다음에 프로그램 id를 입력하든, 이름을 입력하든 상관없다. 그러나 같은 이름이 여러개 있을 때는 id를 입력하여야 한다.)

    추가적으로 아래 명령어로 PowerShell도 설치하는 것을 추천한다.

    winget install Microsoft.PowerShell

     

    그러면 Win + R키를 누르고 wt를 입력, Enter를 누르면

    윈도우 터미널에 파워셀을 띄워둘 수 있다.

     

    2.Windows 설정

    관리자 권한의 Windows 파워셀(아까 설치한 것은 그냥 PowerShell이다.)에서 아래 명령어를 입력한 뒤, y를 입력하여 다시 시작한다.

    Enable-WindowsOptonalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
    #또는 DISM을 이용해도 된다.
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

    만약 WSL1이 아닌 WSL2를 사용하고 싶다면 가상화 기능까지 추가로 설치해야한다. 물론 CPU가 Hyper-V를 지원해야하고, Hyper-V 사용시 가상화 기술을 사용하는 다른 프로그램이 먹통될 수 있으니 주의하여야 한다.

     

    #WSL2 활성화 방법
    Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
    #참고로 아래처럼 DISM을 이용해도 된다.
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart 
    
    wsl.exe --set-default-version 2
    
    #Windows 11 이면 기본적으로 Hyper-V가 활성화되어 있지만 Windows 10인 경우 활성화해주어야 함
    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V
    #또는 dism 이용
    dism.exe /online /enable-feature /featurename:Microsoft-Hyper-V /all /norestart

    명령어가 어렵다면 Win + R ->control 입력으로 제어판 열기 -> 프로그램 ->프로그램 및 기능 -> 좌측에 Windows 기능 켜기/끄기를 통해 위의 기능들을 활성화시킬 수 있다.

    3.Ubuntu 설치

    참고로 우분투 말고, Kali Linux 등의 다른 리눅스를 설치할 수도 있으며, 방법은 Ubuntu와 유사하다. 해당 과정은 위의 윈도우 터미널 설치와 마찬가지로 Microsoft Store에서 다운로드 가능하다.

    winget search Ubuntu

    여러 버전의 우분투를 볼 수 있다.

    winget install Ubuntu

    다운로드에는 조금 시간이 걸린다.

     

    윈도우 터미널을 열어보면 아래와 같이 Ubuntu tab이 있다.

    만약 윈도우 터미널을 설치하지 않았어도 앱을 통해서 Ubuntu를 사용 가능하다.

     

    조금 기다리면 아래와 같은 화면이 뜬다.

    UNIX 시스템에서 username은 소문자, _(Underbar), -(dash)만 가능하며, 이름끝에 $표시는 붙이는 것은 선택사항이다. 이외의 문자를 사용하고 싶다면 "--force-badname" 옵션을 주어야 한다. username과 password입력하면 

    우분투 설치가 완료되며, 리눅스는 password 까먹으면 곤란하니 잘 관리하여야 한다.

    파워셀 등에서 위와 같이 wsl의 버전을 확인할 수 있으며, 아래 명령을 통해 이미 설치된 리눅스 배포판의 버전을 바꿀 수 있다.

    #이미 설치된 wsl 버전 변경 방법
    wsl --set-version <NAME> <Version>
    
    #예시 Ubuntu를 설치하였다면
    wsl --set-version Ubuntu 2

     

    또한 WSL는 윈도우 시스템에서 리눅스 파일에 손쉽게 접근할 수 있다. Win + E를 눌러 보면 아래와 같이 Linux 탭이 형성되어 있으며

    리눅스 파일을 쉽게 볼 수 있다. (참고로 home이라는 폴더를 열어보면 user들의 폴더가 있다.)

     

    VScode가 윈도우에 설치되어 있고, 환경변수에도 추가되어 있으면, 아래 명령어로 WSL내 소스코드를 윈도우 VScode로 편집할 수 있다. 

    code .

    처음이라면 그냥 윈도우랑 똑같은 상태로 열리는데, 요구하는 WSL 확장은 설치한 뒤, 다시 열면 Ctrl + ` 로 열리는 Command Line이 Ubuntu Command Line이 된다. 즉 윈도우에서 리눅스 컴파일 환경을 누릴 수 있는 것이다.(Ubuntu에 VScode Server가 설치되는 것이기 때문에 파이썬 확장, Cmake 확장등을 설치해주어야 한다.)

    4.개발환경 구축(선택사항)

    개발환경 구축 예시입니다.

    sudo apt update
    apt list --upgradable
    sudo apt upgrade
    #프로그램 다운로드
    sudo apt install gcc g++ gdb cmake ninja-build python3 python3-pip pythonpy nodejs git minicom #필요한거 다운로드 받기
    pip install numpy sympy pandas seaborn #필요한거 다운로드 받기
    
    #git config
    git config --global user.name "Your Name"
    git config --global user.email "youremail@domain.com"
    
    #ssh
    mkdir ~/.ssh
    chmod 700 ~/.ssh #change mode 사용자에게만 읽기, 쓰기, 실행 권한, 8진수(앞의 비트부터 읽기, 쓰기, 실행)이고 사용자, 그룹, 방문자 순임
    cd .ssh
    ssh-keygen -t rsa -b 4096 -C "youremail@domain.com"
    eval "$(ssh-agent -s)" #authentication agent 활성화, eval 은 문자열을 명령문으로 인식하고 실행하는 명령어
    ssh-add ~/.ssh/id_rsa

    *참고로 apt를 사용해도 되고, apt-get을 사용해도 된다. apt는 사용자 편의를 위해 apt-get에서 자주사용하는 기능을 추출해서 만든 것으로 메세지를 조금 더 디테일하게 출력해준다.

    *우분투를 설치하면 gcc, g++, python등은 기본으로 설치되있는데, WLS1에서는 설치해주어야 한다.

     

    4.1 gcc/g++ 최신버전으로 설치하기

    2023-12-22 기준 install gcc g++하면 gcc-11, g++-11이 기본적으로 설치된다. gcc-12, g++-13등을 설치하고 싶다면 아래 방법을 이용한다.

    sudo add-apt-repository ppa:ubuntu-toolchain-r/test #최신 컴파일러가 있는 레포지토리 추가
    sudo apt-get update
    sudo apt-get install gcc-13 g++-13 #gcc-12 등 원하는 버전으로
    
    #gcc-13, g++-13을 gcc, g++로 매핑
    #sudo update-alternatives --install (원래 대상) (명령어) (대체 대상) (우선순위)
    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 110 
    sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 110
    #gcc-11, gcc-13 이렇게 버전을 명시하여 사용할 수도 있다.

     

    4.2 ESP-IDF

    https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/linux-macos-setup.html

     

    Standard Toolchain Setup for Linux and macOS - ESP32 - — ESP-IDF Programming Guide latest documentation

    Navigate to your hello_world directory, set ESP32 as the target, and run the project configuration utility menuconfig. After opening a new project, you should first set the target with idf.py set-target esp32. Note that existing builds and configurations i

    docs.espressif.com

    sudo apt-get install git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
    cd ~
    mkdir esp
    cd esp
    git clone --recursive https://github.com/espressif/esp-idf.git
    cd esp-idf
    ./install.sh esp32
    #./install.sh all 로 하면 다른 esp MCU 뿐만이 아니라 별도의 파이썬까지 설치된다.
    #운영체제 파이썬의 pip dependency가 꼬일 경우 운영체제에 문제가 생길 수도 있으니, 별도의 파이썬 interpreter를 설치하는 것을 추천한다.
    vim ~/.bashrc
    #파일 맨아래에 아래 명령어 추가
    alias get_idf=". $HOME/esp/esp-idf/export.sh"
    #저장하고 나와서 변경사항 적용
    source ~/.bashrc
    #이후 get_idf를 입력하는 것으로 export.sh 실행가능
    #프로젝트 생성 및 컴파일 예시
    get_idf
    cd ~/esp
    mkdir hello
    cd hello
    idf.py create-project -p . hello

    VScode의 Intelisence가 제대로 작동하기 위해선 menuconfig을 먼저 진행한 다음(2023-12-16 수정), c_cpp_properties.json에 다음과 같은 옵션을 추가하야여야 한다.

    "compileCommands": "${workspaceFolder}/build/compile_commands.json"

    또한 한가지 마음에 드는 점은 window에서 작업할 때 menuconfig을 VScode 명령줄에서 실행하면 제대로 작동하지 않기 때문에 start idf.py menuconfig을 해야 되었는데 여기서는 그럴필요 없다는 점이다.

    idf메세지도 윈도우 보다 친절하게(개발자 기준) 출력이 된다.

    4.3 PowerShell

    https://learn.microsoft.com/ko-kr/powershell/scripting/install/install-ubuntu?view=powershell-7.4

     

    Ubuntu에 PowerShell 설치 - PowerShell

    Ubuntu에 PowerShell을 설치하는 방법에 대한 정보

    learn.microsoft.com

    ###################################
    # Prerequisites
    
    # Update the list of packages
    sudo apt-get update
    
    # Install pre-requisite packages.
    sudo apt-get install -y wget apt-transport-https software-properties-common
    
    # Get the version of Ubuntu
    source /etc/os-release
    
    # Download the Microsoft repository keys
    wget -q https://packages.microsoft.com/config/ubuntu/$VERSION_ID/packages-microsoft-prod.deb
    
    # Register the Microsoft repository keys
    sudo dpkg -i packages-microsoft-prod.deb
    
    # Delete the Microsoft repository keys file
    rm packages-microsoft-prod.deb
    
    # Update the list of packages after we added packages.microsoft.com
    sudo apt-get update
    
    ###################################
    # Install PowerShell
    sudo apt-get install -y powershell
    
    # Start PowerShell
    pwsh

     

    2023-12-27 wsl 버전 변경, Hyper-V 활성화 방법 추가

    댓글

Designed by Tistory.