Computer

윈도우에서 linux 사용 (WSL 2), xwindows GUI 설정 (수정)

Novelism 2023. 2. 19. 22:58

계산과학 분야의 많은 프로그램들은 linux (서버) 환경에서 사용하도록 만들어져 있습니다.

맥이나 윈도우에서 사용 가능한 것들도 있지만, 아무래도 대규모 계산은 고성능 서버 (혹은 클러스터)에서 진행하는 것이 일반적이고, 이런 서버들은 주로 linux 운영체제를 사용합니다. 

 가벼운 연산의 경우는 PC나 워크스테이션 한대로도 어느 정도 할 수도 있고, 특히 CUDA 같은 GPU 컴퓨팅이 등장하면서 개인용 컴퓨터로도 (딥러닝 같은) 고성능의 연산이 가능해졌지만, 이런 작업에서도 여전히 linux를 많이 사용합니다. 

 

Microsoft에서 Windows Subsystem for Linux (WSL) 이라는 것을 제공합니다. 

말 그대로, 윈도우에서 리눅스를 서브시스템으로 사용할 수 있게 하는 것입니다. 

윈도우 10 부터 지원하긴 하지만, 요즘 주로 사용하는 윈도우라면 대부분 해당될 것입니다. 

예전에도 가상머신을 사용해서 윈도우에서 리눅스를 부팅하는 방법이 있었지만, 상당히 느리고 불편한 점이 많았습니다.

 WSL은 이전의 가성머신에 비해 속도가 빠르고, 그냥 리눅스로 부팅하는 것과 별로 다르지 않습니다.

 WSL2 는 좀 더 호환성이 좋아졌습니다. 

 사용자 입장에서 Linux와 WSL의 차이라고 한다면, linux를 직접 설치하면 보통 xwindows GUI 모드를 사용하지만, WSL은 기본적으로 리눅스 터미널만을 사용합니다. 그래도 GUI를 지원하는 프로그램들은 (gnuplot 등) GUI를 사용할 수 있습니다. 

 

WSL을 설치하는 방법은 여러가지가 있지만, 저는 다음과 같은 방법을 주로 사용합니다. 

윈도우 바탕화면 우클릭 -> 개인설정-> 검색메뉴: windows 기능 켜기/끄기 선택

-> Linuxwindows 하위 시스템 선택 -> 확인

을 선택하면 WSL 설치가 진행되고 재부팅됩니다. 

 

그리고 WSL 2를 사용하려면 Hyper-V도 함께 체크해야 합니다.

다른 설명을 보니 하이퍼바이저 플랫폼이나, 가상머신 플랫폼도 선택하라고 하는데, 저는 Hyper-v 나 가상머신 플랫폼 중 하나만 설치했는데 작동합니다. 

아마 셋중에 하나만 선택해도 작동을 하는 것 같습니다.

그럼 다음에는 실제로 사용할 리눅스를 선택합니다.

두가지 방법이 있는데, 하나는 윈도우 스토어에서 다운 받는 것이고, 다른 하나는 Windows PowerShell을 이용하는 것입니다. 

먼저 Windows PowerShell 을 이용한 방법입니다. 

Windows PowerShell 을 관리자 권한으로 실행합니다.

wsl --list --online 을 입력하면 설치할 수 있는 배포판 목록이 나옵니다. 

wsl --install -d Ubuntu-22.04 를 입력하면 설치됩니다. 

 

다음은 윈도우 스토어에서 설치하는 방법입니다. 

Microsoft Store -> ubuntu22.04 검색 ->다운로드

 저는 ubuntu 22.04 LTE 버전을 선택했지만, 다른 ubuntu 버전도 있고, debian이나 SUSE 같은 다른 종류의 리눅스들도 설치할 수 있습니다. 

다운로드가 끝나고 열기 버튼을 누르면 실행됩니다. 최초 실행시 설정이 진행됩니다. 

최초 실행시 username과 password를 입력받습니다. 

아이콘을 작업표시줄에 고정하면 편하게 실행할 수 있습니다. 

 

기본적으로 WSL 1로 설치되는데, WSL 2로 변경하고 싶다면 다음과 같이 진행합니다. 

windows PowerShell 를 관리자 권한으로 실행합니다. 
wsl --list --verbose 를 입력하면 현재 설치된 리눅스 버전을 확인할 수 있습니다. 

