개발자를 위한, windows 10으로 시작하는 ubuntu linux

45
개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX 한국 AZURE 사용자 그룹 / MICROSOFT AZURE MVP 남정현

Upload: ubuntu-korea-community

Post on 28-Jan-2018

145 views

Category:

Software


6 download

TRANSCRIPT

Page 1: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

개발자를위한,

WINDOWS 10으로시작하는 UBUNTU LINUX한국AZURE 사용자그룹 / MICROSOFT AZURE MVP

남정현

Page 2: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

시작하기전에…

WSL은리눅스를활용하기위한여러방법중하나일뿐,

상황에따라적절할수도, 적절하지않을수도있습니다.

기존에사용하던OS나기술스택을바꾸실필요가없습니다.

Page 3: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

WINDOWS SUBSYSTEM FOR LINUX

WSL은 ELF64 바이너리에대하여,바이너리수준의호환성을보장하는리눅스실행환경입니다.

WSL로할수있는것

GREP, SED, AWK 등의유틸리티사용

VIM, EMACS, TMUX 등의도구사용

Node.JS, Ruby, Python, C/C++, C#, F#, Rust, Go 등의언어사용

리눅스콘솔에서Windows 프로그램실행

Windows 프로그램이리눅스프로그램실행

Page 4: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

WINDOWS SUBSYSTEM FOR LINUX

기존에나온것과의비교

CYGWIN: 소프트웨어수준에서의에뮬레이션

Cygwin 라이브러리와스택위에서리눅스코드를재컴파일하여Windows PE 파일을생성함

실행시CYGWIN이필요함

WINE: 소프트웨어수준에서의에뮬레이션

Virtualization: 격리환경을구축하여완전히독립된환경을보장. 그러나상호연동이어려움.

Docker: 가장유사하고근접함. 그러나Docker의기술을기반으로하지는않음.

Page 5: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

WINDOWS SUBSYSTEM FOR LINUX

할수없는것

커널드라이버, 커널컴파일및업데이트

가상화기술, Docker 컨테이너

OpenGL, SDL 등의멀티미디어기능

데몬, 자동실행되는백그라운드서버

Case by Case

X11 Apps

Tensorflow (without GPU)

Page 6: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

WINDOWS SUBSYSTEM FOR LINUX

MS Research의프로젝트중하나인Drawbridge 프로젝트의산출물중하나이기도합니다.

크게중요한요소두가지

ELF64 바이너리실행후프로세스 Pico Process

커널에뮬레이션및 System Call 해석 LX Core / LXSS

Page 7: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

WINDOWS SUBSYSTEM FOR LINUX

https://blogs.msdn.microsoft.com/wsl/2016/04/22/windows-subsystem-for-linux-overview/

Page 8: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

WINDOWS SUBSYSTEM FOR LINUX

파일시스템은두가지파트로구분됩니다.

VolFS: 리눅스에서필요로하는모든기능을Windows NTFS 파티션위에서에뮬레이션합니다.

DriveFS: Windows NTFS 파티션에접근할수있도록해줍니다. 특별한설정없이자동으로 /mnt디렉터리아래에C ~ Z 드라이브가마운트됩니다.

상호운용성

Linux Windows: 자유롭게접근하고읽거나쓸수있습니다.

Windows Linux: 파일이쓰여진내용은볼수있지만연동은되지않습니다.

Page 9: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

설치와사용

Windows 10에서WSL을사용하기로하셨다면이렇게하세요.

중요: Windows 10 Fall Creators Update

Windows 10 구입후Windows Update로업그레이드하세요.

이전버전에서는베타버전또는기능이제공되지않습니다.

환경준비사항

Windows OS 설치파티션의잔여공간을 2GB 이상확보하세요.

유선인터넷이나안정적인무선인터넷을사용하세요.

Page 10: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

설치와사용

일부안티바이러스프로그램은WSL 환경과충돌이있을수있습니다.

안티바이러스의인터넷방화벽때문에리눅스환경내의인터넷연결이차단될수있습니다.

Page 11: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

WINDOWS 10 다운로드및설치

