Download - 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX
![Page 1: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/1.jpg)
개발자를위한,
WINDOWS 10으로시작하는 UBUNTU LINUX한국AZURE 사용자그룹 / MICROSOFT AZURE MVP
남정현
![Page 2: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/2.jpg)
시작하기전에…
WSL은리눅스를활용하기위한여러방법중하나일뿐,
상황에따라적절할수도, 적절하지않을수도있습니다.
기존에사용하던OS나기술스택을바꾸실필요가없습니다.
![Page 3: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/4.jpg)
WINDOWS SUBSYSTEM FOR LINUX
기존에나온것과의비교
CYGWIN: 소프트웨어수준에서의에뮬레이션
Cygwin 라이브러리와스택위에서리눅스코드를재컴파일하여Windows PE 파일을생성함
실행시CYGWIN이필요함
WINE: 소프트웨어수준에서의에뮬레이션
Virtualization: 격리환경을구축하여완전히독립된환경을보장. 그러나상호연동이어려움.
Docker: 가장유사하고근접함. 그러나Docker의기술을기반으로하지는않음.
![Page 5: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/5.jpg)
WINDOWS SUBSYSTEM FOR LINUX
할수없는것
커널드라이버, 커널컴파일및업데이트
가상화기술, Docker 컨테이너
OpenGL, SDL 등의멀티미디어기능
데몬, 자동실행되는백그라운드서버
Case by Case
X11 Apps
Tensorflow (without GPU)
![Page 6: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/6.jpg)
WINDOWS SUBSYSTEM FOR LINUX
MS Research의프로젝트중하나인Drawbridge 프로젝트의산출물중하나이기도합니다.
크게중요한요소두가지
ELF64 바이너리실행후프로세스 Pico Process
커널에뮬레이션및 System Call 해석 LX Core / LXSS
![Page 7: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/7.jpg)
WINDOWS SUBSYSTEM FOR LINUX
https://blogs.msdn.microsoft.com/wsl/2016/04/22/windows-subsystem-for-linux-overview/
![Page 8: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/8.jpg)
WINDOWS SUBSYSTEM FOR LINUX
파일시스템은두가지파트로구분됩니다.
VolFS: 리눅스에서필요로하는모든기능을Windows NTFS 파티션위에서에뮬레이션합니다.
DriveFS: Windows NTFS 파티션에접근할수있도록해줍니다. 특별한설정없이자동으로 /mnt디렉터리아래에C ~ Z 드라이브가마운트됩니다.
상호운용성
Linux Windows: 자유롭게접근하고읽거나쓸수있습니다.
Windows Linux: 파일이쓰여진내용은볼수있지만연동은되지않습니다.
![Page 9: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/9.jpg)
설치와사용
Windows 10에서WSL을사용하기로하셨다면이렇게하세요.
중요: Windows 10 Fall Creators Update
Windows 10 구입후Windows Update로업그레이드하세요.
이전버전에서는베타버전또는기능이제공되지않습니다.
환경준비사항
Windows OS 설치파티션의잔여공간을 2GB 이상확보하세요.
유선인터넷이나안정적인무선인터넷을사용하세요.
![Page 10: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/10.jpg)
설치와사용
일부안티바이러스프로그램은WSL 환경과충돌이있을수있습니다.
안티바이러스의인터넷방화벽때문에리눅스환경내의인터넷연결이차단될수있습니다.
![Page 11: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/13.jpg)
WINDOWS 10의버전확인
![Page 14: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/14.jpg)
리눅스서브시스템활성화하는방법
제어판프로그램및기능
좌측하단의Windows 기능켜기/끄기
Linux용Windows 하위시스템체크
확인클릭
![Page 15: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/15.jpg)
리눅스서브시스템활성화하는방법
![Page 16: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/16.jpg)
리눅스서브시스템활성화하는방법
![Page 17: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/17.jpg)
스토어에서 UBUNTU LINUX 설치하기
Microsoft Store 앱실행
검색어입력칸에Ubuntu 입력후검색
Ubuntu Linux 앱검색결과를확인후설치
설치시다운로드하는콘텐츠의크기가큰편이므로주의!
![Page 18: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/18.jpg)
스토어에서 UBUNTU LINUX 설치하기
![Page 19: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/19.jpg)
스토어에서 UBUNTU LINUX 설치하기
![Page 20: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/20.jpg)
빠르게재설치하는방법
리눅스시스템을간편하게초기화할수있습니다.
설정앱실행앱메뉴선택
앱및기능목록검색어입력란에Ubuntu 입력
Ubuntu 항목확인후고급옵션링크클릭
실행중인모든Ubuntu 콘솔종료 (중요)
초기화버튼클릭후기다림
초기화완료후다시실행
리눅스영역만초기화되며, Windows에는영향이없습니다.
작업파일은Windows 파일시스템경로에저장하는것이좋습니다.
![Page 21: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/21.jpg)
빠르게재설치하는방법
![Page 22: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/22.jpg)
빠르게재설치하는방법
![Page 23: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/23.jpg)
빠르게재설치하는방법
![Page 24: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/24.jpg)
WINDOWS 운영체제와함께사용하기
보통의리눅스와다른점이몇가지있습니다.
/mnt/c 폴더가존재합니다.
Windows 운영체제가설치된파티션이처음부터존재합니다.
리눅스터미널에서Windows EXE 파일을실행할수있습니다.
예: /mnt/c/Windows/System32/calc.exe
Windows 작업관리자에서리눅스프로세스를종료할수있습니다.
Pico Process도Windows 프로세스목록에잘잡힙니다.
![Page 25: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/25.jpg)
WINDOWS 운영체제와함께사용하기
웹에서리눅스용C 코드를받았다고가정해봅시다.
Edge나 Chrome으로다운로드받으면다운로드폴더에보통저장됩니다.
리눅스에서접근하려면어떻게해야할까요?
cd /mnt/c/Users/<사용자이름>/Downloads
혹은폴더창의주소표시줄에 bash 입력
혹은 cmd상태에서 bash 입력
이위치에서파일이나폴더를만들어작업합니다.
![Page 26: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/26.jpg)
상호연동
![Page 27: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/27.jpg)
WSL의진가: 상호연동
다음의프로그램을주로사용합니다.
BASH.EXE
WSLCONFIG.EXE
LXRUN.EXE는사용하지않습니다.
BASH.EXE
WSLCONFIG.EXE로설정한메인배포판과상호작용합니다.
특정배포판의명령어를대신사용할수도있습니다. (예: ubuntu.exe)
WSLCONFIG.EXE
스토어에서설치한여러배포버전중하나를기본으로택합니다.
![Page 28: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/28.jpg)
코드예시
@echo off
pushd “%~dp0”
%localappdata%\Microsoft\WindowsApps\ubuntu.exe -c “%1”
popd
@echo on
![Page 29: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/29.jpg)
코드예시
앞의배치파일을작성후아래와같이실행가능
CallUbuntu “ls –al /”
CallUbuntu “vi”
CallUbuntu
같은작업을C, C++, C#, Java 등에서수행가능
Visual Studio Code의경우 bash 셸을CMD나 POWERSHELL 대신 Interactive Shell로사용가능
![Page 30: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/30.jpg)
파일시스템상호연동
Linux Windows
/mnt디렉터리아래에서접근가능
Linux Windows로파일읽기/쓰기/삭제가능 (Windows의현재사용자와동일한권한범위내에서)
Windows Linux로파일가져오기가능
Windows 환경에서 bash.exe나 ubuntu.exe를실행하면디렉터리경로가자동으로맞추어짐.
![Page 31: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/31.jpg)
파일시스템상호연동
Windows Linux
불가.
단, App Data 폴더를통하여파일의내용을보거나모니터링을하는등의간접접근은가능 (하나권장되지않음)
![Page 32: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/32.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/33.jpg)
VISUAL STUDIO CODE와함께사용하기
![Page 34: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/34.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/35.jpg)
VISUAL STUDIO CODE + SPRING BOOT 개발
![Page 36: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/36.jpg)
VISUAL STUDIO CODE + SPRING BOOT 개발
통합콘솔을이용하여빌드에필요한아티팩트생성과컴파일을네이티브리눅스로진행
편집기는Windows의편집기를사용
Language Server 이외에 Java Debugger도지원
![Page 37: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/37.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/38.jpg)
X WINDOW SYSTEM 실행
![Page 39: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/39.jpg)
이런것이가능합니다.
![Page 40: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/40.jpg)
CHROME도실행가능합니다.
![Page 41: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/41.jpg)
X WINDOW SYSTEM 실행
Microsoft는X Window System 서버를제공하지않습니다.
오픈소스커뮤니티에서개발한X Window System서버를대신사용하여 X11 App을실행합니다.
Xming, VCXSRV 외기타서버가존재합니다.
OpenGL 지원이필요한경우VCXSRV를권장합니다.
![Page 42: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/42.jpg)
X WINDOW SYSTEM 실행
기본적으로는Win32 X11 서버와TCP 통신을함
Xming, VCXSRV 등을활용. (VCXSRV 권장)
DISPLAY=localhost:0.0 변수설정필요
테스트해본프로그램
Firefox, Nautilus, Eclipse, Inkscape, GIMP 등기본유틸리티
![Page 43: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/43.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/44.jpg)
X WINDOW SYSTEM 실행
어디까지나테스트/디버그목적으로만활용해야합니다.
프로덕션용으로는검증되지않았습니다.
Chrome에서WebGL관련예제코드를실행하려고했을때 BSoD가발생하기도합니다.
더자세한내용은블로그포스트에서따로다루고있습니다.
https://www.medium.com/@rkttu
![Page 45: 개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX](https://reader035.vdocuments.net/reader035/viewer/2022082205/5a6d00b27f8b9ab8418b4d95/html5/thumbnails/45.jpg)
고맙습니다!