====== 소개 ====== GNU/Linux 를 사용하는 방법은 여러가지가 있는데, 그 방법으로 - 새로운 저장장치에 윈도우 10 설치하듯이 클린설치 - 저장장치의 파티션(Partition) 공간을 분리하여 그 공간에 OS를 설치 - 가상머신(Virtual Machine)을 이용하여 메인 OS 위에 OS를 설치 - **윈도우 하위 시스템(Windows Subsystem for Linux, WSL)을 이용하여 컨테이너 형태로 OS를 설치** 등이 있으며, 여기서는 **4번을 이용하여 리눅스를 설치하는 방법**에 대해 다룬다. 문서에서 다루는 기준 환경은 다음과 같다. 메인 OS: Windows 10 2004 (20H1, Build 19041.264) WSL 버전: 2 (WSL2는 윈도우 10 2004에서 공식 지원되며 1과 차이가 있으니 참고) 설치 OS: Ubuntu 2004 Focal Fossa (Windows 스토어에 있는 것) WSL이란 'Widows Subsystem for Linux'의 앞글자만 딴 것으로, **윈도우 시스템에서 곧바로 리눅스를 실행**할 수 있도록 하는 매우 편리한 시스템이다. 장점은 다음과 같다. * 윈도우에서 재부팅이나, 또는 가상 프로그램 실행 없이 리눅스 실행 * 윈도우 탐색기에서 리눅스 읽기 쓰기, 또는 리눅스 환경에서 윈도우 폴더 읽기, 쓰기 모두 가능 * 리눅스 전용 포맷 (ext4 등) 없이 리눅스 프로그램 실행 가능 * 리눅스 컴파일러로 코드를 실행, 또는 전용 컴파일러, 프로그램 실행 가능 여기서 설치전에, WSL은 기본적으로 **CLI (Command Line Interface)**이므로 평소에 사용하는 **데스크톱 환경에서 실행되는 것이 아님**을 알아두자. ===== WSL2 사용설정 ===== WSL은 버전 1과 버전 2로 나뉘며 WSL2가 사용하기 편리하므로 WSL2를 기준으로 한다. WSL2 사용을 위해서는 아래의 요구사항이 있다. Windows 10 2004 (20H1, Build 19041.264) BIOS 설정에서 가상화(Virtualization) 활성화 요구사항이 만족되는 경우, **관리자 권한**으로 명령 프롬프트(cmd) 혹은 파워쉘 등을 실행하고, 간단히 아래의 명령어를 실행한다. wsl --install -d 이 때 에 원하는 OS와 버전을 선택하여 설치하면 된다. 명령어가 입력되는 OS목록은 wsl --list --online 을 입력하면 확인할 수 있다. 그 외의 OS 설치나 기타 설치방법에 대해서는 Microsoft에서 제공하는 문서를 참고하도록 하자. [[https://docs.microsoft.com/ko-kr/windows/wsl/install-win10|WSL 설치]] ===== 리눅스 기본 설정 ===== 링크 절차대로 밟은 뒤 원하는 리눅스 배포판 설치 후 처음 WSL 리눅스를 실행하면, Enter new UNIX password: 이라는 것이 뜰텐데, 당황하지 말고 WSL 상에서 패스워드를 만들어 주면 된다. 패스워드 입력시 터미널창에는 아무것도 뜨지 않는게 정상이며, 입력은 제대로 되고 있으니, 만약 패스워드를 잘못 입력했다면 모두 다 지우고 다시 입력하도록 하자. 원래 리눅스를 처음 설치할 때도 이러한 과정을 거친다. 이 과정에 대해서도 마이크로소프트에서 설명을 해주고 있으니 다음의 링크를 참조하도록 하자. [[https://docs.microsoft.com/ko-kr/windows/wsl/user-support|새 Linux 배포에 대한 사용자 계정 및 암호 만들기]] 새로운 암호를 입력했으면 리눅스에 접속한 것을 환영한다며 다음의 창이 깜박거리고 있을 것이다. 입력한ID@WSL명칭:~$ 이렇게 리눅스가 설치가 완료되었다. ==== GUI 환경 띄우기 ==== 윈도우 11에서는 'WSLg'라는 것을 통해서 아래의 작업없이 GUI 프로그램 실행을 지원한다. X11을 이용하는 아래의 방법에 비해 프로그램의 지연도(Latency)가 적은게 장점이다. WSLg를 이용하기 위해서는, 윈도우 11에서 설치했을 경우 추가적인 작업은 필요하지 않다. 그러나 윈도우 10에서 WSL을 이용하다가, 11로 업그레이드 한 경우에는 아래의 명령어를 cmd나 파워쉘에 입력한다. wsl --update 윈도우 10의 경우는 아래의 방법을 이용한다. === 서버 설정 (실제 화면을 띄우는 환경) === 먼저 WSL이 아닌 윈도우 10 에서 'X Windows'를 지원하는 프로그램의 설치가 필요하다. X Windows란 간단히 말하면 **우리에게 익숙한 데스크톱 환경을 띄워주는 보조장치**라고 생각하면 될 것 같다. 윈도우에서는 기본적으로 이런 프로그램이 없어서 따로 설치를 해주어야 한다. 대표적으로 'VcXsrv, Xming' 두 가지의 프로그램이 있으며 여기서는 **VcXsrv**로 설정해보자. VcXsrv는 sourceforge.net 사이트에서 제공하고 있고 [[https://sourceforge.net/projects/vcxsrv/ VcXsrv Windows X Server|이곳]]에서 다운로드 할 수 있다. 설치를 완료하고 VcXsrv를 실행하면 다음과 같이 설정하는 창이 뜬다. 나중에 따로 설정할 필요 없이 편의를 위해 한 번은 설정해줘야 한다. {{ :프로그래밍:linuxgui1.png?400 |}} 1. 원하는 창의 옵션을 선택한다. Display number는 기본적으로 -1로 지정되어 있는데, 특정 화면 번호에서만 출력되도록 하기 위해 0으로 설정한다. {{ :프로그래밍:linuxgui2.png?400 |}} 2. Start no Client를 선택한다. {{ :프로그래밍:linuxgui3.png?400 |}} 3. Additional parameters for VcXsrv에 -ac를 추가로 입력해준다. {{ :프로그래밍:linuxgui4.png?400 |}} 4. '마침'을 눌러 끝내거나, 컴퓨터 재시작시 자동 실행되도록 'Save configuration'버튼을 눌러 설정을 저장한다. 컴퓨터 재시작시 자동 실행이 되도록 하기 위해서 시작프로그램이 동작하는 폴더에 설정을 넣어주어야 한다. 시작프로그램 동작 폴더는 시작버튼 > 실행 > 'Shell:startup' 입력 으로 찾을 수 있다. 설정 저장의 이름은 크게 상관없다. 여기서는 'config.xlaunch'로 저장했다. 이렇게 하면 컴퓨터 재시작을 하더라도 자동으로 설정대로 X Windows가 실행하게 된다. === 클라이언트 설정 (WSL) === WSL 상에서도 약간의 설정이 필요하다. 바로 외부(서버)로 화면을 띄워줘야 하는 것이다. 다음의 명령어를 Bash에 입력한다. export DISPLAY="ServerIP":"DISPLAYNUM" 이때 ServerIP에 **서버**의 IP를 입력해주고, DISPLAYNUM에 VcXsrv에서 설정한 숫자를 넣어준다. 예를 들어 서버의 IP가 192.168.0.2이고, 앞에서 Display Num을 0으로 지정하였으므로, export DISPLAY=192.168.0.2:0 가 된다. 이 때 WSL에서 적용이 안 될수도 있는데, 이 때는 WSL의 bash에서 다음을 입력하여, IP를 알아낸다. cat /etc/resolv.conf # This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf: # [network] # generateResolvConf = false nameserver " " " "으로 된 곳에 WSL의 IP가 나타날 것이다. 이 IP를 위의 **Server IP**에 입력하자. 한편 WSL 실행마다 일일히 이렇게 입력해주는 것은 여간 귀찮은 일이다. 따라서 WSL을 실행할 때마다 적용되도록 편집기를 이용하여 다음의 파일 아래에 내용을 추가한다. nano ~/.bashrc ... export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0 이 때 IP와 DISPLAY NUMBER 대신 저 문장을 적는 것은, 접속환경에 따라 WSL의 IP도 변경되기 때문이다. 따라서 [[:쉘_스크립트]]의 매크로 기능을 이용하여, 매번 바뀌는 IP를 위의 문장을 입력함으로 자동으로 받아 들인다. bash설정을 완료하고 한 번 재부팅 하면 GUI 프로그램이 실행된다. GUI 실행을 하려면 '단순히 프로그램 이름을 입력'해주면 된다. 물론, 그 프로그램이 WSL 상에서 사전에 설치되어 있어야 실행 가능하다. ==== 음악 재생 설정 ==== WSL에서 실행했을 때 음악을 재생하는 일은 흔치 않겠지만, 필요한 경우도 있으니 알아보도록 하자. ==== 파일 탐색 ==== === WSL에서 윈도우 경로 === WSL상에 윈도우 경로를 보는 것은 간단하다. 예를 들어 C드라이브에 있는 파일을 보고자 할 때, WSL Bash에서 cd /mnt/C 를 입력하면 컴퓨터의 C드라이브에 있는 폴더와 파일을 조회할 수 있다. 또는 리눅스 GUI에서 파일 탐색을 하는 경우, GUI가 설정된 상태, 'Nautilus'가 설치된 상태에서 터미널에 'Nautilus'를 입력하고 위의 경로로 가면 동일하게 찾을 수 있다. === 윈도우에서 WSL 경로 === 윈도우에서 WSL에 있는 파일과 폴더를 직접 접속하는 것은 복잡하다. 다만 파일탐색기로 간접적으로 띄울 수는 있다. WSL2 기준으로, WSL Bash를 띄우고 현재 경로에서 explorer.exe . 를 입력하면 Bash의 현재 경로를 윈도우의 파일 탐색기로 띄워준다.