근황 토크 및 자유게시판

[Windows 10] WSL2 설치 및 세팅

scone 2023. 4. 24. 14:04

윈도우에서 Docker를 사용하고 싶어서 WSL2를 설치하고자 한다.

 

환경

  • Windows 10 Education
  • 아래 코드는 PowerShell 관리자 모드에서 진행한 코드임을 밝힙니다.

 

WSL2 환경 세팅

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
  • Virtual Machine 기능 사용
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  • 또는 Windows 기능 켜기/끄기 에서 들어가 체크표시를 하고 재부팅을 하는것으로 해결 가능하다.
    'Linux용 Windows 하위 시스템', '가상 머신 플랫폼', 'Hyper-V' 기능을 체크

DISM (Deployment Image Servicing and Management)은 윈도우 이미지 (Windows images)와 관련된 조작을 위한 커맨드라인 명령어

 

WSL2 업데이트 패키지 설치

x64 머신용 최신 WSL2 Linux 커널 업데이트 패키지를 설치했습니다.

 

WSL 2를 기본 버전으로 설정

wsl --set-default-version 2

 

  • 이제 리눅스 베포판을 마이크로 소프트 앱스토어에서 설치해주었습니다.

설치 후 계정 시작 눌러주면 계정 이름과 비밀번호를 설정할 수 있습니다.

 

WSL 2 설치 확인

  • 설치한 리눅스 베포가 WSL 2 버전이 맞는지 확인해줍니다.
wsl -l -v

스토어 앱에서 Windows Terminal 을 깔아봤는데 터미널이 탭으로 들어가니깐 훨씬 편하네요.

 


WSL2 속도 개선

apt 저장소에 패키지를 다운로드할 때 archive.ubuntu.com으로 접속하는 것으로 기본 설정이 되어있다고 한다.

이는 한국에서 접속시 속도가 매우 느려지기 때문에 sources.list 파일을 수정하여 repository의 속도를 향상시킬 수 있다고 합니다.

 

  • WSL 실행 후 소스 리스트 편집 ( mirror.kakao.com 으로 수정 )
sudo vim /etc/apt/sources.list
:%s/archive.ubuntu.com/mirror.kakao.com

참고로 :wq 를 통해 저장하고 나올 수 있습니다.

  • DNS 네임서버 변경

kakao mirror로 접속 사이트를 바꾸고 나면 DNS 네임서버 문제로 작동이 잘 되지 않을 수 있다고 합니다.

따라서 그럴 때는 네임 서버를 구글 퍼블릭 서버로 변경하면 된다고 하여 해당 내용을 따라했습니다.

https://digiconfactory.tistory.com/entry/WSL2-%EC%9A%B0%EB%B6%84%ED%88%AC-apt-%EC%86%8D%EB%8F%84%ED%96%A5%EC%83%81

sudo vim /etc/resolv.conf
  • 편집 내용
# Google nameserver

nameserver 8.8.8.8

nameserver 8.8.4.4


# This file was automatically generated by WSL. To stop automatic generation of this file, 
add the following entry to /etc/wsl.conf:
# [network]
# generateResolvConf = false

  • 이후 업데이트를 진행해줍니다.
    ( update는 최신 내용을 기록, upgrade는 기록된 내용을 설치 )
sudo apt-get update
sudo apt-get upgrade

sudo apt update
sudo apt upgrade

apt-get은 apt의 구버전 코드로 사실상 같은 코드 입니다.

 

WSL2 리셋 문제

  • WSL2가 재시작할 때마다 nameserver 정보가 담긴 /etc/resolv.conf 파일을 자동으로 리셋하는 이슈가 있다고 합니다
    ( generate resolv conf를 false 로 했는데도 리셋하는가 보네요. )
sudo chattr +i /etc/resolv.conf

위의 명령어를 통해 파일 수정을 막을 수 있다고 합니다.

 

명령어가 안먹히면 -f 옵션을 넣어서 해볼 수는 있겠는데 맞는 방법인지는 잘 모르겠습니다.

 

개발 도구 세팅

개발 도구 세팅을 위한 설치를 진행해주고 본 게시글을 마치도록 하겠습니다.

sudo apt-get install build-essential
sudo apt-get install -y autoconf automake autopoint autotools-dev blt-dev debhelper dh-autoreconf
  dh-strip-nondeterminism diffstat docutils-common gettext intltool-debian
  libarchive-zip-perl libbluetooth-dev libbluetooth3 libbz2-dev libcroco3 libdb-dev
  libdb5.3-dev libexpat1-dev libffi-dev libfile-stripnondeterminism-perl libfontconfig1-dev
  libfreetype6-dev libgdbm-dev libice-dev libjs-jquery libjs-sphinxdoc libjs-underscore
  liblzma-dev libmpdec-dev libncursesw5-dev libpixman-1-0 libpng-dev libpthread-stubs0-dev
  libreadline-dev libsm-dev libsqlite3-dev libssl-dev libtcl8.6 libtext-unidecode-perl
  libtimedate-perl libtinfo-dev libtk8.6 libtool libx11-dev libxau-dev libxcb1-dev
  libxdmcp-dev libxext-dev libxfont2 libxft-dev libxkbfile1 libxml-libxml-perl
  libxml-namespacesupport-perl libxml-sax-base-perl libxml-sax-perl libxrender-dev
  libxss-dev libxss1 libxt-dev m4 pkg-config po-debconf python-babel-localedata
  python3-alabaster python3-babel python3-docutils python3-imagesize python3-lib2to3
  python3-pygments python3-roman python3-sphinx python3-tz quilt sgml-base sharutils
  sphinx-common tcl tcl-dev tcl8.6 tcl8.6-dev tex-common texinfo tk tk-dev tk8.6
  tk8.6-blt2.5 tk8.6-dev x11-xkb-utils x11proto-core-dev x11proto-dev
  x11proto-scrnsaver-dev x11proto-xext-dev xml-core xorg-sgml-doctools xserver-common
  xtrans-dev xvfb zlib1g-dev

원래는 build-essential 설치로 끝나는데 실제로 해보니깐 없는 개발 도구가 있다고 오류가 계속 나더라구요.

그래서 필요하면 아래와 같이 패키지들을 직접 설치해줄수도 있을 것 같습니다.