개발이나 엔지니어들은 마이크로소포트의 Hyper-V 또는 VMWare의 VMWare Workstation, 오라클의 Vurtual PC 등을 이용해 Windows 운영체제에서 Linux 운영체제를 사용하곤 한다.

하지만 이제 궂이 별도의 가상화SW를 설치하지 않더라도 보다 손쉽게 Windows 운영체제에서 Linux를 설치하고 테스트할 수 있게 되었다.

바로 Windows 10 2004 버전부터 지원되는 WSL 2를 사용하면 된다. 물론 이전에도 WSL이 지원되긴 하였지만 기술적으로 "완성"단계에 올랐다고 보기 어렵고 성능이나 환경 측면에서도 사용을 권하기에는 많이 부족하였다.WSL 버전 1은 리눅스의 커널을 포함하지 않고 리눅스 커널 호환 인터페이스를 통해 리눅스의 실행파일(ELF)을 단지 실행시키는 것을 목표로 만들어졌기 때문에 진정한 리눅스라 할 수 없었다.

그러나 Windows 10 2004 버전에 포함된 Windows subsystem for Linux (WSL) 버전 2는 리눅스의 온전한 커널을 기반으로 만들어져 Hyper-V 가상화 플랫폼에서 구동되도록 변경되었다. 때문에 100%는 아닐지라도 거의 온전한 리눅스라 할 수 있다.

이는 MS에서 제공하는 WSL 1과 WSL 2의 비교 표에서 쉽게 확인할 수 있다.

wsl 1 vs wsl 2 비교wsl 1 vs wsl 2 비교

wsl 2 를 사용하기 위해서는 먼저 Windows 의 버전을 확인해야 한다.

다음과 같이 winver.exe를 실행한다.

Windows 10 버전 2004 이상에서만 실행된다고 보면 된다.


WSL 및 Ubuntu 리눅스 설치하기

Windows 10이 2004 이상 버전이라면 명령 프롬프트를 관리자 권한으로 실행한뒤 다음 명령어를 입력하고 실행하여 WSL을 사용할 수 있도록 활성화 한다.

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

wsl 기능 활성화wsl 기능 활성화

다음은 WSL 버전 2를 사용할 수 있도록 Hyper-V 가상머신 플랫폼을 활성화시킨다. 만약 이 기능을 활성화하지 않으면 WSL 버전 1만 사용가능한 것으로 보인다.

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

VirtualMachinePlatform 활성화 하기VirtualMachinePlatform 활성화 하기

위의 두 명령어가 성공적으로 실행되었다면 PC를 리부팅해준다. 그렇지 않으면 wsl 명령이 실행되지 않는다. 만약 실행된다면 이전에 WSL이 설정되었었다고 보면 된다.

다음은 WSL 2 리눅스 커널 구성요소를 업데이트 한다. 만약 Windows 10 2004를 처음 설치하고 WSL 2로 기본버전을 변경하고자 한다면 "WSL 2에 커널 구성 요소 업데이트가 필요합니다.~~~"라는 메시지가 출력되면서 실행되지 않는다.

https://docs.microsoft.com/ko-KR/windows/wsl/wsl2-kernel

WSL 2 리눅스 커널 다운로드WSL 2 리눅스 커널 다운로드

WSL2 Linux Kernel을 다운로드 받고 실행한다.

WSL 2 리눅스 커널 업데이트WSL 2 리눅스 커널 업데이트

WSL 2 커널 업데이트까지 완료되면 다음과 같이 이미 설치되어 있는 WSL의 목록을 본다. 아마 최초라면 아무것도 설치된 배포 없다고 나올 것이다.

wsl -l -v

배포된 WSL 리눅스 머신 목록확인배포된 WSL 리눅스 머신 목록확인

WSL을 설치하고 WSL 버전 2를 사용할 준비가 완료되었으므로 앞으로 설치(배포)되는 리눅스를 기본적으로 버전 2로 설치하도록 설정한다.

wsl --set-default-version 2

기본 버전을 2로 변경해주지 않으면 버전 1으로 설치된다. 꼭 실행해주자.

이제 마이크로소프트 스토어를 실행해 다음과 같이 ubuntu 리눅스를 검색하고 설치하자. 

Microsoft Store에서 Ubuntu 리눅스 검색Microsoft Store에서 Ubuntu 리눅스 검색

설치버튼을 누른다.

Ubuntu 20.04 LTS 설치Ubuntu 20.04 LTS 설치

Ubuntu 20.04 LTS 다운로드 중...

Ubuntu 20.04 LTS 다운로드 중Ubuntu 20.04 LTS 다운로드 중

다운로드가 완료되면 초기 설정을 위해 "실행" 버튼을 누른다.