wsl --update 를 실행하여 wsl 을 업데이트 합니다. (빼먹으면 안되는 경우가 있습니다.)

wsl --set-version Ubuntu-22.04 2
를 입력하면 WSL 버전 2로 변경됩니다. 

실패했다면, windows 기능 켜기/끄기 에서  Hyper-V , 하이퍼바이저 플랫폼, 가상머신 플랫폼을 선택해서 설치해줍니다.

이래도 안되면 바이오스상에서 가상화 기술 관련 기능을 켜줘야 한다고 합니다. 

변경이 되었다면 wsl --list --verbose를 입력해서 변환이 제대로 되었는지 확인합니다.

 

다음 명령어를 사용하여 리눅스 패키지들을 최신 버전으로 업데이트합니다. 

$ sudo vi /etc/apt/sources.list
:%s/archive.ubuntu.com/ftp.daum.net/g
:wq
$ sudo apt update
$ sudo apt upgrade

 sudo 는 관리자 권한으로 실행하라는 명령어입니다.  apt 는 패키지 관리자 명령어입니다.

apt update 는 패키지 목록 업데이트, apt upgrade는 패키지 최신 버전 업데이트입니다. 

패키지 목록은 저장소에서 가져오는데, 저장소 서버는 여러 개가 있습니다. 기본적으로 설정된 저장소 서버는 좀 느린 편이라, 한국에 있는 서버로 지정하는 편이 빠릅니다.

/etc/apt/sources.list 파일에 저장소 주소들이 저장되어있습니다. 

vi 에디터로 이 파일을 열어서 저장소 주소들을 일괄 변환할 수 있습니다.  

vi 에디터에서 :%s 명령어를 사용하면, 문자열을 치환할 수 있습니다.

:wq 는 저장하고 종료하라는 명령어입니다. 

 

다음은 xwindows (GUI) 설정입니다.

리눅스에서도 gui가 필요한 경우는 많이 있습니다.

pymol 같은 GUI 프로그램을 사용하거나, gnuplot,  python의 matplotlib 등을 사용해서 그래프를 출력해보거나, 이미지 뷰어로 그림 파일을 열어볼 수도 있습니다. 

그런데, WSL만 설치해선 이런 GUI 프로그램의 출력이 화면으로 제대로 전달되지 않습니다. 

그래서 GUI 출력을 전달해주는 별도의 프로그램이 필요합니다. 

 

 

 Windows 10 Build 19044+ 또는 Windows 11 에서  WSL2를 사용하는 경우, xming같은 별도의 프로그램이 없어도 

gui를 사용할 수 있습니다.

만약 안된다면, powershell에서 wsl --update 를 입력하여 업데이트를 한 후 wsl을 다시 시작합니다. 

간단하게 gui가 동작하는지 확인해볼 수 있는 gui 프로그램은 gedit (편집기) 등이 있습니다. 

$ sudo apt-get install gedit
$ gedit

으로 설치하고 실행할 수 있습니다. 

이런 저런 이유로 gui가 작동하지 않는다면, xming 을 설치하여 사용할 수 있습니다. wsl 1과 wsl2에서 설정 방법이 조금 다릅니다. 

 

일단 .bashrc 파일에 다음 내용을 입력하고 터미널을 재시작합니다.

WSL2 의경우 

export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0

를 입력합니다.

 

WSL 버전 1에선

export DISPLAY=localhost:0.0

를 입력합니다. 

 

윈도우에서 linux 의 xwindows (GUI)를 사용하기 위해선 xming이라는 프로그램이 필요합니다. 

설치 및 설정 방법은 다음과 같습니다. 

https://sourceforge.net/projects/xming/

에서 xming 다운로드 및 설치

탐색기에서

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Xming  입력 ->

xming 우클릭 ->속성 클릭 -> 대상에 다음 항목 입력

"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow -ac

이 부분은 WSL2에서만 적어주면 되고, WSL1일 경우는 Xming 아이콘의 속성을 변경하지 않습니다. 

xming 을 실행합니다. 

xwindows가 정상적으로 출력되는지 확인합니다.

bash에서

$ sudo apt install gnuplot
$ gnuplot
gnuplot> plot x

라고 입력합니다. 

우측 그림이 뜬다면 정상적으로 설치된 것입니다.

gnuplot> exit 를 입력하여 gnuplot을 종료합니다.