[컴] Windows Subsystem Linux (WSL) 설치

윈도우에서 리눅스 / 리눅서 서브시스템 / 서브 시스템 리눅스 설치 방법 / sshd

Windows Subsystem Linux (WSL) 설치

최신 version 의 wsl 설치

WSL 설치

설치 후 재부팅을 해야 한다.

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Linux distro 다운받기 및 설치

설치하기전에 wsl2 를 사용할 생각이라면, 아래 command 를 먼저 실행하자.

wsl --set-default-version 2

linux 배포판을 다운로드 한다. 가능한 목록은 여기서 확인할 수 있다.

최신 Ubuntu 는 Microsoft Store 를 이용하면 된다.(참고) store 에서는 다운로드 후 '실행' 버튼을 누르면 설치가 시작 된다.

# 다운로드 후 설치
Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1604 -OutFile Ubuntu.appx -UseBasicParsing;Add-AppxPackage .\Ubuntu.appx
Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1604 -OutFile Ubuntu.appx -UseBasicParsing
Add-AppxPackage .\Ubuntu.appx

삭제 방법

wsl -l -v
wsl --unregister <DistributionName>

app package 삭제

PS C:\Users\user> Get-AppxPackage *ubuntu* | Remove-AppxPackage

시작메뉴에서 Ubuntu 16.04 실행

시작메뉴로 가면, 방금 설치된 Ubuntu 에 대한 '바로가기'가 보인다. click 하면 약간의 설치를 더 하고, 바로 계정을 생성하는 화면을 보여준다.

이제 WSL 에서 windows command 를 실행할 수 있고, cmd 에서도 WSL command 를 실행할 수 있다.

wsl 에서 cmd.exe 를 치면, cmd 로 넘어가고, cmd 에서 wsl(또는 bash) 을 치면 wsl 로 넘어가게 된다.

$ cmd.exe
c:\> wsl
c:\> bash

ubuntu 에 기본적으로 python 이 깔려있어서, 아래처럼 하면 static server 를 띄울 수 있다.

$  python3 -m http.server

이렇게 하고나서, web browser 로 http://localhost:8000 에 접근하면 화면이 보인다.

windows 에서 wsl 파일 접근

\\wsl$를 사용해서 접근할 수 있다. (참고 : windows 에서 path 를 copy 한 path 를 wsl 에서 사용하기 위한 bash function)

실제로 linux file 에 대한 windows path 는 c:\Users\USERNAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs 이다. 이곳을 실제로 수정해선 안된다.

openssl server 설치

기본적으로 wsl 을 설치하면 openssl-server 가 설치되어 있다. 하지만 아래 글에서 그것이 완전한 package 가 아니라서, 지우고 다시 설치하라고 한다.

$sudo apt-get remove openssl-server

$sudo apt-get install openssl-server

이제 /etc/ssh/sshd_config 를 수정해주자. 위 글을 참고했다.

####################################################
# added or modified
AllowUsers userid

# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication yes

windows 가 실행될 때 자동으로 실행하도록 하기

A step by step tutorial on how to automatically start ssh server on boot on the Windows Subsystem for Linux running Ubuntu 18.04 · GitHub

그냥 windows 용 openssl 을 설치하는 것이 훨씬 나을 듯 하다.

VSCode 와 WSL을 이용한 개발

WSL2 vs WSL1

UX Changes between WSL 1 and WSL 2 | Microsoft Docs

WSL2 는 vm 으로 동작한다.

VHD(Virtual Hardware Disk) 를 사용한다. 최초 max size 는 256GB 이다. 넘어가면 수동으로 늘려줄 수 있다.

file system 으로 ext4 를 사용한다고 한다.

ip address 를 하나 할당 받게 된다.

Linux root file system 에 있는 파일에 대한 접근속도가 향상됐다.(cross OS 에 대한 이야기가 아니라, WSL내에서 WSL파일을 접근할 때를 이야기하는 듯 하다.)

WSL 2 가 가벼운 utility VM 을 Linux kernel 위에서 사용한다. 

  • 이 utility VM 이 "file system의 성능향상"과 "완전한 system call 호환"을 제공한다.
  • 이 utility VM 이  작은 메모리 흔적(footprint)을 갖는다.
  • 시작할 때 Virtual Address backed memory 를 할당할 것이다.

현재(2020-05-01)는 cross OS file speed 는 WSL1 보다 나쁘다.

hyper-v 를 사용한다.

그래서 vmbox 등의 다른 vt-x 를 사용하는 vm 과 사용하기 쉽지 않다.(windows 에서 hypervisor interface 를 제공하긴한다. 참고

virtual box 6.0 이상은 wsl2 와 같이 사용할 수 있긴 하지만, 아직 문제가 많아 보인다.

Update to WSL2

PS C:\Users\user> wsl --set-default-version 2
오류: 0x1bc
WSL 2와의 주요 차이점에 대한 자세한 내용은 https://aka.ms/wsl2를 참조하세요
PS C:\Users\user>

wsl1 에서 설치한 distro 는 자동으로 version 2 로 변경되지 않는다. 그래서 다시 설치했다.

install path 변경

See Also

  1. Learn About Windows Console & Windows Subsystem For Linux (WSL) | Windows Command Line
  2. How to Add Ubuntu Tab to Windows Terminal in Windows 10 : Windows Terminal 에 bash 추가하는 방법, 참고로, 가만히 있어도 자동으로 생성된다.
  3. WSL 에서 VM disk 위치
  4. Manual installation steps for older versions of WSL | Microsoft Learn : Error: 0x800701bc 인 경우 kernel update 로 해결이 될 수도 있다.(다른참고, Error: 0x800701bc)

Reference

  1. Get started with the Windows Subsystem for Linux - Learn | Microsoft Docs

댓글 없음:

댓글 쓰기