Windows Subsystem for Linux 1
목차
왜 Windows 10에서 Ubuntu를?
개발을 진행하다 보면 때때로 Windows 환경을 지원하지 않는 경우가 종종 있습니다. 그로 인해 우리는 가상머신 혹은 컨테이너나 Cygwin 같은 것을 이용해야 했습니다.
이런 문제점을 개선하기 위해 마이크로소프트와 우분투를 창립한 캐노니컬(Canonical)이라는 회사가 합작하여 우분투 리눅스에서 수행되는 Bash Shell 바이너리 그 자체를 Windows에서 수행할 수 있도록 만들었습니다.
이러한 기능을 Windows Subsystem for Linux
라 하여 줄여서 WSL
이라 부르고 있으며, 이것을 이용하면 오픈 소스 기반의 개발 환경을 쉽게 구축할 수 있습니다.
완성 모습
WSL
에 설치된 Ubuntu
로 실행한 Ubuntu 파일 관리자
, gnome-terminal
, atom
등을 Windows 환경에서 실행하였으며, 다음 캡처 화면은 웹 개발 환경을 쉽게 구성한 모습을 보여드렸습니다.
Ubuntu
에서 tomcat
을 설치하여 WebContent를 올려줍니다. 다음으로 Ubuntu의 Firefox가 아닌(같은 localhost 임을 보여주기 위해), Windows Chrome으로 Webcontent가 올라간 주소인 localhost:8080/dashboard/WebContent에 접속합니다. Dashboard가 정상적으로 나온 것을 확인할 수 있습니다.
이 모든 것을 이용하면 Windows에서 Ubuntu 개발 환경을 쉽게 구성할 수 있습니다.
Windows 10에서 Bash Shell 사용 설정하기
리눅스를 위한 윈도우 서브시스템을 설치
- 관리자 권한으로 Windows Power Shell을 실행합니다.
- 다음과 같은 명령어를 실행시켜 WSL을 활성화 시킵니다.
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
활성화된 WSL에 리눅스 설치하기
Windows 버젼 16215 이전
- Windows 버전을 확인하여 16215이전 버전이라면 다음 링크를 따라서 설치합니다.
- https://docs.microsoft.com/en-us/windows/wsl/install-win10#for-anniversary-update-and-creators-update-install-using-lxrun
Windows 버젼 16215 이후
Microsoft Store
에서Ubuntu
를 검색하여 설치합니다.
- 설치가 완료되면 User의 아이디와 암호 설정을 합니다.
기본 개발환경 구성하기
1. 루트의 비밀 번호를 설정
2. apt를 빠르게 이용하기 위해 다운 받는 주소를 변경 (해외주소 -> 국내주소)
- apt 주소를 변경하기 위해 sources list를 엽니다.
sudo vi /etc/apt/sources.list
- 글을 일괄적으로 모두 바꿔주기 위한 명령어를 사용합니다.
%s/archive.ubuntu.com/ftp.daum.net/g
- 마찬가지로 다음 명령어를 통하여 주소를 바꿔줍니다.
%s/security.ubuntu.com/ftp.daum.net/g
- 두가지를 완료한 뒤
wq!
를 입력하여 저장하고 나가줍니다.
3. 저장소를 update합니다.
sudo apt-get update
sudo apt full-upgrade
필수 설치 프로그램 제안
Network 개발 환경 구성을 기준으로 작성되었습니다.
sudo apt-get install build-essential libncurses5 libncurses5-dev kernel-package bin86 libssl-dev ftpd ssh wireshark iperf speedometer mpv git strongswan vim net-tools cmake nvidia-375 ubuntu-restricted-extras
각종 프로그램 설명입니다.
build-essential libncurses5 libncurses5-dev kernel-package bin86 libssl-dev
는 커널 컴파일을 위한 패키지입니다. (C, C++, Make 등 컴파일 환경 구성 포함)ftpd
ftp 서버 사용을 위한 패키지입니다.ssh
원격 접속을 위한 패키지입니다.wireshark
패킷 캡쳐를 위한 패키지입니다.iperf
네트워크 성능 측정을 위한 패키지입니다.speedometer
네트워크의 대역폭에 대한 모니터링을 할 수 있는 패키지입니다.mpv
리눅스에서 사용되는 플레이어 패키지입니다.git
git 사용을 위한 패키지입니다.strongswan
IPSec 사용을 위한 패키지입니다.vim
vi의 업그레이드 버전인 편집 툴 패키지입니다.net-tools
네트워크 관리자가 흔히 사용하는 여러 가지 기능들(명령어, 유틸리티 등)을 사용하기 쉽게 모아놓은 패키지입니다.cmake
멀티플랫폼 빌드 도구입니다.nvidia-375
그래픽 카드 드라이버입니다.ubuntu-restricted-extras
codec 등 미디어 라이브러리입니다.
아래의 구성은 고급 개발 환경 구성입니다.
WSL 환경에서 GUI 프로그램을 구성하는 것이 의미 있는 이유는, 개발 환경의 완전한 단일화와 프로그램 테스트 등에서 유용하게 쓰일 수 있기 때문입니다. 또한 VM 기반이 아니기 때문에 테스트와 사용 시 속도와 효율성 면에 있어서 매우 유리합니다.
GUI 프로그램 실행을 위한 개발 환경 구성
Microsoft에서 제공하는 WSL은 GUI 프로그램을 실행할 수 없습니다. Microsoft에서 GUI 프로그램의 실행에 필요한 X org 서버를 제공하지 않기 때문입니다. 그렇기 때문에 위와 같은 프로그램을 사용하려면 Windows 용 X org 서버를 설치하고 실행해야 합니다.
Windows 용 X org 서버 설치하고 실행하기
vcxsrv
서버를 다운로드하고 실행합니다.
https://sourceforge.net/projects/vcxsrv/
WSL 환경 설정 및 테스트하기
1. /etc/machine-id
파일 생성
- 아래와 같은 명령을 실행했을 때 16진수 형태의 GUID 값이 표시되면 정상적으로 파일이 만들어진 것입니다.
sudo systemd-machine-id-setup
sudo dbus-uuidgen - ensure
cat /etc/machine-id
2. x11-apps
패키지와 X Window System
기본 서체를 설치
sudo apt -y install x11-apps xfonts-base xfonts-100dpi xfonts-75dpi xfonts-cyrillic dbus-x11
3. vcxsrv 서버 설정을 현재 세션에서 사용하도록 구성하고 쉘을 다시 시작
export DISPLAY=:0
4. .bashrc 파일에 위의 설정을 적용한 뒤 저장
vim ~/.bashrc
5. vcxsrv 서버의 실행을 확인한 뒤 xeyes
명령을 친 뒤, 눈 모양의 위젯 확인
주요 응용프로그램 설치 및 설정
Firefox
인터넷 브라우저입니다.
sudo apt -y install firefox
firefox&
Nautilus, File Roller
Nautilus : 리눅스 기본 파일 관리자입니다.
File Roller : 압축 관리 프로그램입니다.
sudo apt -y install nautilus file-roller
nautilus&
Gnome Terminal
sudo apt -y install gnome-terminal
gnome-terminal&
한글 표시와 한국어 Locale 설정
sudo apt -y install language-pack-ko
sudo locale-gen ko_KR.UTF-8
sudo apt -y install fonts-unfonts-core fonts-unfonts-extra fonts-baekmuk fonts-nanum fonts-nanum-coding fonts-nanum-extra
Pinta
윈도우의 페인트 프로그램과 유사한 프로그램입니다.
sudo apt -y install pinta
pinta&
Atom
sudo add-apt-repository ppa:webupd8team/atom
sudo apt update
sudo apt install atom
atom&
MS Windows 추후 발전 방향
더 발전된 MS Windows Terminal
더 강력한 버전의 터미널을 MS에서 올해 2019년도 겨울에 1.0 버전으로 정식 출시하는 것을 목표로 하고 있다고 합니다. 오픈 소스로 Github에 공개되어 있으며, 여름에 MS 스토어에 프리뷰 버전을 출시한다고 하니 한번 써보는 것도 좋을 것 같습니다.
WSL2
기존의 WSL은 실제 Linux
가 아닌 NT 커널 위에 Linux ABI의 불완전한 기능 구현입니다. 그렇기 때문에 기존의 리눅스와 완벽하게 호환되지 않아, 정상적으로 작동하지 않는 꽤 많은 응용프로그램이 존재합니다. 이것을 해결하고자 MS에선 실제 Linux 커널을 탑재한 WSL2를 출시한다고 합니다.
아래의 게시글을 확인하면 자세한 내용을 확인하실 수 있습니다.
- https://devblogs.microsoft.com/commandline/announcing-wsl-2/
- http://m.zdnet.co.kr/news_view.asp?article_id=20190508070053&re=zdk#imadnews