Ubuntu 20.04 LTS 초기 실행Ubuntu 20.04 LTS 초기 실행

인스톨 과정이 진행되고 다음과 같이 Unix username과 New Password를 입력하라고 한다. 원하는 Linux 계정명을 입력하고 비밀번호를 입력하면 설치가 완료된다.

Ubuntu 20.04 LTS 버전 초기 실행Ubuntu 20.04 LTS 버전 초기 실행

설치가 완료되고 새로 입력한 계정으로 로그인 된 화면

Ubuntu 20.04 최초 로그인Ubuntu 20.04 최초 로그인

이제 WSL에 설치된 Ubuntu를 사용하면 된다. exit 명령을 통해 Ubuntu에서 빠져나갈 수 있고 다시 로그인하고자 한다면 명령행 또는 Windows 상태바의 실행창에서 wsl 을 입력하면 다시 Ubuntu에 접속할 수 있다.

그렇다면 지금 설치된 Ubuntu 20.04 LTS 버전이 wsl 버전 1이 아닌 버전 2로 설치되었는지 확인해보자.

wsl -l -v

Ubuntu 20.04 LTS가 WSL 버전 2로 설치되어 있음을 알 수 있다.


WSL에 설치된 Ubuntu의 IP 확인 및 SSH 접속 설정하기

WSL 2에 설치된 리눅스는 Hyper-V 기반의 가상머신 형태로 구동되는 것으로 보인다. 그리고 가상머신 이라면 IP가 할당될 것이고 호스트인 Windows 10에서 가상머신으로 SSH 접속도 가능할 것이다.

먼저 Ubuntu 20.04 LTS에 할당된 IP를 확인해보자.

ifconfig -a를 실행해보면 다음과 같이 IP정보가 보인다.

172.23.35.255가 eth0에 할당되어 있음을 알 수 있다. ( ifconfig를 실행하려면 sudo apt-get install net-tools 명령을 실행하여 명령어를 설치해야 한다. ) 

실제 호스트인 Windows의 IP와는 전혀 다른 IP다. 그렇다면 Windows에 가상 이더넷 스위치가 생성되었을 것이다. Windows의 네트워크 연결정보의 어댑터 등록정보를 확인한다.

네트워크 연결정보 - 네트워크 어댑터 정보네트워크 연결정보 - 네트워크 어댑터 정보

예상대로 Hyper-V를 활성화하면 생성되는 vEthernet 이 만들어져 있고 WSL에서 사용중임을 표시하고 있다. 따라서 호스트의 명령행 창에서 ipconfig 명령을 실행해본다.

명령행 창에서 ipconfig 실행명령행 창에서 ipconfig 실행

예상대로 WSL 2의 Ubuntu 20.04 LTS와 동일한 IP 대역의 IP (172.23.32.1) 가 vEthernet에 할당되어 있다. 

그렇다면 WSL 2에 설치된 Ubuntu 리눅스로 SSH 접속을 위한 설정을 해본다. 처음 ssh 서비스를 구동하면 SSH의 호스트키가 없어 구동이 되지 않는다. 다음의 명령으로 SSH 호스트키를 생성한다.

sudo ssh-keygen -A

그리고 SSH 서비스를 구동한다.

그런데... 테스트해 보니 비밀번호 인증을 통한 접속이 차단되어 있다.

다음과 같이 비밀번호 인증 방식을 사용할 수 있도록 변경한다. 

sudo vi /etc/ssh/.sshd_config

SSH의 Password 인증 활성화SSH의 Password 인증 활성화

PasswordAuthentication 옵션을 찾아 yes로 변경하고 저장한다.

SSH 서비스를 재구동 한다.

SSH 서비스 재구동 하기SSH 서비스 재구동 하기

호스트의 명령행 창에서 ssh 명령을 통해 WSL 2에 설치된 Ubuntu 리눅스에 접속을 다음과 같이 해본다.

WSL 2에 설치된 리눅스에 ssh 접속하기WSL 2에 설치된 리눅스에 ssh 접속하기


WSL 2에서 실행중인 리눅스 종료하기

wsl 2에서 실행중인 리눅스는 root 권한을 통해 shutdown 명령을 실행하면 종료가 되지 않는다. 그 이유는 아직 알 수 없지만 뭔가 제약사항이 있는 듯 하다. 

다만 호스트의 명령행에서는 종료할 수 있다.

wsl --shutdown <name>

여기서 Name은 wsl 에서 지정된 가상머신의 이름이다. 위와 같이 wsl의 가상머신을 종료하면 로그인되어 있던 창이 강제로 종료되며 안전하게 리눅스가 종료된다.

#wsl2 #wsl2의_리눅스에_ssh접속하기

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기

댓글을 달아 주세요

">