https://www.microsoft.com/ko-kr/software-download/windows10

Windows PC에서접속하면Media Creation Tool을내려받게됩니다.

그외에는 ISO 파일을직접내려받게됩니다.

ISO 파일생성모드로진행

부팅USB 생성, DVD 굽기도가능합니다.

또는곧바로설치로들어갈수도있습니다.

Page 12: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

WINDOWS 10설치

OS를업그레이드할계획이라면바로업그레이드하셔도됩니다.

Windows: Hyper-V, VMWARE, Virtual Box 등의가상 PC 소프트웨어를활용하세요.

PC에QEMU 기반Android 에뮬레이터가설치되어있는경우에는 Hyper-V 사용이불가할수있습니다.

이때에는VMWARE나Virtual Box를대신사용하세요.

Linux, macOS: 원하는가상화소프트웨어를사용하세요.

Page 13: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

WINDOWS 10의버전확인

Page 14: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

리눅스서브시스템활성화하는방법

제어판프로그램및기능

좌측하단의Windows 기능켜기/끄기

Linux용Windows 하위시스템체크

확인클릭

Page 15: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

리눅스서브시스템활성화하는방법

Page 16: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

리눅스서브시스템활성화하는방법

Page 17: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

스토어에서 UBUNTU LINUX 설치하기

Microsoft Store 앱실행

검색어입력칸에Ubuntu 입력후검색

Ubuntu Linux 앱검색결과를확인후설치

설치시다운로드하는콘텐츠의크기가큰편이므로주의!

Page 18: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

스토어에서 UBUNTU LINUX 설치하기

Page 19: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

스토어에서 UBUNTU LINUX 설치하기

Page 20: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

빠르게재설치하는방법

리눅스시스템을간편하게초기화할수있습니다.

설정앱실행앱메뉴선택

앱및기능목록검색어입력란에Ubuntu 입력

Ubuntu 항목확인후고급옵션링크클릭

실행중인모든Ubuntu 콘솔종료 (중요)

초기화버튼클릭후기다림

초기화완료후다시실행

리눅스영역만초기화되며, Windows에는영향이없습니다.

작업파일은Windows 파일시스템경로에저장하는것이좋습니다.

Page 21: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

빠르게재설치하는방법

Page 22: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

빠르게재설치하는방법

Page 23: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

빠르게재설치하는방법

Page 24: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

WINDOWS 운영체제와함께사용하기

보통의리눅스와다른점이몇가지있습니다.

/mnt/c 폴더가존재합니다.

Windows 운영체제가설치된파티션이처음부터존재합니다.

리눅스터미널에서Windows EXE 파일을실행할수있습니다.

예: /mnt/c/Windows/System32/calc.exe

Windows 작업관리자에서리눅스프로세스를종료할수있습니다.

Pico Process도Windows 프로세스목록에잘잡힙니다.

Page 25: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

WINDOWS 운영체제와함께사용하기

웹에서리눅스용C 코드를받았다고가정해봅시다.

Edge나 Chrome으로다운로드받으면다운로드폴더에보통저장됩니다.

리눅스에서접근하려면어떻게해야할까요?

cd /mnt/c/Users/<사용자이름>/Downloads

혹은폴더창의주소표시줄에 bash 입력

혹은 cmd상태에서 bash 입력

이위치에서파일이나폴더를만들어작업합니다.

Page 26: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

상호연동

Page 27: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

WSL의진가: 상호연동

다음의프로그램을주로사용합니다.

BASH.EXE

WSLCONFIG.EXE

LXRUN.EXE는사용하지않습니다.

BASH.EXE

WSLCONFIG.EXE로설정한메인배포판과상호작용합니다.

특정배포판의명령어를대신사용할수도있습니다. (예: ubuntu.exe)

WSLCONFIG.EXE

스토어에서설치한여러배포버전중하나를기본으로택합니다.

Page 28: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

코드예시

@echo off

pushd “%~dp0”

%localappdata%\Microsoft\WindowsApps\ubuntu.exe -c “%1”

popd

@echo on

Page 29: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

코드예시

앞의배치파일을작성후아래와같이실행가능

