Windows 10 Bash로 Ubuntu 개발환경 구성하기

Home

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 Power Shell



Windows 10에서 Bash Shell 사용 설정하기

리눅스를 위한 윈도우 서브시스템을 설치

  • 관리자 권한으로 Windows Power Shell을 실행합니다.
  • 다음과 같은 명령어를 실행시켜 WSL을 활성화 시킵니다.

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

Windows Power Shell

활성화된 WSL에 리눅스 설치하기

Windows 버젼 16215 이전

Windows 버젼 16215 이후

  • Microsoft Store에서 Ubuntu를 검색하여 설치합니다.

Windows Power Shell

  • 설치가 완료되면 User의 아이디와 암호 설정을 합니다.

Windows Power Shell



기본 개발환경 구성하기

1. 루트의 비밀 번호를 설정

Windows Power Shell

2. apt를 빠르게 이용하기 위해 다운 받는 주소를 변경 (해외주소 -> 국내주소)

  • apt 주소를 변경하기 위해 sources list를 엽니다.
    sudo vi /etc/apt/sources.list
  • 글을 일괄적으로 모두 바꿔주기 위한 명령어를 사용합니다.
    %s/archive.ubuntu.com/ftp.daum.net/g

Windows Power Shell

  • 마찬가지로 다음 명령어를 통하여 주소를 바꿔줍니다.
    %s/security.ubuntu.com/ftp.daum.net/g

Windows Power Shell

  • 두가지를 완료한 뒤 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

각종 프로그램 설명입니다.

  1. build-essential libncurses5 libncurses5-dev kernel-package bin86 libssl-dev 는 커널 컴파일을 위한 패키지입니다. (C, C++, Make 등 컴파일 환경 구성 포함)
  2. ftpd ftp 서버 사용을 위한 패키지입니다.
  3. ssh 원격 접속을 위한 패키지입니다.
  4. wireshark 패킷 캡쳐를 위한 패키지입니다.
  5. iperf 네트워크 성능 측정을 위한 패키지입니다.
  6. speedometer 네트워크의 대역폭에 대한 모니터링을 할 수 있는 패키지입니다.
  7. mpv 리눅스에서 사용되는 플레이어 패키지입니다.
  8. git git 사용을 위한 패키지입니다.
  9. strongswan IPSec 사용을 위한 패키지입니다.
  10. vim vi의 업그레이드 버전인 편집 툴 패키지입니다.
  11. net-tools 네트워크 관리자가 흔히 사용하는 여러 가지 기능들(명령어, 유틸리티 등)을 사용하기 쉽게 모아놓은 패키지입니다.
  12. cmake 멀티플랫폼 빌드 도구입니다.
  13. nvidia-375 그래픽 카드 드라이버입니다.
  14. ubuntu-restricted-extras codec 등 미디어 라이브러리입니다.



아래의 구성은 고급 개발 환경 구성입니다.
WSL 환경에서 GUI 프로그램을 구성하는 것이 의미 있는 이유는, 개발 환경의 완전한 단일화와 프로그램 테스트 등에서 유용하게 쓰일 수 있기 때문입니다. 또한 VM 기반이 아니기 때문에 테스트와 사용 시 속도와 효율성 면에 있어서 매우 유리합니다.


GUI 프로그램 실행을 위한 개발 환경 구성

Microsoft에서 제공하는 WSL은 GUI 프로그램을 실행할 수 없습니다. Microsoft에서 GUI 프로그램의 실행에 필요한 X org 서버를 제공하지 않기 때문입니다. 그렇기 때문에 위와 같은 프로그램을 사용하려면 Windows 용 X org 서버를 설치하고 실행해야 합니다.

Windows 용 X org 서버 설치하고 실행하기

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

Windows Power Shell

5. vcxsrv 서버의 실행을 확인한 뒤 xeyes 명령을 친 뒤, 눈 모양의 위젯 확인

Windows Power Shell



주요 응용프로그램 설치 및 설정

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를 출시한다고 합니다.

아래의 게시글을 확인하면 자세한 내용을 확인하실 수 있습니다.



관련 게시글



Reference