CallUbuntu “ls –al /”

CallUbuntu “vi”

CallUbuntu

같은작업을C, C++, C#, Java 등에서수행가능

Visual Studio Code의경우 bash 셸을CMD나 POWERSHELL 대신 Interactive Shell로사용가능

Page 30: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

파일시스템상호연동

Linux Windows

/mnt디렉터리아래에서접근가능

Linux Windows로파일읽기/쓰기/삭제가능 (Windows의현재사용자와동일한권한범위내에서)

Windows Linux로파일가져오기가능

Windows 환경에서 bash.exe나 ubuntu.exe를실행하면디렉터리경로가자동으로맞추어짐.

Page 31: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

파일시스템상호연동

Windows Linux

불가.

단, App Data 폴더를통하여파일의내용을보거나모니터링을하는등의간접접근은가능 (하나권장되지않음)

Page 32: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

VISUAL STUDIO CODE와함께사용하기

http://code.visualstudio.com/

설치후기본설정 JSON 편집항목에다음항목을추가하거나변경합니다.

"terminal.integrated.shell.windows": "C:\\Windows\\System32\\bash.exe"

Ctrl + ` 키를눌러 Integrated Console을실행하여확인

Page 33: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

VISUAL STUDIO CODE와함께사용하기

Page 34: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

VISUAL STUDIO CODE + SPRING BOOT 개발

https://code.visualstudio.com/docs/languages/java

Visual Studio Code에서작업할프로젝트디렉터리열기

POM.XML 작성

Bash 셸에서 Java 8 SDK, Maven 설치

mvn install 명령실행

Java 코드작성

mvn package 명령실행

mvn spring-boot:run명령실행

Page 35: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

VISUAL STUDIO CODE + SPRING BOOT 개발

Page 36: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

VISUAL STUDIO CODE + SPRING BOOT 개발

통합콘솔을이용하여빌드에필요한아티팩트생성과컴파일을네이티브리눅스로진행

편집기는Windows의편집기를사용

Language Server 이외에 Java Debugger도지원

Page 37: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

LOMBOK지원

Lombok 플러그인로딩지원

"java.jdt.ls.vmargs": "-noverify -Xmx1G -XX:+UseG1GC -XX:+UseStringDeduplication -javaagent:\"C:\\Tools\\lombok\\lombok.jar\" -Xbootclasspath/a:\"C:\\Tools\\lombok\\lombok.jar\""

Page 38: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

X WINDOW SYSTEM 실행

Page 39: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

이런것이가능합니다.

Page 40: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

CHROME도실행가능합니다.

Page 41: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

X WINDOW SYSTEM 실행

Microsoft는X Window System 서버를제공하지않습니다.

오픈소스커뮤니티에서개발한X Window System서버를대신사용하여 X11 App을실행합니다.

Xming, VCXSRV 외기타서버가존재합니다.

OpenGL 지원이필요한경우VCXSRV를권장합니다.

Page 42: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

X WINDOW SYSTEM 실행

기본적으로는Win32 X11 서버와TCP 통신을함

Xming, VCXSRV 등을활용. (VCXSRV 권장)

DISPLAY=localhost:0.0 변수설정필요

테스트해본프로그램

Firefox, Nautilus, Eclipse, Inkscape, GIMP 등기본유틸리티

Page 43: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

X WINDOW SYSTEM 실행

Google Chrome 등OpenGL이나DBUS실행이필요한경우

NO_AT_BRIDGE=1 변수설정필요

exec dbus-run-session –- bash

sudo service dbus start

https://github.com/Microsoft/WSL/issues/648

PulseAudio는지원하지않기때문에관련패키지는제거필요

Page 44: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

X WINDOW SYSTEM 실행

어디까지나테스트/디버그목적으로만활용해야합니다.

프로덕션용으로는검증되지않았습니다.

Chrome에서WebGL관련예제코드를실행하려고했을때 BSoD가발생하기도합니다.

더자세한내용은블로그포스트에서따로다루고있습니다.

https://www.medium.com/@rkttu

Page 45: 개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX

고맙습니다!